Polskie kafelki

To są obrazki? Są jakieś powody przeciwko użyciu mapy wektorowej? Nie wiem jak na froncie, ale MBTiles’y generujesz z protobufów regionów przy użyciu openmaptiles.

O których obrazkach mówisz, w sensie rastra? Tak, są rastrowe, bo przejście na wersję wektorową jest zdecydowanie niebanalne przy tej ilości elementów. MBTiles albo jakiekolwiek inne wektorowe są szalenie ubogie i nie wiadomo jak wyglądałaby wydajność. Na razie jest albo styl na bazie osm-carto, ale na własnościowym silniku ArcGIS (czyli wystarczyłoby “tylko” napisać otwarty silnik zgodny z ArcGIS…), albo zaczątki portu na wersję wektorową, ale nawet na niskich poziomach niekompletne i od roku nieruszane:

https://esri.maps.arcgis.com/apps/View/index.html?appid=d6b18a2e774c4959ba855f6ac90952a2

https://www.paulnorman.ca/blog/2020/05/openstreetmap-cartographic/
https://pnorman.dev.openstreetmap.org/cartographic/mapbox-gl.html#4/50/-120

W jakim sensie niebanalne? Wygenerowanie obrazków brzmi trudniej od wygenerowania wektorowych opisów geometrii. A przesyłanie ich tym bardziej.
W jakim sensie ubogie? Te opisy wektorowe są jakąś uproszczoną wersją geometrii na bazie których są tworzone? (tego nie wiem i bym na to nie wpadł). Z tego co widzę to ta twoja mapka też nie robi żadnego czary mary, a bugów nie brakuje. MBTiles to nic innego jak plik bazy SQLite zawierający głównie skompresowane gzipem protobufy kafelek*. Każda z nich składa się z warstw które akurat tak się złoży że sobie wygenerujesz pierdzieląc się z kodem SQL i YAML (albo domyślnych), a każda warstwa składa się z feature’ów otagowanych na zasadzie par key=value. Np. masz sobie w warstwie landcover feature z polygonem otagowanym jako class=grass i na tej zasadzie to co renderuje mapę wie że ma wygenerować tam trawkę. To czy coś nałoży tam teksturkę, czy wygeneruje tysiące trójkątów poruszających się na wietrze w blasku ray tracingu to już nie kwestia MBTiles’ów :wink: To wszystko jest dość proste, ale nie wiem dlaczego ubogie. Natomiast nie mam pojęcia na jakim poziomie jest leaflet i style, bo ja dalej podążam swoją ścieżką.

MBTiles z obecnego protobufa Polski (1.4GB) z domyślnymi warstwami dla max zooma 16 (tylko po co aż 16? domyślnie max jest 14 albo 15 i na tym poziomie używane są już oryginalne geometrie) ważyłby pewnie rzędu kilku GB i generował się 2-3h na frajerze ze starym SSD, albo do pół godziny na najnowszym wyjadaczu na Ryzenie Zen 3 i SSD M2 PCI Gen 4 :wink: A te obrazki ile ważą?

Generalnie w ekosystemie OSM panuje rozpierdziel i trzeba wychodzić z założenia że musisz sobie sam zrobić, a z tego co widzę to Carto stoi bo Norman się obraził że Mapbox zmienił licencję xD openmaptiles domyślnie też nie działa “najlepiej” i ciężko się doczekać nowych narzędzi… Czekam na release z nowszym postgisem i GEOSem, a od miesiąca jakby ktoś umarł :wink:

https://github.com/mapbox/vector-tile-spec/blob/master/2.1/vector_tile.proto

Natomiast jeśli jest tu ktoś kto ogarnia o co chodzi z prawem patentowym to będę bardzo wdzięczy jak mi wytłumaczy po co Mapbox patentuje rozwiązania i jakie są tego konsekwencje? Czy jeśli implementuje się swoje rozwiązania związane z mapami to trzeba używać “innych sposobów”?
https://patents.google.com/?assignee=Mapbox%2c+Inc

Niebanalne technicznie ze względu na ilość detali w osm-carto, nie że sam proces jest niezrozumiały. Kafelki wektorowe zawierają tylko wybraną część danych z bazy i w pewnym sensie same są taką bazą, ale okrojoną i zorientowaną pod wyświetlanie. Czy protobuf Polski zawiera bramy, paczkomaty, brody, biura, strefy postoju przy autostradach itp.? Zobacz ile elementów zawiera legenda: https://wiki.openstreetmap.org/wiki/Standard_tile_layer/Key

