지도에 데이터를 표시하다

15459 단어 foliumPython
Folium는 데이터를 지도에 표시하는 프로그램 라이브러리다.
자바스크립트 거래요. Leaflet
인터랙티브 맵 처리를 지원하는 프로그램 라이브러리
Foruium은 이 프로그램 라이브러리를 정리한 후 Python에서 사용했다고 할 수 있습니다.

환경 구조


공식 페이지에서 해당 버전 등을 찾을 수 없음
pypi 카테고리의 느낌을 보면 2과와 3과가 모두 움직인다.
어느 정도 새로운 Python 환경에서 다음 명령을 실행합니다저는 Easiest입니다.
folium 설치
$ pip install folium
환경을 오염시키고 싶지 않으면 미리 venv 등으로 분리하세요.
나는 일회용 컨테이너를 세웠다.
FROM python:3.5.2-alpine

RUN pip install folium
부팅 컨테이너
# カレントディレクトリのDockerfileでfoliumイメージを作成
docker build -t folium . 

# foliumイメージからコンテナを起動
docker run -it -v /home/nanakenashi/workspace:/workspace folium /bin/sh
Foruium에서 내보낸 파일을 참조하기 위해
현재 디렉토리(workspace)를 컨테이너에 마운트합니다.

시험해 보다


QuickStart 당신의 보살핌을 받았습니다.
먼저 파이톤의 대화 케이스를 시작하고folium을 읽습니다.
미리 준비하다
$ python
Python 3.5.2 (default, Nov 17 2016, 22:46:45)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import folium

지도를 만들어 보세요.


한 손으로 좌표와 축척 레벨Map의 대상을 만들고 이름을 붙여 저장합니다.
수치가 클수록 줌 레벨이 높습니다.
지도 작성 및 저장
>>> map1 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> map1.save('/workspace/map1.html')
저장된 파일을 브라우저로 엽니다.
location에 지정된 좌표가 중심이잖아요.
중심에서 벗어난 호주를 보고 생각했지만, 전진했다.

기호를 달아보자.


태그 추가
>>> map2 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> folium.Marker([-31.253218, 146.921099], popup='New South Wales').add_to(map2)
<folium.map.Marker object at 0x7fc1c73bd048>
>>> map2.save('/workspace/map2.html')
저장된 맵 2.열어봐.

태그가 나타납니다.
참고로 클릭하면 popup 에서 지정한 문자열이 표시됩니다.

시각화된 것을 시험해 보다


다만 Quickstart에서도 다양한 시각화 옵션을 사용했습니다.
이번에는 원형 표지에 착안하여 무언가를 꺼내 보았다.
먼저 시도해 보세요.
원형 태그 표시
>>> map3 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)                                                                             
>>> folium.CircleMarker([-31.253218, 146.921099],
...                     radius=100000,
...                     popup='New South Wales',
...                     color='#3186cc',
...                     fill_color='#3186cc',
...                    ).add_to(map3)
<folium.features.CircleMarker object at 0x7fc1c7408a20>
>>> map3.save('/workspace/map3.html')
브라우저에서 맵3을 엽니다.
radius는 수량을 표시할 수 있을 것 같아서 우리는 일부 수치를 도시마다 반영하려고 한다.
여기까지 오면 상호작용이 필요 없으니까 스크립트를 써요.
각 도시에 태그 구성
import folium

map4 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)

# 各都市のデータを格納(本来はDBやcsvファイルから取得)
states = (
    {'lat': -35.473468, 'lon': 149.012368, 'value': 1, 'name': 'Australian Capital Territory'},
    {'lat': -31.253218, 'lon': 146.921099, 'value': 2, 'name': 'New South Wales'},
    {'lat': -19.491411, 'lon': 132.550960, 'value': 3, 'name': 'Northern Territory'},
    {'lat': -20.917574, 'lon': 142.702796, 'value': 4, 'name': 'Queensland'},
    {'lat': -30.000232, 'lon': 136.209155, 'value': 5, 'name': 'South Australia'},
    {'lat': -41.454520, 'lon': 145.970665, 'value': 6, 'name': 'Tasmania'},
    {'lat': -37.471308, 'lon': 144.785153, 'value': 7, 'name': 'Victoria'},
    {'lat': -27.672817, 'lon': 121.628310, 'value': 8, 'name': 'Western Australia'}
)

# 円の大きさをわかりやすくするための重み
WEIGHT = 100000

# 都市ごとにマーカーを追加(数が増えると辛いため、一括追加が今後の課題)
for state in states:
    folium.CircleMarker(
            [state['lat'], state['lon']],
            radius=state['value'] * WEIGHT,
            popup=state['name'],
            color='#3186cc',
            fill_color='#3186cc',
    ).add_to(map4)

map4.save('/workspace/map4.html')
위 스크립트를 실행한 후 맵4.브라우저에 > 을 표시합니다.

퀵스타트 콘텐츠일 뿐인데 뭔가 그런 느낌이 든다.
더욱 사용에 몰두하려면 Foolium 문서에 기입하십시오
위안Leaflet 문서도 함께 검사하는 것이 좋다.

총결산


GoogleMaps를 서비스로 제공하는 경우
조사와 내부 제공이라면 이런 도서관도 편리하다.
기사에서 표식을 배치하기 전에 표층의 가시화에 머물렀다
지도 자체의 편집과 다각형의 배치 등 다양한 표현을 할 수 있다.
Jupter Notebook을 사용하면 더 대화할 수 있는 분석을 할 수 있습니다
사용하신 분들은 꼭 해보세요.

좋은 웹페이지 즐겨찾기