Shapefile属性操作之改

网友投稿 740 2022-11-12

Shapefile属性操作之改

Shapefile属性操作之改

文章目录

​​开篇​​​​案例介绍​​​​代码展示​​​​方法总结​​

作者:阿振

开篇

在上篇的《​​Shapfile属性操作之增​​​》和《​​Shapefile属性操作之删​​》中我们分别介绍了对于空间矢量数据属性的增加(CREATE)和删除(DELETE)操作,这篇我们聊聊数据的更新操作(UPDATE)。

案例介绍

这里我们要处理的数据是中国地图分省的矢量Shapefile,是一个面状数据。该数据有一个​​NAME​​​字段,给出了每个省的名称。这里我们要更新​​NAME​​字段,给直辖市名称后面添加“市”字,给自治区后面添加“自治区”字样,给特别行政区后面添加“特别行政区”字样,剩下的省名称后面添加“省”字。

思路是我们遍历图层中的每一个Feature要素,然后通过​​ogr.Feature​​​的​​SetField()​​方法更新属性值。

代码展示

Talk is cheap. Show me the code.

from osgeo import ogrogr.UseExceptions()# 打开一个Shapefileds: ogr.DataSource = ogr.Open('../data/省级行政区.shp', update=True)layer: ogr.Layer = ds.GetLayer()# 填充属性值for feature in layer: name: str = feature.GetField('NAME') if name in ('北京', '天津', '重庆', '上海'): name += '市' elif name in ('内蒙古', '广西', '宁夏', '新疆', '西藏'): name += '自治区' elif name in ('香港', '澳门'): name += '特别行政区' else: name += '省' feature.SetField('NAME', name) # 修改完了记得Set一下 layer.SetFeature(feature)# 关闭数据集ds = None

方法总结

首先,我们使用​​ogr.Open()​​​函数打开Shapefile数据,注意我们要设置​​update​​​参数为​​True​​,即允许GDAL更新我们的原始数据。使用​​GetLayer()​​​方法获取图层,然后使用for循环遍历图层中的要素。通过​​GetField()​​​方法获取需要修改的字段,然后通过​​SetField()​​方法修改字段。记得添加完属性值以后,需要使用​​SetFeature()​​​方法将当前​​feature​​​更新到涂层​​layer​​中去。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于SpringMVC在Controller层方法的参数解析详解
下一篇:QGIS中WKT转为可视化涂层
相关文章

 发表评论

暂时没有评论,来抢沙发吧~