2016-08-23 2 views
0

Je viens de commencer à travailler avec des shapefiles. J'ai un fichier de formes dans lequel chaque objet est un polygone. Je veux produire un nouveau shapefile dans lequel la géométrie de chaque polygone est remplacée par son centroïde. Il y a mon code.Élever ValueError lors de la production d'un fichier de forme avec des géopandas

Quand je lance le script que je retrouve avec raise ValueError("Geometry column cannot contain mutiple " ValueError: Geometry column cannot contain mutiple geometry types when writing to file. Je ne comprends pas ce qui est faux. De l'aide?

Répondre

1

Le problème est que vous remplissez le champ de géométrie avec une représentation sous forme de chaîne de la géométrie plutôt qu'un objet géométrique galbé.

Pas besoin de convertir en wkt. Votre boucle pourrait plutôt être:

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

Cependant, il n'y a pas besoin de boucle à travers le geodataframe du tout. Vous pouvez créer un nouveau centroïde shapefile comme suit:

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