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
댓글남기기