Creating beautiful maps with Python -번역

Python으로 아름다운지도 만들기

Python + OSMnx

Berlin map — Image by the author

저는 항상 도시지도를 좋아했고 몇 주 전에 나만의 예술적 버전을 만들기로 결정했습니다.인터넷 검색을 한 후이 놀라운 사실을 발견했습니다.지도 시간작성자프랭크 세발 로스.매혹적이고 편리한 튜토리얼이지만 더 자세하고 사실적인 청사진 맵을 선호합니다.그래서 나만의 버전을 만들기로 결정했습니다.이제 작은 파이썬 코드와 OpenStreetMap 데이터로 아름다운지도를 만드는 방법을 살펴 보겠습니다.

OSMnx 설치

우선, 우리는 Python 설치가 있습니다.나는 사용하는 것이 좋습니다콘다깔끔한 작업 공간을 확보하기위한 가상 환경 (venv).또한 OpenStreetMap에서 공간 데이터를 다운로드 할 수있는 OSMnx Python 패키지를 사용할 것입니다.Venv를 만들고 두 개의 Conda 명령을 작성하기 만하면 OSMnx를 설치할 수 있습니다.

conda 구성-채널 앞에 추가 conda-forge
conda create -n ox --strict-channel-priority osmnx

Downloading street networks

OSMnx를 성공적으로 설치 한 후 코딩을 시작할 수 있습니다.가장 먼저해야 할 일은 데이터를 다운로드하는 것입니다.데이터 다운로드는 다양한 방법으로 수행 할 수 있습니다. 가장 쉬운 방법 중 하나는graph_from_place ().

베를린 거리 네트워크 다운로드

graph_from_place ()여러 매개 변수가 있습니다.장소 OpenStreetMaps에서 데이터를 검색하는 데 사용할 쿼리입니다.보유 _ 모두다른 요소와 연결되어 있지 않더라도 우리에게 모든 거리를 줄 것입니다.단순화반환 된 그래프를 약간 정리하고network_type 얻을 거리 네트워크의 유형을 지정하십시오.

나는 검색을 찾고있다모두가능한 데이터를 사용하지만 드라이브 도로 만 다운로드 할 수도 있습니다.드라이브, 또는산책.

또 다른 가능성은graph_from_point () GPS 좌표를 지정할 수 있습니다.이 옵션은 일반적인 이름을 가진 장소와 같은 여러 경우에 더 편리하며 더 정확합니다.사용dist 그래프 중심의이 수 미터 내에있는 노드 만 유지할 수 있습니다.

마드리드 거리 네트워크 다운로드

또한 마드리드 나 베를린과 같은 더 큰 장소에서 데이터를 다운로드하는 경우 모든 정보를 검색하기 위해 조금 기다려야한다는 점을 고려해야합니다.

데이터 압축 풀기 및 채색

양자 모두graph_from_place ()graph_from_point ()다음과 같이 목록에 압축을 풀고 저장할 수있는 MultiDiGraph를 반환합니다.Frank Ceballos 튜토리얼.

이 지점에 도달하면 데이터를 반복하고 색상을 지정하기 만하면됩니다.색상을 지정하고 조정할 수 있습니다.선폭거리 기지길이.

그러나 특정 도로를 식별하고 다르게 색상을 지정할 수도 있습니다.

내 예에서는 다음 색상으로 만 colourMap.py Gist를 사용하고 있습니다.

색상 =“# a6a6a6”

색상 =“# 676767”

색상 =“# 454545”

색상 =“#bdbdbd”

색상 =“# d5d5d5”

색상 =“#ffff”

그러나 취향에 맞는 새로운지도를 만들기 위해 색상이나 조건을 자유롭게 변경하십시오.

지도 플로팅 및 저장

마지막으로,지도를 그리는 데 남은 한 가지만 있으면됩니다.먼저지도의 중심을 식별해야합니다.중심이 될 GPS 좌표를 선택하십시오.그런 다음 테두리와 배경색을 추가하고bgcolor.북쪽,남쪽,동쪽서쪽서쪽은 우리지도의 새로운 경계가 될 것입니다.이 좌표는 이러한 경계에서 이미지 기반을 자르고 더 큰지도를 원할 때 경계를 늘리면됩니다.다음을 사용하는 경우graph_from_point ()방법을 늘릴 필요가 있습니다dist당신의 필요에 따라 가치 기반.에 대한bgcolor청사진을 시뮬레이션하기 위해 파란색에서 진한 파란색 # 061529를 선택했지만 원하는대로 조정할 수 있습니다.

그런 다음지도를 플로팅하고 저장하기 만하면됩니다.나는 사용을 추천한다fig.tight_layout (pad = 0)서브 플롯이 잘 맞도록 플롯 매개 변수를 조정합니다.

결과

이 코드를 사용하여 다음 예제를 작성할 수 있지만 각 도시의 선 너비 또는 경계 제한과 같은 설정을 실행하는 것이 좋습니다.

마드리드 도시지도 — 포스터 크기

고려해야 할 한 가지 차이점graph_from_place ()graph_from_point ()그것은graph_from_point ()주변에서 거리 데이터를 얻습니다.dist설정합니다.간단한지도를 원하는지 더 자세한지도를 원하는지에 따라 서로 교환 할 수 있습니다.마드리드 도시지도는graph_from_place ()베를린 도시지도는graph_from_point ().

베를린 시티지도

그 위에 포스터 크기 이미지를 원할 수도 있습니다.이를 달성하는 한 가지 쉬운 방법은무화과내부 속성ox.plot_graph ().무화과너비, 높이를 인치 단위로 조정할 수 있습니다.나는 보통 같은 더 큰 크기를 선택했습니다figsize = (27,40).

보너스 : 물 추가

OpenStreetMap에는 강 및 호수 또는 수로와 같은 기타 천연 수원의 데이터도 있습니다.다시 OSmnx를 사용하여이 데이터를 다운로드 할 수 있습니다.

천연 수원 다운로드

이전과 같은 방식으로이 데이터를 반복하고 색상을 지정할 수 있습니다.이 경우 # 72b1b1 또는 # 5dc1b9와 같은 파란색을 선호합니다.

마지막으로 그림을 저장하면됩니다.이 경우에는 테두리를 사용하지 않습니다.bbox내부plot_graph.그것은 당신이 놀 수있는 또 다른 것입니다.

강을 성공적으로 다운로드 한 후 두 이미지를 결합하면됩니다.약간의 Gimp 또는 Photoshop이 트릭을 수행 할 것입니다. 동일한 두 이미지를 만들어야합니다.fig_size또는 경계 제한,bbox,보다 쉬운 보간을 위해.

베를린 천연 수원

마무리

내가 추가하고 싶은 것은 도시 이름, GPS 좌표 및 국가 이름이 포함 된 텍스트입니다.한 번 더 Gimp 또는 Photoshop이 트릭을 수행합니다.

또한 물을 추가하면 일부 공간을 채우거나 바닷물과 같은 다른 수원을 칠해야합니다.강의 선은 일정하지 않지만 페인트 통 도구를 사용하여 이러한 간격을 채울 수 있습니다.

코드 및 결론

이러한지도를 만드는 코드는 내GitHub.자유롭게 사용 하시고 결과를 보여주세요 !!이 게시물을 좋아하고 다시 감사드립니다.프랭크 세발 로스및 Medium 커뮤니티.또한 포스터를 인쇄하고 싶다면 작은 가게를 열었습니다.Etsy내지도 제작과 함께.

저를 읽어 주셔서 감사하고 지식을 공유하면 더 좋고 놀라운 결과를 얻을 수 있습니다 !!

Leave a Comment