Geopandas을 통해 두 지점간의 거리를 계산이 가능합니다. (단, 우리가 흔히 사용하는 넓이와 거리의 단위를 사용하는 것이 아니기때문에 다른 객체 안에서의 비교는 불가능합니다.)
2. Shape file 란 ?
통상 .shp, .shx, .dbf 3개의 파일을 합쳐서 shape file 이라고하며, GIS에서 사용하는 벡터 형식의 데이터입니다.
.shp : 점, 다각형 등의 지리정보 포함
.shx : 지리정보의 인덱스 정보 포함
.dbf : 지리정보의 속성 정보 포함
.shp 파일의 특이한 점은 나머지 .dbf, .shx 파일이 없으면 불러올 수 없다는 점입니다. 그 외에 .prj 해당 데이터가 활용하는 좌표계의 대한 정보가 포함되어있음
2. .shp 파일 읽기
2. 1. Python의 Geopandas 활용
Geopandas는 Pandas API을 기반으로 만들어져 있어, Pandas의 문법과 유사하게 구성되어 있습니다.
pandas 문법
csv 파일 읽기 : pd.read_csv("파일이름. csv")
excel 파일 읽기 : pd.read_excel("파일이름.xlsx")
geopandas 문법
shp 파일 읽기 : gpd.read_file("파일이름.shp")
# import libaray and packages
%matplotlib inline
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
# prepare and read data
F1 = './행정구역/EMD_20221119/emd.shp'
D1 = gpd.read_file(F1, encoding='cp949')
D1.head()
※ 주의 ※ .shp 파일 위치에 .dbf, .shx 파일도 모두 포함되어야합니다.
우선, 데이터를 표출해 봅시다
D1.convex_hull.plot(color='gray', edgecolor="w")
3. 전국 SHP 파일에서 서울만 표출하기
3.1. 데이터 전처리
법정동코드(EMD_CD) 활용하여 서울만 표출하기
법정동코드는 행정표준코드관리시스템에 조회가 가능합니다. 이를 이용해서 서울만 표출할 수 있습니다. 서울의 EMD_CD는 20,000,000 미만일 것을 확인할 수 있습니다.
# import libaray and packages
%matplotlib inline
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
# prepare and read data
F1 = './행정구역/EMD_20221119/emd.shp'
D1 = gpd.read_file(F1, encoding='cp949')
D1.convex_hull.plot(color='gray', edgecolor="w")
# extract seoul data from the orginal dataset
df1 = D1.astype({ 'EMD_CD' : 'int' })
seoul = df1[df1['EMD_CD']<20000000]
# draw the seoul map
ax = seoul.convex_hull.plot(color='pink', edgecolor="w")
ax.set_axis_off()
plt.show()