코딩코딩코딩

Convert the Geo DataFrame (csv) to shp file 본문

파이썬/GeoData

Convert the Geo DataFrame (csv) to shp file

hanshow113 2021. 4. 16. 00:37

geometry 형식의 컬럼을 가지고 있는 데이터프레임을 shp file로 바꿔서 저장하려고 할 때 발생할 수 있는 오류의 종류

ㄱ)  TypeError: Input must be valid geometry objects

ㄴ)  'Series' object has no attribute 'has_z' 에러 방지 

ㄷ)  WKTReadingError: Could not create geometry because of errors while reading input.

 

 

1. 먼저 csv 파일로 저장되어 있는 geo file 을 불러옴 (pd.read_csv)

2. geometry column의 개별값에 wkt.load()를 적용해주어야 함

    2-1. 위에 적어 둔 (ㄷ) 에러가 발생할 수 있는데, 이 때 에러 처리를 해줄 수 있도록 wkt_loads() 함수를 만들어서 사용

        . 에러 발생 시 None 값을 반환했으므로 dropna를 통해 지워줌

from shapely import wkt
import geopandas as gpd

def wkt_loads(x):
    try:
        return wkt.loads(x)
    except Exception:
        return None
        
geo_df['geometry'] = geo_df['geometry'].apply(wkt_loads)
geo_df.dropna(subset=['geometry'], inplace=True)

위 처리를 해주었으면 만들어진 geo_df를 바탕으로 geo DataFrame을 생성할 수 있음

 

3. (ㄱ) 에러는 geo_df_gpd = gpd.GeoDataFrame(geo_df) 명령어 수행 중 나타날 수 있음

 

4. (ㄴ) 에러는 shp 파일로 저장할 때 나타날 수 있음

    이를 방지해주기 위해서는 데이터프레임의 geometry 가 어떤 열인지 명시적으로 지정해줄 필요가 있음

geo_df_gpd.set_geometry(col='geometry', inplace=True)

* 추가로 shp 파일로 저장할 때는 컬럼명이 전부 영어로 되어있어야 함

 

5. shp file로 저장

geo_df_gpd.to_file("your_file_path\\file_name.shp")

shp file로 저장하면 shp 뿐만 아니라 dbp, prj, shx 파일 등이 같이 생기기 때문에 파일 경로를 폴더로 지정해주는 것이 좋음

Comments