版权声明:本文为博主原创文章,转载请注明原文出处!
作者:阿振
写作时间:2020-06-13
开篇
在上篇的《Shapfile属性操作之增》和《Shapefile属性操作之删》中我们分别介绍了对于空间矢量数据属性的增加(CREATE)和删除(DELETE)操作,这篇我们聊聊数据的更新操作(UPDATE)。
案例介绍
这里我们要处理的数据是中国地图分省的矢量Shapefile,是一个面状数据。该数据有一个NAME
字段,给出了每个省的名称。这里我们要更新NAME
字段,给直辖市名称后面添加“市”字,给自治区后面添加“自治区”字样,给特别行政区后面添加“特别行政区”字样,剩下的省名称后面添加“省”字。
思路是我们遍历图层中的每一个Feature要素,然后通过ogr.Feature
的SetField()
方法更新属性值。
代码展示
Talk is cheap. Show me the code.
1 | from osgeo import ogr |
方法总结
- 首先,我们使用
ogr.Open()
函数打开Shapefile数据,注意我们要设置update
参数为True
,即允许GDAL更新我们的原始数据。 - 使用
GetLayer()
方法获取图层,然后使用for循环遍历图层中的要素。通过GetField()
方法获取需要修改的字段,然后通过SetField()
方法修改字段。 - 记得添加完属性值以后,需要使用
SetFeature()
方法将当前feature
更新到涂层layer
中去。