지도에 정보를 표시하는 파이썬 패키지로 folium 만한 것이 없지만 때로는 folium이 제공하는 지도보다 단순한 형태가 필요한 때가 있습니다. 행정 구역의 경계 위치를 알려 주는 데이터는 South Korea administrative
division geodata (https://github.com/southkorea/southkorea-maps)
에서 구할 수 있습니다. 이 데이터로 단순한 지도를 파이썬에서 그릴려고 합니다.
파이썬에서 이용하기에 가장 좋은 지리 정보 형식은 geojson입니다. 각 점의 위도와 경도만 추출해서 함수 몇 개만 사용하면 바로 그림을 볼 수 있습니다.
여기에서 사용한 geojson 데이터는 https://raw.githubusercontent.com/southkorea/southkorea-maps/master/kostat/2018/json/skorea-provinces-2018-geo.json입니다. 이 데이터는 PC로 다운로드해서 저장해 놓습니다. 이 파일을 읽고 json.loads()를 호출하면 딕셔너리형 데이터로 변환할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import json with open("c:/Users/rcjcyoo/Downloads/skorea-provinces-2018-geo.json", encoding='utf-8') as json_file: jdata = json_file.read() geoJSON = json.loads(jdata) pts=[] for feature in geoJSON['features']: if feature['geometry']['type']=='Polygon': pts.extend(feature['geometry']['coordinates'][0]) pts.append([None, None]) elif feature['geometry']['type']=='MultiPolygon': for polyg in feature['geometry']['coordinates']: pts.extend(polyg[0]) pts.append([None, None]) else: raise ValueError("geometry type irrelevant for map") import matplotlib.pyplot as plt x = [i for i,j in pts] y = [j for i,j in pts] fig = plt.figure(figsize=(12, 12)) ax = fig.gca() ax.plot(x,y) plt.show() |
안녕하세요 혹시 위의 지도의 일부 지역만 선을 굵게 만들수도 있나요?
답글삭제