Я пытаюсь в течение последних 2 дней получить скрипт python для завершения , создавая шейп-файл из 289995 точек с атрибутами. Точками могут быть , но сценарий не заполняет атрибуты. Код работает правильно до тех пор, пока цикл: for j, p in enumerate(wCoords):
(см. Код ниже-2-й цикл) , когда через некоторое время произошла ошибка сегментации. Я попытался добавить оператор if, который останавливает процессы в определенных интервалах, чтобы увидеть, могу ли я найти местоположение в цикле цикла, когда это произойдет . Цикл цикла без ошибок до 1000 циклов, но не до 10000, когда он останавливается без обратной связи, кажется бесконечной петлей. Программа предназначена для создания точек дерева, а затем прикрепляет высоту дерева атрибутов точек. Код ниже:Ошибка сегментации (сбрасывание ядра) на SetField/SetFeature в ogr
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, чтобы дать вам больше информации, чем это. Пожалуйста, помогите. Жак