Python+OGR库学习(八):关于面矢量文件的一些小操作

对于OGR库对shp文件的基本读写没有问题,整理一些对geometry简单的小操作

代码功能

1、面矢量转线:主要理解面由ring构成,提取ring直接写入线矢量文件就OK(或者构建多线几何体,将所有ring都添加进去,完成后可以在arcmap中用拆分多部件要素拆分)
2、读取面矢量文件,输出四角多边形:获取图层四角范围,直接写入ring
3、输入面矢量,输出它的凸多边形:关键在于创建多面几何体,把每一个feature都写入,geomcolle.ConvexHull()构造凸多边形,写入图层
4、读取面矢量文件中,每个面的质心并保存为点矢量文件

代码及结果

1、面转线

##面转线方法2:一个面对应一个线要素
import ogr,osr,os
def pol2line(polyfn,linefn):
    driver = ogr.GetDriverByName('ESRI Shapefile')
    polyds = ogr.Open(polyfn,0)
    polyLayer = polyds.GetLayer()
    #创建输出文件
    if os.path.exists(linefn):
        driver.DeleteDataSource(linefn)
    lineds =driver.CreateDataSource(linefn)
    linelayer = lineds.CreateLayer(linefn,geom_type = ogr.wkbLineString)
    featuredefn = linelayer.GetLayerDefn()
    #获取ring到几何体
    #geomline = ogr.Geometry(ogr.wkbGeometryCollection)
    for feat in polyLayer:
        geom = feat.GetGeometryRef()
        ring = geom.GetGeometryRef(0)
        #geomcoll.AddGeometry(ring)
        outfeature = ogr.Feature(featuredefn)
        outfeature.SetGeometry(ring)
        linelayer.CreateFeature(outfeature)
        outfeature = None

if __name__ == '__main__':
    os.chdir(r'F:\Python+gdal\CookBook\data')
    pol2line('cache_towns.shp','poly2line_2.shp')

在这里插入图片描述
2、面转单多边形

##获取已有shp的四角范围ÿ
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值