Mapy wektorowe

Na razie mapy wektorowe to przyszłość OSM, ale już chyba dość pewna. Ograniczają nas głównie względy techniczne, ale zalety są oczywiste - warstwy POI, wybór języka napisów na mapie, łatwość forkowania i testowania zmian w stylach… Proponuję więc osobny wątek do dyskusji o nich, skoro wątek o dotychczasowym domyślnym stylu rastrowym jest używany do wszelkich dyskusji o tym, jak powinna wyglądać nasza mapa.

Na początek dwa edytory Mapbox GL (język stylów, który zastąpił CartoCSS) na wolnych licencjach:

Podrzucę jeszcze raz link do artykułu Paula Normana na temat serwowania kafelków wektorowych, bo tu bardzo pasuje:
http://www.paulnorman.ca/blog/2016/11/serving-vector-tiles/

Ja chciałem dla wprawki zrobić wizualizację area:highway, ale póki co zatrzymał mnie bug w Tilemakerze:
https://lists.openstreetmap.org/pipermail/dev/2016-December/029610.html
https://github.com/systemed/tilemaker/issues/63

co oznaczają “warstwy POI”? klikalność mapy, jak na Google Maps?

Warstwy, które można chować, np. sklepy, bary albo pomniki. Mogą być klikalne.

A co to są kafle czyli coś co się kojarzy ze zbiorem danych na konkretnym obszarze? Dlaczego mapa wektorowa nie może operować na długich liniach a musi ciąć na kafelki, które i tak nie są dostosowane rozmiarem do ekranów i te skraje widoczne są w połowie?

Dlaczego mapa rastrowa nie może przenieść POI do warstwy nakładanej na bitmapę tak aby gdy tych warstw będzie wiele można było sobie filtrować co mapa ma pokazać?

Sądziłem że część map rastrowych ma część POI usunięte z rastra ale ograniczono się tylko do najważniejszych a mapa wektorowa da możliwość filtrowania po każdym tagu zaś filtr będzie zbiorem kombinacji tagów dla tego rodzaju obiektu jaki chcemy z mapy usunąć.

Mapy wektorowe praktycznie wyparły z urządzeń mobilnych mapy rastrowe.
Zatem o co chodzi tymi kaflami ?
Chodzi o mapy wektorowe pod “Windowsa”?

https://en.wikipedia.org/wiki/Vector_tiles

Jest też dobra wiadomość, że Wikimedia wchodzi mocniej w mapki i ich oprogramowanie (Kartotherian) potrafi też serwować kafle wektorowe, o czym nie ma wzmianki w artykule Paula:

https://www.mediawiki.org/wiki/Maps
https://github.com/kartotherian/kartotherian/

Chyba już gdzieś już to wrzucałem, ale do tego wątku pasuje - przegląd rozwiązań wektorowych:

http://www.paulnorman.ca/blog/2016/11/serving-vector-tiles/

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: