在过去的两天里,我一直在尝试获取一个 python 脚本来完成创建一个带有属性的 289995 点的 shapefile。可以创建点,但脚本不会完成属性。代码正确运行,直到循环:(
for j, p in enumerate(wCoords):
见下面的代码 - 2nd循环)一段时间后发生分段错误。我试图添加一个 if 语句,该语句以特定的时间间隔停止进程,以查看是否可以在循环周期中找到它发生时的位置。循环无故障循环直到 1000 个循环,但直到 10,000 个循环才停止而没有反馈,看起来像一个无限循环。该程序是创建树点,然后将树的高度属性附加到这些点。代码如下:
def save_shp(wCoords):
print 'saving shapefile...'
driver = ogr.GetDriverByName('ESRI Shapefile')
if os.path.exists('tree_points.shp'):
driver.DeleteDataSource('tree_points.shp')
ds = driver.CreateDataSource('tree_points.shp')
layer = ds.CreateLayer('trees', geom_type=ogr.wkbPoint)
layerDefn = layer.GetLayerDefn()
point = ogr.Geometry(ogr.wkbPoint)
for i, p in enumerate(wCoords):
point.AddPoint(p[0],p[1])
featureIndex = i
feature = ogr.Feature(layerDefn)
feature.SetGeometry(point)
feature.SetFID(featureIndex)
layer.CreateFeature(feature)
fieldDefn = ogr.FieldDefn('tree_hts', ogr.OFTReal)
layer.CreateField(fieldDefn)
i = feature.GetFieldIndex('tree_hts')#???
for j, p in enumerate(wCoords):
feature_n = layer.GetFeature(j)
feature_n.SetField(i, p[2])#???
layer.SetFeature(feature_n)
try:
ds.Destroy()
except:
print 'still core dumping!'
我对 gdal/ogr 的了解不够多,无法为您提供更多信息。请帮忙。雅克