Prettymapp - Streamlit 웹앱에서 OpenStreetMap 데이터를 이용해 지도 생성
(github.com/chrieke)- Prettymapp은 OpenStreetMap 데이터로 지도를 만드는 웹앱이자 Python 패키지로, Streamlit 앱과 Python 코드 양쪽에서 지도 생성을 지원함
- prettymaps를 다시 작성한 프로젝트이며, 웹앱 인터페이스에 맞춘 설정과 속도에 초점을 둠
- 더 복잡한 설정 옵션을 줄이고 속도 개선, 코드 복잡도 감소, 단순화된 설정 인터페이스를 선택했으며, 부분적으로 테스트되고 Streamlit 웹앱 컴포넌트를 추가함
- 웹앱은 prettymapp.streamlit.app에서 바로 사용할 수 있고, 로컬에서는
uv sync --extra streamlit이후uv run streamlit run streamlit-prettymapp/app.py로 실행함 - Python 패키지는
pip install prettymapp으로 설치하며,get_aoi,get_osm_geometries,Plot,STYLES를 사용해 영역 정의, OSM 데이터 다운로드, 지도 렌더링, 이미지 저장을 수행함 - 기본 스타일은
Peach,Auburn,Citrus,Flannel4개이며,draw_settings와Plot인자의shape,contour_width등으로 스타일과 레이아웃을 조정함 get_osm_geometries_from_xml로 openstreetmap.org 등에서 내보낸 OSM XML 파일을 플로팅할 수 있고,LANDCOVER_CLASSES설정으로 표시할 OSM landcover 클래스 선택을 바꿈
댓글과 토론
Hacker News 의견들
- OSM 지도를 커스터마이즈하려는 사람에게는 OSM 데이터를 가져오는 Figma 플러그인이 유용함: https://www.figma.com/community/plugin/1251030017228239072/V...
- 예제 앱이 서비스 거부 상태가 된 김에, 한 번도 써본 적 없던 Streamlit에 직접 배포해 봤는데 프로젝트에는 배포 과정이 문서화되어 있지 않았지만 상위 문서만으로도 아주 쉬웠음
직접 시도해 볼 수 있음: https://wfcmzortl5n8cqhdowr6dm.streamlit.app/- 로컬에서 실행할 때는 다음처럼 했음
pip install -r requirements.txt
pip install -r requirements-dev.txt
pip install -r streamlit-prettymapp/requirements.txt
streamlit run streamlit-prettymapp/app.py
streamlit명령은 세 번째requirements.txt가 설치해 줌. Macau 지도는 제대로 나오지만Creating map... (may take up to a minute)에서 멈춰서, OSM API 키가 안 먹히는 건지 궁금했음
수정: OSM 요소가 꽤 많은 지역에서는 그냥 매우 느린 듯함. 실제로는 OSM을 기하 객체로 변환하는 단계에서 40만 개 객체를 변환하려다 멈춰 있음
수정 2: https://github.com/chrieke/prettymapp/issues/26 - 오래 버티진 못했네
- 여기도 트래픽 폭주로 죽었네 ;)
- 로컬에서 실행할 때는 다음처럼 했음
- 정말 훌륭함. API 문서가 있는지 궁금함. 도시/마을 이름 대신 GPS 위치를 중심으로 지도를 맞출 수 있으면 좋겠음
내 도시 이름을 쓰면 합리적인 기본값으로 도심을 쓰는데, 우리 동네는 거기서 꽤 멀어서 아주 많이 축소하지 않으면 지도에 나타나지 않음- 소스를 보면
get_aoi를 호출할 때 주소 대신 좌표를 쓸 수 있음
https://github.com/chrieke/prettymapp/blob/main/prettymapp/g...
- 소스를 보면
- 예전에도 여러 번 다뤄졌음: https://hn.algolia.com/?q=Prettymap
- README에 따르면 Prettymapp은 @marceloprates의 훌륭한 prettymaps 프로젝트를 다시 작성한 것에 기반함
- 어떤 라이선스로 배포되는지 명확히 아는 사람이 있나? 원본은 AGPL이었는데, 다시 작성한 버전이 더 허용적인 라이선스라면 꽤 괜찮을 듯함
- MIT로 보임: https://github.com/chrieke/prettymapp/blob/main/setup.py#L15...
- 원본은 AGPL이고 새 버전은 MIT인데, 이게 법적으로 가능한지 궁금함
이게 정말 재작성인지, 단순한 각색인지 확신이 안 듦. 라이선스를 바꿀 수 없을 수도 있으니 주의해야 함 - 그게 왜 꽤 괜찮은 일이지?
- Etsy 상점 생성기 같음
- 흥미로운 앱임. 예전에 없어지기 전 Ortelius에서 지도를 커스터마이즈하는 것도 정말 즐겼고, felt.com의 Felt도 좋았음
- MapTiler에는 괜찮은 SaaS 서비스가 있음. 우리는 MapLibre와 함께 그들의 벡터 지도를 쓰고 있음
이 분야에서 괜찮은 도구와 지도로 사업을 만들어 가려는 좋은 회사이고, 오픈소스에도 크게 기여함. 도구 여러 개가 오픈소스라 직접 호스팅도 가능함. 웹사이트에는 테마형 지도 예시도 괜찮게 있음 - 사람들이 바라던 어떤 개념이 다른 형태로 구현되는 걸 보면 재미있음
주류 함수형 프로그래밍은 OCaml/Haskell이 될 거라 기대했지만, 실제로는 함수형 성격을 가진 JavaScript 라이브러리인 React가 됐고, 즉시 모드 GUI는 imgui를 기대했지만 Gradio/Streamlit 같은 형태로 온 느낌임. 직접 써보진 않았지만 대충 보면 그렇게 느껴짐 - HN이 앱을 죽였네!