Mapy wektorowe

Był przegląd serwerów kafelków, ale potrzebne są też jakieś kafelki. Dane wektorowe jakieś są, ale nieaktualne (w tym wypadku z 3 lipca) i mają ograniczenia:

https://openmaptiles.com/downloads/tileset/osm/europe/poland/

ale dziś znalazłem kod do samodzielnego generowania takich kafelków, w dodatku w różnych formatach:

https://github.com/tilezen/vector-datasource#formats

Gdybyśmy stawiali eksperymentalny serwer kafelków dla Polski to by było jak znalazł. Ciekawe byłoby dla mnie zwłaszcza wypróbowanie wektorowego forka osm-carto, może nie trzeba by było generować ich na żądanie, tylko korzystać z przygotowanych wcześniej, ale jeszcze nie wgryzłem się w detale techniczne:

https://github.com/geofabrik/openstreetmap-carto-vector-tiles/blob/master/README_VECTOR_TILES.md

https://lists.openstreetmap.org/pipermail/dev/2017-October/030011.html

W PostGIS 2.4 mamy ST_AsMVT() czyli kafle wektorowe prosto z bazy! :smiley:

Też to przeczytałem, ale nie zrozumiałem - umiesz przybliżyć jak to praktycznie wygląda?

Tu masz jakieś źródło sprzed paru miesięcy:
https://github.com/openmaptiles/postserve

a tutaj dokumentację: https://postgis.net/docs/manual-dev/ST_AsMVT.html

Wychodzi na to, że atrybuty (klucz-wartość) podaje się jako JSONB.

Wychodzi na to, że ta funkcja może się sprawdzić do serwera z samymi nazwami w różnych językach (może być i prościej i szybciej), ale już niekoniecznie dla wektorowej wersji osm-carto:

