Python如何使用osgeo.ogr.Geometry对象计算多边形周长

Python如何使用osgeo.ogr.Geometry对象计算多边形周长,python,geometry,computational-geometry,Python,Geometry,Computational Geometry,首先,我很抱歉发布这个简单的问题。我需要计算一定数量的Gemotric属性(面积、周长、圆度、长轴和短轴等)。我正在使用读取多边形的形状文件格式。我想问的是: 是否有使用osgeo.ogr.Geometry计算周长的方法 是否有用于计算多边形度量的模块构建 提前谢谢 import osgeo.gdal, ogr poly="C:\\\myshape.shp" shp = osgeo.ogr.Open(poly) layer = shp.GetLayer()

首先,我很抱歉发布这个简单的问题。我需要计算一定数量的Gemotric属性(面积、周长、圆度、长轴和短轴等)。我正在使用读取多边形的形状文件格式。我想问的是:

  • 是否有使用osgeo.ogr.Geometry计算周长的方法
  • 是否有用于计算多边形度量的模块构建
  • 提前谢谢

        import osgeo.gdal, ogr
        poly="C:\\\myshape.shp"
        shp = osgeo.ogr.Open(poly)
        layer = shp.GetLayer()
        # For every polygon
        for index in xrange(len(allFID)):
            feature = layer.GetFeature(index)
            # get "FID" (Feature ID)
            FID = str(feature.GetFID())
            geometry = feature.GetGeometryRef()
            # get the area
            Area = geometry.GetArea()
    

    我可能会在这一点上迟到,但我正在寻找解决同一问题的办法,而我碰巧在这一点上。我通过简单地找到几何体的边界,然后找到边界的长度来解决这个问题。下面是Python代码示例:

    perimeter = feat.GetGeometryRef().Boundary().Length()
    

    你解决这个问题了吗?我对这个解决方案也很感兴趣。(在我的例子中,我需要计算几何体的周长)。我使用几何体中的点计算周长,并使用from shapely.geometry importPolygon@hbobenicio在下面你可以看到我用def“edges_index”的解决方案。@hbobenicio我发布了一个新的优雅的解决方案来计算多边形的面积和周长!!!
    poly = [(0,10),(10,10),(10,0),(0,0)]
    
    
    def segments(poly):
            """A sequence of (x,y) numeric coordinates pairs """
            return zip(poly, poly[1:] + [poly[0]])
    
    def area(poly):
        """A sequence of (x,y) numeric coordinates pairs """
        return 0.5 * abs(sum(x0*y1 - x1*y0
            for ((x0, y0), (x1, y1)) in segments(poly)))
    
    def perimeter(poly):
        """A sequence of (x,y) numeric coordinates pairs """
        return abs(sum(math.hypot(x0-x1,y0-y1) for ((x0, y0), (x1, y1)) in segments(poly)))
    
    perimeter = feat.GetGeometryRef().Boundary().Length()