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

1586010002-jmsa.png

First of all, I apologize to post this easy question. I need to compute a certain number of gemotrical attributes (area, perimeters, Roundess, major and minor axis, etc). I am using GDAL/OGR to read a shapefile format of my polygon. What i wish to ask is:

is there a method to compute the perimeter using osgeo.ogr.Geometry?

is there a module build to compute metrics on polygon?

thanks in advance

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()

解决方案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)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值