1

最近、シェープファイルを使い始めました。各オブジェクトがポリゴンであるシェープファイルがあります。各ポリゴンのジオメトリが重心に置き換えられた新しいシェープファイルを作成したいと考えています。私のコードがあります。

import geopandas as gp
from shapely.wkt import loads as load_wkt

fname = '../data_raw/bg501c_starazagora.shp'
outfile = 'try.shp'
shp = gp.GeoDataFrame.from_file(fname)

centroids = list()
index = list()

df = gp.GeoDataFrame()

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

df['geometry'] = centroids
df['INDEX'] = index

gp.GeoDataFrame.to_file(df,outfile)

スクリプトを実行すると、最終raise ValueError("Geometry column cannot contain mutiple " ValueError: Geometry column cannot contain mutiple geometry types when writing to file. 的に何が問題なのか理解できません。何か助けはありますか?

4

1 に答える 1

1

問題は、形の整ったジオメトリ オブジェクトではなく、ジオメトリの文字列表現をジオメトリ フィールドに入力していることです。

wkt に変換する必要はありません。ループは次のようになります。

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

ただし、ジオデータフレームをループする必要はまったくありません。次のように、シェープファイル重心の新しいものを作成できます。

df=gp.GeoDataFrame(data=shp, geometry=shp['geometry'].centroid)
df.to_file(outfile)
于 2016-12-13T17:52:48.510 に答える