基于gdal的面矢量面积和中心点计算(python)
原创
wx62b9325dd56a7博主文章分类:GIS ©著作权
©著作权归作者所有:来自51CTO博客作者wx62b9325dd56a7的原创作品,请联系作者获取转载授权,否则将追究法律责任
from pathlib import Pathfrom osgeo import ogr, osrdef compute_some_metrics(inShpPath): '''计算面积''' driver = ogr.GetDriverByName("ESRI Shapefile") dataSource = driver.Open(inShpPath, 1) layer = dataSource.GetLayer() src_srs = layer.GetSpatialRef() tgt_srs = osr.SpatialReference() tgt_srs.ImportFromEPSG(32649) transform = osr.CoordinateTransformation(src_srs, tgt_srs) new_field1 = ogr.FieldDefn("Area", ogr.OFTReal) new_field1.SetWidth(32) new_field1.SetPrecision(16) layer.CreateField(new_field1) new_field2 = ogr.FieldDefn("X", ogr.OFTReal) new_field2.SetWidth(32) new_field2.SetPrecision(16) layer.CreateField(new_field2) new_field3 = ogr.FieldDefn("Y", ogr.OFTReal) new_field3.SetWidth(32) new_field3.SetPrecision(16) layer.CreateField(new_field3) for feature in layer: geom = feature.GetGeometryRef() geom2 = geom.Clone() geom2.Transform(transform) xmin, xmax, ymin, ymax = geom2.GetEnvelope() x = (xmin + xmax) / 2 y = (ymin + ymax) / 2 area_in_sq_m = geom2.GetArea() feature.SetField("Area", area_in_sq_m) layer.SetFeature(feature) feature.SetField("X", x) layer.SetFeature(feature) feature.SetField("Y", y) layer.SetFeature(feature) del dataSource
- 赞
- 收藏
- 评论
- *举报
下一篇:基于python脚本的遥感影像样例模板批量生产以及样本绘制
Original: https://blog.51cto.com/u_15699099/5421165
Author: wx62b9325dd56a7
Title: 基于gdal的面矢量面积和中心点计算(python)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517086/
转载文章受原作者版权保护。转载请注明原作者出处!