Mapa offline

Cześć,

potrzebuje zrobić aplikację w pythonie, która będzie zawierać m.in interaktywną mapę. Z tego co się dowiedziałem mogę pobrać dane z openstreetmap w różnym formacie i przy ich pomocy stworzyć swoją. Aplikacja ma działać offline i nie musi aktualizować mapy. Dokładnie chodzi mi o mapę Polski.

Zamierzam to zrobić następująco:

  1. Pobrać dane z openstreetmap dotyczące polski. (z tej strony : http://download.geofabrik.de/europe.html z rozszerzeniem: .osm.pbf lub .osm.bz2 ).
  2. Zrenderować je/ stworzyć mapę z kafelków przy pomocy Mapnika i generate_tiles.py ( i tu nie wiem ponieważ potrzebuję zrenderować dane i wyświetlić interaktywną mapę w programie ale jedynie offline i nie wiem czy to dobry sposób)
  3. Otworzyć mapę w swoim programie. (Nie wiem w jaki sposób wyświetlić/przeglądać wygenerowane kafelki z Mapnika i generate_tiles.py offline ponieważ wszędzie piszą ludzie że do tego trzeba przeglądarki.)

Mam nadzieje że mój plan ma ręce i nogi. Prośba o pomoc

Czołem !

Trochę rozumiem Twój problem, gdyż borykam się z podobnym zadaniem a nie wiele wiem o OSM. Spróbuję coś napisać z pozycji początkującego.

Po pierwsze, jeżeli wiesz, że potrafisz prerenderować rastrowe tile za pomocą mapnika, ale nie wiesz jak wyświetlić je w pythonie, to być może pytanie zadane jest na niewłaściwym forum ? (podkreślam słowo może :slight_smile: ). Wyświetlanie atlasu rastrowych kafelków może być ćwieczeniem z OpenGL’a albo jakiejś pythonowej biblioteki GUI …

Teraz po drugie …
Pracuję nad projektem gdzie również mam do wyświetlenia offline’ową mapę Polski (lub innego kraju). Po długich namysłach i rozpoznaniu, porzuciłem początkowy plan napisania aplikacji w C++ lub pythonie i będę się starał zrobić GUI w przeglądarce a resztę w c++/python i komunikację przez websocket.
(dodatkowy bonus to multiplatformowość na której też mi zależy).

Obecnie testuję następujące rozwiążanie:
ekstrakt z GeoFabrik.de → pregenerowanie VectorTiles → wyświetlanie w przeglądarce z użyciem mapbox-gl-js

Tu semi-działający przykład https://www.youtube.com/watch?v=WsxVZEMNgIw&t=11s
VectorTile są serwowane z mojego dysku, ale czcionki jeszcze zasysam z internetu.
Do generowania kafli używam https://github.com/systemed/tilemaker

powodzenia !

@froszu
To jest naprawdę super! :smiley: Powiedz proszę, jakie masz doświadczenia z tilemakerem? Ja używałem go krótko po tym gdy wyszedł i miał trochę nienaprawionych problemów z gubieniem geometrii.

@pmazu
Kafelki wektorowe to raczej konieczność dla map offline, jeśli chcemy pokazać więcej niż obszar powiedzmy miasta. Rastry by były niepraktycznie duże.
Na jakiej platformie będziesz używał swojego programu w Pythonie? Desktop, smartfon…?

@RicoElectrico Dzięki !

tilemaker’a używam, bo nie znam alternatywy. Wszystkie inne rozwiązania wydają się być, uhh, przyciężkie (baza danych, etc.)

Trudno było zacząć, bo nie ma żadnych przykłądów albo tutoriala. Po wielu próbach i udało mi się “zakumać” jak go konfigurować i jakoś to teraz idzie, choć nadal metodą prób i błędów.

Problemów z gubieniem geometrii nie zauważyłem, ale i nie szukałem. Moje zastosowanie jest czysto prywatne - dużo mogę wybaczyć !
Kłopot jest natomiast z konwersją większych ekstraktów - przy obecnej konfiguracji brakuje mi (chyba) RAMu do przeprocesowania całej Polski - 24GiB to za mało ! Mam w pracy komputery 32GB, sprawdzę.

Może przed generowaniem wektorów da się wyciąć trochę zbędnych danych? Korzystam z https://wiki.openstreetmap.org/wiki/Osmium i całkiem sprawnie działa do filtrowania z grubsza nawet całej planety, a mam ledwie 8 GB.