COMPAS에서 제공하는 데이터 파일은 geojson, csv, xlsx 형식으로 되어 있다.
COMPAS는 홈페이지>학습공간>공간분석 활용 탭에서 어느 정도 가이드라인을 제시하고 있다. 그대로 따라가 보기로 한다.
1. 데이터 다운받기
데이터는 크게 두 가지 방법으로 내려 받을 수 있다.
1) COMPAS 홈페이지에서 직접 다운 받기
전체 데이터를 데이터 탭에서 한꺼번에 받을 수 있다. 파일들을 COMPAS 주피터 노트북에 업로드했다.
데이터 파일명 목록을 파이썬 os모듈로 불러왔다.
단, 비공개 파일은 보안 상 문제로 직접 다운 받을 수 없다. 따라서 2)와 같이 geobandAPI를 활용해야 한다.
10.대전광역시_교통CCTV.geojson
11.대전광역시_동별_인구현황(2017~2019).csv
12.대전광역시_인구정보(총인구).geojson
13.대전광역시_인구정보(고령).geojson
14.대전광역시_인구정보(생산가능).geojson
15.대전광역시_인구정보(유소년).geojson
16.대전광역시_기상데이터(2017~2019).csv
17.대전광역시_교통링크(2018).geojson
18.대전광역시_교통노드(2018).geojson
23.대전광역시_도로명주소(건물).geojson
24.대전광역시_건물연면적_격자.geojson
25.대전광역시_법정경계(시군구).geojson
26.대전광역시_법정경계(읍면동).geojson
27.대전광역시_행정경계(읍면동).geojson
28.대전광역시_연속지적도.geojson
29.코드정의서.xlsx
3.대전광역시_신호등(보행등).geojson
30.대전광역시_차량등록현황_격자.geojson
31.대전시_중앙분리대.geojson
4.대전광역시_신호등(차량등).geojson
5.대전광역시_안전지대.geojson
6.대전광역시_횡단보도.geojson
7.대전광역시_도로속도표시.geojson
8.대전광역시_정차금지지대.geojson
9.대전광역시_교통안전표지.geojson
2) geoband API 사용하기
과제의 데이터 탭에서 불러오고자 하는 데이터의 소스코드를 복사한다.
GetCompasData('SBJ_2102_003', '1', '1.대전광역시_교통사고내역(2017~2019).csv')
를 복사했다.
COMPAS 주피터 노트북에서 geoband API를 이용해 불러온다. (그냥 주피터 노트북으로 하면 실행 안 됨!)
from geoband.API import *
GetCompasData('SBJ_2102_003', '2', '2.대전광역시_교통사고격자(2017~2019).geojson') # 복사한 소스코드 붙여넣기
주피터 홈에 해당 파일이 저장된다.
2. geojson 파일 불러오기
1) 홈페이지 가이드라인 버전
geopandas와 numpy를 import한 후, 보고 싶은 파일을 읽어온다.
import geopandas as gpd
import numpy as np
data1 = gpd.read_file('./data/26.대전광역시_법정경계(읍면동).geojson')
아래처럼 folium으로 지도를 불러온다.
import folium
center = (37.64726, 126.82557) # 좌표
zoom = 11
m = folium.Map(location = center,
zoom_start = zoom,
tiles = 'http://api.vworld.kr/req/wmts/1.0.0/YOUR_API_KEY/Base/{z}/{y}/{x}.png', # api 키값
attr = '대전시'
)
folium.GeoJson(data1).add_to(m)
m
그 결과 .. 아래와 같이 지도만 쏙 빠진 상태로 출력됐다. 다시 읽어보니 tiles
에 api 키 값을 입력하지 않았다.
api 키를 발급받기 위해 브이월드 vworld에 접속했다. 주소는 www.vworld.kr/dev/v4api.do
회원가입 후 api 키 발급을 신청했더니 바로 승인되어 키를 발급받을 수 있었다.
+) 발급받은 키로 진행했는데 노트북이 죽었다. 다른 방법이 필요할 것 같다.
2) 팀장 가이드라인
프로젝트 팀장의 가이드라인을 따라 재도전.
마찬가지로 folium을 사용한다.
import folium
m = folium.Map(location=[36.341007, 127.390858],zoom_start=12)
gdf = data1.to_crs(epsg='4326') # 좌표계 변환 함수 #GeoDataFrame
gdf_json = gdf.to_json() # json 문자열로 변환
folium.GeoJson(gdf_json, name='대전시').add_to(m)
m
시간도 오래 걸리고 버벅거린다. 두세 번 노트북을 죽이고 나서야 지도를 띄우는 데 성공했다.
tiles 매개변수를 빼서 OpenStreetMap 스타일이 자동 적용된 것으로 보인다.
'Make this notebook trusted to load map : File -> Trust Notebook' 라는 오류가 뜨면서 지도가 나타나지 않으면
노트북 오른쪽 상단의 'Not trusted'를 'Trusted'로 바꾼다.
3) geojson.io/ 사이트 이용하기
웹사이트를 이용해서 geojson 파일을 열어볼 수 있다.
geojson.io/ 에서 json 파일을 생성, 편집, 열람할 수 있다.
왼쪽 상단 Open > File
오른쪽 Table 탭을 눌러 데이터 프레임 형식으로 확인할 수 있다.
여전히 버벅이지만 열리긴 한다.
일단 데이터 톺아보는 작업은 이 사이트에서 진행할 것 같다.
'컴퓨터' 카테고리의 다른 글
[Windows] Ubuntu 로 CLX, cudf 사용하기 (0) | 2021.04.27 |
---|---|
Do it! 자료구조와 함께 배우는 알고리즘 입문 - 01 (0) | 2021.04.25 |