python3操作shp文件

#写入shp文件
def update_shp_sk(list_1, outlayer_jzx, featuredefn_jzx, dkbh, dkmc, dkmj, tfh, tdyt):

for i in list_1:
    ring = ogr.Geometry(ogr.wkbLinearRing)
    for ii in list_1[i]:
        ring.AddPoint(ii[0], ii[1])
        #ring.AddPoint(list_1[0][0], list_1[0][1])
    polygon = ogr.Geometry(ogr.wkbPolygon)
    polygon.AddGeometry(ring)
    feature = ogr.Feature(featuredefn_jzx)
    feature.SetGeometry(polygon)
    feature.SetField('地块编号', dkbh)
    feature.SetField('地块名称', dkmc)
    feature.SetField('地块面积', dkmj)
    feature.SetField('图幅号', tfh)
    feature.SetField('土地用途', tdyt)
    outlayer_jzx.CreateFeature(feature)
    feature.Destroy()
    del feature
    ring.Destroy()
    polygon.Destroy()

#创建shp文件
def insert_sk(path_shp, name_shp):
gdal.SetConfigOption(“SHAPE_ENCODING”, “GBK”)
driver = ogr.GetDriverByName(‘ESRI Shapefile’)
os.chdir(path_shp)
if os.path.exists(‘%s.shp’%path_shp):
driver.DeleteDataSource(‘%s.shp’%name_shp)
outds_jzx = driver.CreateDataSource(‘%s.shp’%name_shp)
# gdal.SetConfigOption(“GDAL_FILENAME_IS_UTF8”, “YES”)
if outds_jzx == None:
print(‘创建文件失败!’)
dst_osr = osr.SpatialReference()
dst_osr.ImportFromEPSG(4526) # 国家2000坐标39度
outlayer_jzx = outds_jzx.CreateLayer(name_shp, dst_osr, geom_type=ogr.wkbPolygon)
featuredefn_jzx = outlayer_jzx.GetLayerDefn()
fieldDefn = ogr.FieldDefn(‘地块编号’, ogr.OFTString)
fieldDefn.SetWidth(254)
outlayer_jzx.CreateField(fieldDefn)

fieldDefn = ogr.FieldDefn('地块名称', ogr.OFTString)
fieldDefn.SetWidth(254)
outlayer_jzx.CreateField(fieldDefn)

fieldDefn = ogr.FieldDefn('地块面积', ogr.OFTReal)
fieldDefn.SetWidth(16)
fieldDefn.SetPrecision(3)
outlayer_jzx.CreateField(fieldDefn)

fieldDefn = ogr.FieldDefn('图幅号', ogr.OFTString)
fieldDefn.SetWidth(254)
outlayer_jzx.CreateField(fieldDefn)

fieldDefn = ogr.FieldDefn('土地用途', ogr.OFTString)
fieldDefn.SetWidth(254)
outlayer_jzx.CreateField(fieldDefn)
return featuredefn_jzx, outds_jzx, outlayer_jzx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DK业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值