[ https://carto.com/blog/inside/MVT-mapnik-vs-postgis/ ]

Jeszcze jeden skutek rozmowy z talajem na SotM PL - podobno Mapnik nie tylko jest w stanie produkować kafelki wektorowe (zdaje się że za pomocą https://www.npmjs.com/package/mapnik-vector-tile ), ale wydajność jest dobra nawet przy ~200 warstwach (na mapy.cz; osm-carto zawiera “tylko” ~80 warstw). To zachęcające, bo może ułatwiłoby migrację z mapek rastrowych do wektorowych. W dodatku to jest przyszłościowe rozwiązanie, ponieważ Seznam, dla którego Jiří pracuje, tyle zainwestowało w profesjonalną kartografię na bazie Mapnika, że nie porzucą tego dla jakiejś innej technologii i właśnie w ten sposób chcą przechodzić na wektory (podobno dane dla Czech i Słowacji mają skądinąd, a OSM wykorzystują dla reszty świata, ale to tylko taka ciekawostka).

Na początek wyobrażam sobie, że do standardowego wyświetlania kafelków rastrowych dokładnie z tych samych danych produkowałyby się równolegle kafelki wektorowe z nazwami - jeszcze tylko jakaś aplikacja do wyboru języka po stronie klienta i wyświetlanie tego jako nakładki na OSM.org (takiej jak uwagi, dane mapy czy ślady GPS). Chodzi mi o podobny efekt jak na OSM RU (tylko mniej toporny…):

http://openstreetmap.ru/#map=3/38.75/45.18&layer=MY

Jendrusk, co o tym myślisz? Ktoś tego próbował?

Na konferencji wyklarowało mi się, że danych mamy już dużo, ale wąskim gardłem staje się wykorzystanie ich nie tylko przez firmy. Dla typowego użytkownika oznacza to po prostu mapki. Dlatego zaczynam myśleć nad tym, żeby obok mapping party zacząć uczyć ludzi jak robić mapy, czyli styling party. Na początek tylko dla pojedynczych osób, żeby zobaczyć co jest ważne, a co nie i nabrać wprawy, ale docelowo - wcześniej czy później - będą w końcu maszyny z kafelkami wektorowymi, a do nich będzie można robić spersonalizowane style, i to dużo różnych.

Żeby do tego doszło, trzeba zaczynać od podstaw edukacji. Widzę w tej chwili 3 zasadnicze drogi:

  1. uMap, czyli tworzenie własnych nakładek tematycznych. Proste i efektowne, ale dość jednorazowe i nie integruje się z danymi - tylko dokładamy dodatkową warstwę. No, chyba że korzysta z Overpassa, ale to już trochę trudniej.

  2. QGIS, czyli mapki robione desktopowo, do wydruku albo zrobienia obrazka do wklejenia gdzieś. Trochę upierdliwe (import danych dla Polski to ~1,5h, pobieranie z Overpassa to też lekkie programowanie), ale uczymy się prawdziwego stylowania wszystkich elementów i już widzimy dlaczego nie działa apel, że “wystarczy przecież dodać ten tag”.

  3. Założyć konto na MapBoksie i nauczyć się korzystać z MapBox Studio: https://www.mapbox.com/mapbox-studio/ . To jest fajne, bo darmowe (limity są wystarczające pewnie: https://www.mapbox.com/pricing/ ), dane są już na miejscu (i to są dane OSM jak rozumiem), a w dodatku jest klikalny edytorek.

Oczywiście na przyszłość marzy mi się, żeby tworzenie spersonalizowanych stylów w ramach OSM było równie proste, ale na razie mamy bardziej zasadnicze problemy z rozwojem i oporem fundacji, więc się nie ma co szarpać.

Jakby ktoś chciał się zacząć bawić w wektory, to są codziennie aktualizowane kafelki w formacie MVT jako pliki MBTiles:

http://osmlab.github.io/osm-qa-tiles/

Są dla całej planety (24 GB), ale też dla poszczególnych krajów (Polska ma niecały 1 GB).

Pobrałem Polskę i udało mi się wyświetlić mapę ale jest tam tylko jeden zoom (12), powiększanie i pomniejszanie odpada :stuck_out_tongue:

{"scheme":"tms","basename":"poland.mbtiles","id":"18042018173604.planet","filesize":"35426836480","name":"poland.mbtiles","description":"poland.mbtiles","version":"2","minzoom":12,"maxzoom":12,"center":[19.072265625,51.98250490493645,12],"bounds":[14.150390625,49.03786794532644,23.994140625,54.92714186454645],"type":"overlay","format":"pbf","vector_layers":[{"id":"osm","description":"","minzoom":12,"maxzoom":12,"fields":{}}],"legend":null,"tiles":["http://localhost:4000/\\{z}\\{x}\\{y}.pbf"],"tilejson":"2.2.0"}

Kocio, danych wcale nie mamy za dużo. Owszem drogi są w porządku ale w adresach jest tyle dziur, że gdy próbuję coś znaleźć nawet nie próbuję OSM. A że (przynajmniej w niektórych krajach) adresy są powiązane z budynkami to potrzebne są i one.

Co do potrzeb użytkowników - OSM przede wszystkim potrzebuje bardzo dobrej domyślnej mapy, a nie bazy danych, kursów jak renderować swoją mapę lub jak edytować dane. Gdy OSM będzie powszechnie używane to edytorzy się sami. W obecnej chwili naszym de-facto interfacem do OSM jest Maps.Me, bo po prostu dobrze działa.

Jestem jak najbardziej za kaflami wektorowymi ale ze względu na problemy z Web-GL renderowanymi na żywo po stronie serwera i serwowanymi jak zwykłe kafle rasterowe. Można też nadal używać kafli rasterowych i, jak wspomniał rowers2, nakładać przezroczyste kafle z nazwami w różnych językach, liniami kolejowymi/autobusowymi, ścieżkami rowerowymi, punktami. Może to nie jest tak efektowne jak kafle wektorowe ale działa.

To są QA tiles, więc jak nazwa wskazuje służą do analiz ku kontroli jakości mapy.
Niezbyt się nadają do renderu.
Ja się nie wgłębiałem w ten temat, bo niestety słabo się nadają do pewnych analiz - dostarczony do ich przetwarzania program nie potrafi ładować kafelków sąsiadujących z przetwarzanym, żeby mieć margines-bufor wokół tegoż.

Nie mówiłem w sensie, że nie potrzebujemy więcej, tylko że jest ich już tak dużo, że niepraktycznie się z nich korzysta. Narodowe forki osm-carto zwykle (poza najsilniejszymi społecznościami jak np. Niemcy czy Francuzi) robią mapkę tylko swojego kraju. Podejrzewam, że właśnie dlatego, że cały świat to już wymaga lepszego sprzętu. Zwykły użytkownik tym bardziej nie ma z nich pożytku (poza oglądaniem na gotowych mapkach).

Mógłbyś rozwinąć co to dla ciebie znaczy? Najlepiej w odpowiednim wątku:

https://forum.openstreetmap.org/viewtopic.php?id=26176

Podpowiem tylko, że jakiś ogólny zarys jak to obecnie rozumiemy jest tu:

https://github.com/gravitystorm/openstreetmap-carto/blob/master/CARTOGRAPHY.md

Czekam kto to zrobi i wdroży, bo też bym poszedł na takie częściowe rozwiązanie.

Cześć Kocio (@All)

Przepraszam, że nie odezwałem się wywołany do tablicy - raz że rzadko tu zaglądam, dwa że powoli zaczynam robić bokami…

Przyznam się że nawet całego wątku nie przeczytałem.

Postawiłem kiedyś taki konstrukt ale klient sobie zażyczył duże zmiany w stylu i zawartości kafelków - Jak tłukłem do głowy, że ilość danych w kaflach poszczególnych leveli jest specjalnie tak dobrana żeby złapać kompromis między szczegółowością mapy a wydajnością zarówno renderowania jak i generowania samych kafli to mnie nikt nie słuchał po cichu komentując, że się mi nie chce robić… Jak już zrobiłem i na podstawie pierwszej doby oszacowałem, że na 4c./8t 32G Ram HDD Tier5 to się będzie generować 130 dni to się rozmyślili…

Ja się opierałem na openmaptiles i TileServer Klokantecha.

Rozwiązań jest wiele i trzeba by je dobrze przejrzeć zanim się na coś zdecydujemy(cie) - to fundamentalna decyzja która - jeśli będzie podjęta na szybko - będzie nas kopać w dupę jeszcze długo.

W razie W polecam do kontaktu Skype - jedrus305 :slight_smile:

Dobre wieści (choć jeszcze wczesne): wygląda na to, że są szanse na migrację OSM Carto na kafelki wektorowe.

Andy radzi, żeby zrobić to stopniowo, tzn. żeby zacząć od wewnętrznego generowania kafelków rastrowych na serwerze z tych kafelków wektorowych. To pewnie wygląda na niepotrzebne kombinowanie, ale dzięki temu nie trzeba od razu zajmować się aplikacją po stronie klienta, a przy okazji jest zgodność wsteczna dla tych, którzy korzystają z tego podkładu albo mają po prostu słabsze maszyny. W zasadzie to rozwiązanie już jest w użyciu, bo Andy stosuje je od 4 lat w warstwie rowerowej i transportu publicznego:

https://www.youtube.com/watch?v=NoLJHgqDCzc

Co ważne, Andy jest aktywny w dziale technicznym OSMF (Operations Working Group), więc są szanse, że to nie będzie tylko sztuka dla sztuki, tylko że naprawdę ten nowy styl po prostu zastąpi OSM Carto - tak jak wcześniej OSM Carto zastąpiło styl z Mapnik XML.

Jest też szansa, że włączy się w to Rory McCann, który 2 lata temu zrobił fork wektorowy (czyli jeszcze za czasów serii v3.x):

https://2016.stateofthemap.org/2016/converting-a-regular-carto-project-to-vector-tiles-osmcarto-case-study/
https://github.com/geofabrik/openstreetmap-carto-vector-tiles

Być może nie warto będzie go odświeżać do serii v4.x, tylko zrobić nowy fork, ale na razie najważniejsze, że te dwie osoby plus Paul Norman to już 3 ekspertów od kafelków wektorowych, którzy mogą sensownie wspomóc ten proces. Zaczynam być dobrej myśli, że wreszcie zaczniemy używać współczesnych technologii, które dają więcej możliwości i dobrze świadczą o projekcie, zamiast siedzieć w średniowecznych kafelkach rastrowych.

I tak warto mieć polski serwer na nasze projekty, ale ta migracja mogłaby się odbywać na serwerach fundacji, co dużo by uprościło technicznie i organizacyjnie.

Taka ciekawostka jak sobie postawić lokalny serwer mapek wektorowych za pomocą gotowych kafelków:

https://blog.klokantech.com/2018/04/maps-with-docker.html

Jak ktoś ma Linuksa, to powinno być łatwo, bo to w Dockerze. Dla innych systemów Docker też może już być, ale jeśli ma się starsze Windows czy macOS, to zawsze pozostaje kombinacja VirtualBox i instalacja np. Ubuntu w środku, a dalej już tak samo.

Interesujące są też uwagi jak oni te kafelki produkują.

Żeby dłużej nie zwlekać, otworzyłem bilecik w sprawie migracji osm-carto na kafelki wektorowe:

https://github.com/gravitystorm/openstreetmap-carto/issues/3201

Dokładnie dockerów klokantecha używałem - jak piszesz nie jest szczególnie trudno (na początek)… Grzebanie w stylu to już inna akcja, zwłaszcza jak chcesz dodatkowo zmienić poziomy wyświetlania. Sam proces przygotowania danych do kafelków jest dość złożony, bo dla kafli niskich zoomleveli wszystkie dane na nich widoczne (woda, ląd, główne granice administracyjne) są uproszczane w bazie więc np. dla granic państw jest tam zdublowany (chyba) 5 razy zestaw danych, każdy dla innego docelowego ZL i każdy z innym stopniem generalizacji…

Magia… mimo, że dość przejrzyście napisana to sam stopień złożoności implikuje to, że trzeba się dobrze skupić żeby zacząć w tym grzebać :slight_smile:

Tak powoli zaczynam zbierać konkretne rozwiązania, bo idea jest już jasna.

Andy napisał, że jego style jadą na jakichś własnych wynalazkach bazujących na tilelive (https://github.com/mapbox/tilelive) - domyślam się, że nie na wolnej licencji. Rory z kolei mówił, że w Geofabrik próbowali tilelive-copy (czyli pewnie to samo), ale działało powoli, więc napisał kawałek własnego softu (https://github.com/rory/tileigi), który jest o wiele szybszy, za to ma jeszcze różne błędy. Czy ktoś może potestować trochę te narzędzia?

Dobre wieści - Paul Norman ma już jakiś kod, który może posłużyć do migracji:

https://www.openstreetmap.org/user/pnorman/diary/43814
https://github.com/pnorman/bolder

Nie korzysta z Mapnika, nie wiem jak z wydajnością i nie wiem jak trudno będzie przenieść to, co mamy w osm-carto, do tego stylu, ale dopiero czekam na podsumowanie jego rozmowy z Rorym.

Jak się to odpali, to wygląda tak (dane Liechtensteinu):

I nawet nie wygląda, żeby psuło geometrię: