過去 2 日間、python スクリプトを取得して、属性を持つ 289995 ポイントのシェープファイルの作成を完了しようとしました。ポイントは作成できますが、スクリプトは属性を完成しません。コードは、ループまで正しく実行されます:
for j, p in enumerate(wCoords):
(2 番目のループの下のコードを参照) しばらくすると、セグメンテーション違反が発生します。特定の間隔でプロセスを停止する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 については、これ以上の情報を提供できるほど詳しくありません。助けてください。ジャック