2016-08-23 2 views
0

최근에 셰이프 파일 작업을 시작했습니다. 각 개체가 다각형 인 shapefile이 있습니다. 각 다각형의 기하 구조가 중심으로 대체되는 새로운 shapefile을 생성하려고합니다. 내 코드가있다.geopandas를 사용하여 모양 파일을 만들 때 ValueError 발생

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. 와 끝까지 스크립트를 실행하면 내가 잘못이 무엇인지 이해할 수 없습니다. 어떤 도움이 필요합니까?

답변

1

매끄러운 지오메트리 오브젝트가 아닌 지오메트리의 문자열 표현으로 지오메트리 필드를 채우는 것이 문제입니다.

wkt로 변환 할 필요가 없습니다. 루프는 다음과 같을 수 있습니다.

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

그러나 지형 데이터 프레임을 전혀 순환 할 필요가 없습니다. 다음과 같이 shapefile 중계의 새 파일을 만들 수 있습니다.

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