shape 파일을 csv 파일로 변환하는 방법

geopandas 모듈을 이용하면 shp 파일을 csv 파일로 쉽게 변환할 수 있다.


모듈

geopandas를 불러온다.

import gc
import glob
import geopandas as gpd


SHP 파일 경로

zip으로 압축된 shp파일도 geopandas로 불러올 수 있다.

# SHAPE 파일 경로 리스트
file_path = glob.glob("./data/*.zip")[0]


GeoDataFrame 생성

GeoDataFrame으로 shape file을 불러온다.

# Shape 파일을 GeoDataFrame으로 불러오기
gdf = gpd.GeoDataFrame.from_file(file_path, encoding='CP949')


경위도 좌표계 설정

원하는 좌표계로 변환할 수 있다.

# 경위도 좌표계 설정
gdf = gdf.to_crs({"init": "epsg:4326"})
# 데이터 정보
gdf.info()
<class 'geopandas.geodataframe.GeoDataFrame'>
RangeIndex: 204002 entries, 0 to 204001
Data columns (total 6 columns):
 #   Column      Non-Null Count   Dtype   
---  ------      --------------   -----   
 0   PNU         204002 non-null  object  
 1   JIBUN       204002 non-null  object  
 2   BCHK        204002 non-null  object  
 3   SGG_OID     204002 non-null  int64   
 4   COL_ADM_SE  204002 non-null  object  
 5   geometry    204002 non-null  geometry
dtypes: geometry(1), int64(1), object(4)
memory usage: 9.3+ MB
# 데이터 예시
gdf.tail()
PNU JIBUN BCHK SGG_OID COL_ADM_SE geometry
203997 3611034024102430002 243-2 전 1 1407947 36110 POLYGON ((127.28899 36.43090, 127.28907 36.430...
203998 3611032023105540005 554-5 대 1 1407950 36110 POLYGON ((127.33577 36.53582, 127.33580 36.535...
203999 3611032023105540006 554-6 도 1 1407951 36110 POLYGON ((127.33603 36.53600, 127.33598 36.535...
204000 3611033025109040007 904-7 도 1 1407953 36110 POLYGON ((127.38469 36.53066, 127.38476 36.530...
204001 3611036030103220007 322-7 천 1 1032467 36110 POLYGON ((127.26633 36.57483, 127.26630 36.574...


CSV 컨버팅

to_csv 메서드를 이용해서 저장하면 끝이다.

# CSV로 저장할 파일명
new_file_name = "sample.csv"

# GeoDataFrame을 CSV 파일로 저장
gdf.to_csv(f"./data/{new_file_name}", encoding='utf8', index=False)

# 메모리 정리
del gdf
gc.collect()
0

댓글남기기