在python中使用ogr包向shapefile添加字段时,程序在最后一步“SetFeature”崩溃。之前已经报告过此问题,但我无法根据其他帖子解决此问题。
下面是一个示例代码,其中将虚拟值“100”添加为shapefile中所有要素的新字段,然后是我尝试过的相关问题和事项。
知道我能尝试什么吗?谢谢你的时间。
SDB
*编辑:此代码与我编写的模块之间存在冲突。它很难重现,所以我正在努力解决:在使用下面的代码后导入烦恼模块。谢谢大家的见解和时间!
# Load shapefile
shapefile = ogr.Open(shapefile_path, 1)
layer = shapefile.GetLayer()
layer_defn = layer.GetLayerDefn()
new_field_defn = ogr.FieldDefn("New_field", ogr.OFTReal)
new_field_defn.SetWidth(50)
new_field_defn.SetPrecision(11)
layer.CreateField(new_field_defn)
# Walk through shapefile, setting new field for each feature
for feature in layer :
geometry = feature.GetGeometryRef()
band_value = 100
feature.SetField("New_field",np.double(band_value))
# This is the line that crashes the program
layer.SetFeature(feature)
shapefile.Destroy()
我相信我的代码遵循以下示例:http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/#.V_0YtPnhCUk
我想我已经避免了相关的Gotcha http://trac.osgeo.org/gdal/wiki/PythonGotchas#PythonbindingsdonotraiseexceptionsunlessyouexplicitlycallUseExceptions