Dopóki mówimy o poziomie szczegółowości w stylu GMaps, to są jak najbardziej takie style oparte na OSM i nawet mają do tego wygodny edytor ( https://openmaptiles.org/docs/style/maputnik/ ). Ale to tak jak przewieźć parę pudełek (rower czy auto osobowe raz i po wszystkim) a przewozić węgiel z kopalni - niby chodzi po prostu o transport, ale potrzeba zupełnie innej infrastruktury i skali.

Patrz tutaj. To zapewne też z MBTiles’ów, czy dowolnego podobnego roziązania. Niestety wysokości budynków w OSM są póki co słabej jakości i budki na działkach potrafią być wyższe od bloków, ale jeśli nie szkoda Ci życia, to bez problemu możesz coś takiego sobie generować na podstawie kafelek wektorowych.
https://demo.f4map.com/#lat=52.2308819&lon=21.0076329&zoom=18

Piszesz o takich paczkomatach? https://www.openstreetmap.org/node/3891556127
Jeśli w imposm3 zmapujesz sobie punkty otagowane jako amenity=vending_machine i umieścisz to w odpowiedniej warstwie to będziesz miał tak szczegółowo jak sobie tylko chcesz. Radze też zmapować polygony i wyciągnąc z nich centroid, bo na pewno znajdzie się ktoś kto otaguje budynek :wink:

A co to ma za silnik, mogę go użyć na wolnej licencji?

Oczywiście, że się da, przecież ArcGIS pokazał, że się da zrobić klon osm-carto na ich silniku, ale niestety jest zamknięty i to nas nie urządza. Jako użytkownik możesz spokojnie korzystać z tego ich stylu, ale jako twórca jesteś całkowicie zależny od nich.

Projekt jest na BSD i chyba wszystko czego używa ma wolne licencje. Mapy na stronie OSM używają czegoś innego? To taki zlepek narzędzi od klokana, mapboxa, maptilera i innych który operuje na postgisie. Jak z wyświetlaniem na stronie to musisz się zorientować, ale jeśli im to działa i po coś to robią od dłuższego czasu, to raczej się da.

https://github.com/openmaptiles/openmaptiles/

Nie pytałem o kafelki (kafelki to format danych a nie silnik), tylko o silnik F4. Jeśli ktoś uważa, że to proste, to niech robi w ten czy inny sposób i niech pokaże efekt. Zwłaszcza jak łatwo przeportować bieżący styl osm-carto na wektory bez grubszego ręcznego dłubania. Na razie są prostsze rzeczy do zrobienia i na nich chcę się teraz skupić.

F4 to tylko przykład tego co da się renderować na bazie wektorów. Właśnie sobie uświadomiłem że openstreetmap.org w 2021 wysyła rastry i jestem w szoku. Styl powinien być nakładany po stronie klienta, więc jeśli leaflet tego nie ogarnia, to widocznie póki co się nie da.

To raczej dobrze, bo się szybciej ładuje mapa. Wektorowa się bardzo długo ładuje i ma kanciaste kształty.

To wszystko zależy… Zobacz sobie tempo działania klona od ArcGIS-a, nie laguje i wygląda bardzo podobnie jak oryginał. Tak samo z kantami - styl rowerowy i transportu są robione do postaci wektorów i następnie rastrowane (co oczywiście nie dodaje ani nie zmniejsza kantów - każdy wektor jest ostatecznie jakoś rastrowany, bo ekran to matryca punktów). To zależy jak zredukujesz dokładność - wtedy mniej miejsca zajmują te kafelki, ale wcześniej będzie widać kanty.

Wektory to taki czy inny zapis geometrii, tych samych z jakich generowane są rastry. To jakby przeniesienie ich generowania do elementu który wyświetla mapy. Nie ma większego powodu dla którego miałyby być bardziej kanciaste.

Wolniejsze raczej muszą być, bo generują obrazek który mają wyświetlić, ale powinno być to niezauważalnie wolniej dla użytkownika. Tu jednak faktycznie dużo zależy - od dostępnych na frontach webowych narzędzi i tego jak się przyłoży programista to tworzący…

Natomiast raczej nie byłoby Ci smutno gdyby pojawiły się elementy UI do zmiany stylu i filtrowania zawartości :wink:

Po wygenerowaniu wyglądają nawet lepiej niż rastrowe, jednak podczas ładowania są kanciaste.

A czy nie jest tak, że one są generowane na komputerze użytkownika w JavaScripcie? To dużo dłużej trwa niż ściągnięcie paru obrazków po 40 kB.

Na polskich kafelkach zostało właśnie wdrożone wyświetlanie area:highway=footway i area:highway=pedestrian - dzięki, kasmar00! :smiley:

Pojawił się jakiś problem z aktualizowaniem bazy, potwornie długo to trwa i jeszcze nie wiem co się stało ani jak to poprawić, więc na razie dane na polskich kafelkach mogą być nieświeże.

Dopiero niedawno odkryłem ten wielce przydatny ficzer i muszę przyznać, że bardzo dobrze używa mi się tego jako narzędzia QA do sprawdzenia, czy nie pominąłem przy rysowaniu jakiegoś fragmentu chodnika. Brakuje mi jednak analogicznego renderingu dla area:cycleway - na przykład w jakimś lekko czerwonym odcieniu - dla odróżnienia i w zgodzie z rzeczywistością. Dałoby się, Panie Kierowniku? :wink:
BTW. W sumie tak sobie myślę, że w stylu Carto aż się prosi zamienić ze sobą kolory dla footway i cycleway. Chyba w większości krajów, jeśli DDR mają jakiś inny kolor, to jest to właśnie czerwony.

No jasne, jeśli tylko ktoś się zajmie kodem, to chętnie pomogę i wdrożę. Na początek może być pomocne porównanie z kodem dodającym obszary piesze:

https://github.com/openstreetmap-polska/fractal/pull/3/files

A czy jest szansa na dodanie czerwonawych obszarów area:highway=cycleway?

Tak, dopiero co na to odpowiedziałem… :slight_smile: Kto chciałby spróbować?