过去两天我一直试图让python脚本完成
使用属性创建289995点的shapefile。要点可以
已创建,但脚本未完成属性。代码运行
正确到循环:
for j, p in enumerate(wCoords):
(参见下面的代码 - 第二个循环)
过了一会儿,分段故障发生了。
我试图添加一个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给你的信息比这更多。 请帮忙。 雅克
答案 0 :(得分:1)
一些快速提示:
ds.CreateLayer('tree_points', ogr.wkbPoint)
layer.CreateField(fieldDefn)
通话在for循环中,您需要创建一个新的几何对象,并指向索引0:
point = ogr.Geometry(ogr.wkbPoint)
point.SetPoint_2D(0, p[0], p[1])
ds.Destroy()
;使用ds = None