2016-08-23 8 views
0

Я только недавно начал работать с шейп-файлами. У меня есть шейп-файл, в котором каждый объект является многоугольником. Я хочу создать новый шейп-файл, в котором геометрия каждого полигона заменяется его центроидом. Есть мой код.Повысить ValueError при создании файла формы с помощью геоданных

Когда я запускаю сценарий, я в конечном итоге с raise ValueError("Geometry column cannot contain mutiple " ValueError: Geometry column cannot contain mutiple geometry types when writing to file. я не могу понять, что это неправильно. Любая помощь?

ответ

1

Проблема в том, что вы заполняете поле геометрии строковым представлением геометрии, а не стройным геометрическим объектом.

Не нужно преобразовывать в wkt. Ваш цикл может быть вместо этого:

for i,r in shp.iterrows(): 
    index.append(i) 
    centroid = r['geometry'].centroid 
    centroids.append(centroid) 

Однако, нет никакой необходимости в петле через geodataframe вообще. Вы можете создать новый центр центрифуги шейп-файла следующим образом:

df=gp.GeoDataFrame(data=shp, geometry=shp['geometry'].centroid) 
df.to_file(outfile)