Tile vektor baru OpenStreetMap
(tech.marksblogg.com)- OpenStreetMap telah lama menyediakan tile raster statis berbasis PNG, tetapi kini mulai menghosting tile vektor dalam format Mapbox Vector Tiles (MVT), sehingga cara memanfaatkan peta menjadi lebih luas
- Tile vektor memungkinkan pengguna menyesuaikan gaya dan aturan rendering, mengekstrak informasi dari dalam tile, atau menerapkan fitur seperti pergantian bahasa label
- Situs web utama OSM masih menggunakan tile raster, tetapi tile vektor baru ini bisa langsung dilihat lewat demo web terpisah, QGIS, dan Leafmap
- Contoh tile z14 di dekat Burj Khalifa menunjukkan bahwa MVT 114KB diubah menjadi JSON 1.4MB, dan layer POI memuat 474 record beserta berbagai key layer tingkat atas
- Dengan
tiles2columns, tile vektor OSM untuk bounding box tertentu bisa diunduh lalu diubah menjadi GeoPackage atau Parquet, sehingga data OSM yang telah diperbarui mudah langsung dipakai untuk analisis berbasis file
Titik perubahan pada tile OSM
- Selama ini OpenStreetMap menyediakan peta sebagai tile raster PNG statis dengan aturan rendering dan gaya yang sudah ditentukan sebelumnya
- Hosting baru ini menyediakan Mapbox Vector Tiles, yaitu tile vektor format MVT
- Dengan tile vektor, pengguna akhir bisa mengontrol tampilan peta secara lebih langsung
- Menyesuaikan gaya dan aturan rendering
- Mengekstrak informasi dasar yang terkandung di tiap tile
- Menampilkan gambar peta yang lebih tajam
- Membuka kemungkinan pergantian bahasa label
- Situs web utama OSM masih tetap menyediakan tile raster
- Tile vektor baru ini bisa dilihat di demo web pada sebagian besar ponsel dan perangkat desktop
Alat yang digunakan dalam praktik
- Contoh ini memakai Python dan berbagai alat geospasial untuk memvisualisasikan dan menganalisis data OSM
- Alat instalasi dasar mencakup
jq,python3-pip,python3-virtualenv - Di lingkungan virtual Python dipasang paket berikut
leafmap[maplibre]mapbox_vector_tilemorecantilenotebook
- DuckDB digunakan bersama ekstensi berikut
- Untuk rendering peta digunakan QGIS 3.40
- QGIS adalah aplikasi desktop yang berjalan di Windows, macOS, dan Linux
- Jumlah eksekusi aplikasi oleh pengguna di seluruh dunia mencapai sekitar 15 juta kali per bulan
Membuka tile vektor di QGIS
- Di QGIS, tile vektor OSM bisa ditambahkan melalui
Layer Menu -> Add Layer -> Add Vector Tile Layer - Pada koneksi baru, URL style menggunakan nilai berikut
- URL sumber diarahkan ke endpoint MVT berikut
- Stylesheet bersifat opsional; tanpa itu pun QGIS tetap bisa merender data vektor dengan warna acak
- Di QGIS teridentifikasi masalah rendering ikon yang tidak sinkron
- Alat pemetaan lain merender sprite dari style tersebut dengan benar
- Di QGIS, ikon tampak seperti ikon hitam buram
- Isu terkait ada di QGIS #59492
Rendering dengan Leafmap dan Jupyter Notebook
- Folder konfigurasi Jupyter Notebook dibuat, kata sandi diatur, lalu server dijalankan di
127.0.0.1 - Notebook berjalan dengan hak akses pengguna yang mengeksekusinya dan bisa mengekspos direktori saat ini beserta file di bawahnya, sehingga dijalankan dari folder kosong
- Di Leafmap digunakan
leafmap.maplibregldan URL stylecolorful.jsonuntuk merender area sekitar Burj Khalifa - Dalam rendering Leafmap, ikon POI tampil dengan benar
Mengubah MVT menjadi data yang bisa dianalisis
- Sebagai contoh digunakan tile zoom level 14 di dekat Burj Khalifa
- Koordinat perkiraan
[55.27, 25.2]dimasukkan kemorecantile tiles 14untuk memperoleh koordinat tile[10707, 7006, 14] - Dengan nilai tersebut, tile berikut diunduh
- File MVT 114KB diubah menjadi file JSON 1.4MB menggunakan
mapbox_vector_tile.decodedan fungsi transformasi koordinat - Key tingkat atas pada tile hasil konversi mencakup layer-layer berikut
addressesbridgesbuildingsferrieslandoceanpier_linespier_polygonsplace_labelspoispublic_transportsitesstreet_labelsstreet_polygonsstreetsstreets_labels_pointswater_polygonswater_polygons_labels
Meninjau layer POI dengan DuckDB
- Layer
poisdiekstrak ke file JSON terpisah lalu dibuka untuk analisis denganST_READmilik DuckDB - POI yang memiliki nilai
cuisineterambil sebanyak 67 baris- Contoh
amenitymencakuprestaurant,fast_food,cafe - Contoh
cuisinemencakupfrench,greek,american,lebanese,coffee_shop,asian,persian,chicken,pizza
- Contoh
- Hasil
SUMMARIZEDuckDB menunjukkan tingkat keterisian data POI- Total record POI: 474
- Rasio null untuk
name,name_de,name_enmasing-masing 29.96% - Rasio null untuk
amenityadalah 31.86% - Rasio null untuk
cuisineadalah 85.86% - Rasio null untuk
geomadalah 0.00%
- Berdasarkan
approx_unique,namememiliki 258 nilai,name_de264,name_en245,amenity27, dancuisine39
Mengekstrak bounding box dengan tiles2columns
- osm_split sebelumnya adalah alat untuk mengubah file OSM PBF buatan GeoFabrik menjadi file GeoPackage bernama
- File PBF GeoFabrik bisa berisi data yang sudah tertinggal beberapa hari pada saat diproses
- Tile vektor OSM yang baru diperbarui segera setelah data dasarnya diedit
- tiles2columns adalah utilitas berbasis Python untuk mengunduh tile OSM pada bounding box tertentu lalu mengubahnya menjadi file GeoPackage atau Parquet
- Contoh bounding box di sekitar Dubai utara mengunduh 42 tile dan menghasilkan file GeoPackage berukuran beberapa MB
streets.gpkg: 6.8MBbuildings.gpkg: 6.2MBpois.gpkg: 1.4MBstreet_labels.gpkg: 1.4MBland.gpkg: 744KB
- File GeoPackage yang dihasilkan bisa langsung dimasukkan ke proyek QGIS
- File-file tersebut dipisahkan berdasarkan key yang digunakan dalam file OSM MVT, sehingga tiap layer mudah diidentifikasi, diberi style, dan dianalisis secara mandiri
- Atribut tiap geometri disimpan dalam kolom terpisah
- Contoh kueri pada
pois.gpkguntuk POI yang memiliki nama mengembalikan 6.329 baris, termasuk nama sepertiKiku,Fujiya Restaurant,Mövenpick Grand Al Bustan Dubai,McDonald's
2 komentar
Yayasan OpenStreetMap mulai resmi mengoperasikan tile peta vektor
Komentar Hacker News
Saya merasa tile vektor agak rumit. Saya belum menemukan kombinasi gaya dan skema pembuat tile yang bisa menampilkan tingkat detail seperti yang dulu disediakan tile raster
Dari tangkapan layar di artikel saja perbedaannya sudah jelas. Yang pertama memuat banyak informasi seperti titik minat semacam patung, toko, teater, gardu pandang, jalan yang ditandai sebagai jembatan, perbedaan warna rumput dan taman, ketebalan garis tiap jalan, lapangan olahraga, nama bangunan dan lingkungan, panah satu arah, sebagian bangunan, tangga, pohon, dan sebagainya
Yang kedua hanya punya kira-kira satu halte troli dan satu nama jalan, dan nama jalan itu pun dirender dengan keliru
Saya sudah banyak memakai gaya openmaptiles, gaya default protomaps, gaya mapbox, serta generator protomaps, openmaptiles, dan mapbox, tetapi tidak ada yang se-mudah dibaca sekaligus sedetail tile raster OSM
Gaya vektor memang halus saat zoom dan pan, serta mudah dimodifikasi, tetapi terasa kurang ketika ingin melihat data peta yang sebenarnya, bukan sekadar memakainya sebagai peta latar untuk data sendiri
Mungkin ini karena batasan sumber daya komputasi. Untuk menampilkan detail setingkat tile raster OSM, bisa jadi terlalu boros sumber daya baik di sisi klien maupun pembuatan tile
Saya berharap OpenStreetMap lebih mendekati peniruan gaya raster yang sudah ada, alih-alih menyediakan satu lagi peta latar berkontras rendah dan berdetail rendah, dan semoga rilis tile vektor publik ini memungkinkan peta vektor yang lebih detail
Mempertahankan infrastruktur pembuatan tile raster modern adalah pekerjaan yang cukup besar
Dulu saya lama mengembangkan gaya yang sangat detail untuk perencanaan perjalanan sepeda: https://stevebennett.me/2015/01/14/cycletour-org-a-better-ma...
Saya beberapa kali mencoba mereproduksinya dengan tile vektor, tetapi cukup sulit memasukkan detail yang memadai tanpa terkena batas ukuran, dan tile Mapbox bawaan jauh lebih kekurangan informasi yang saya perlukan
Namun tile vektor juga punya jalan pintas yang tidak dimiliki tile raster. Misalnya, berbagai layer bisa dinyalakan dan dimatikan, sementara label tetap dapat menyadari apa yang ada di bawahnya sehingga keterbacaan terjaga
Gayanya dibuat mendekati tampilan tile raster asli, tetapi versi vektornya menambahkan jauh lebih banyak fitur interaktif
Hal yang menarik dari sudut pandang desain gaya dan tile adalah kompromi performa menjadi sepenuhnya berbeda tergantung di mana dan bagaimana tile dirender. Ini memang jelas, tetapi juga memengaruhi apa yang mungkin secara visual di server dan klien
Meski begitu, peta OSM jauh lebih enak dipakai karena menampilkan banyak titik minat. Hanya dengan melihat peta, kita mendapat kesan tentang tempat sebenarnya; taman terlihat seperti taman, rumah sakit terlihat seperti rumah sakit
Google Maps mungkin tampak lebih baik dari sudut pandang desainer grafis. Namun untuk menentukan arah, biasanya kita perlu membandingkan bentuk jalan dan persimpangan. Di Google Maps, semuanya terlihat mirip
Hanya dengan mencobanya selama 2 menit, hilangnya detail langsung terlihat. Sangat disayangkan, tetapi saya optimistis suatu hari nanti seseorang akan menyelesaikannya
Menarik melihat komunitas open source membangun kemampuan tile peta vektor. Sekitar 2018, ketika mengerjakan GIS web, peta vektor streaming dari Google/Apple terasa seperti sihir, dan saya pasti ingin memakainya kalau biayanya terjangkau
Tidak lama kemudian, teknologi intinya muncul sebagai open source, bahkan solusi hosting gratis pun tersedia. Sekarang kita bisa memakai layer vektor yang bagus di peta Leaflet secara gratis. Terima kasih kepada open source
Saya tidak bermaksud mengeluhkan layanan peta gratis, dan saya paham layanannya bagus serta mereka lebih berfokus pada penyuntingan dan kepemilikan data. Infrastruktur penyediaan layanan memang sulit dan mahal
Namun saya penasaran seberapa besar dominasi MapBox selama beberapa tahun menghambat upaya-upaya lain
Saya penasaran apakah biaya operasional akan turun saat meng-hosting peta berbasis OSM. Alasannya, CPU yang dipakai untuk rendering tampaknya akan lebih sedikit, dan vektor juga sepertinya memakan lebih sedikit ruang penyimpanan serta bandwidth
Tidak, karena layer tile resmi OSM mendapat sponsor besar dari Fastly. Terakhir kali saya cek, Fastly €720k, sementara rendering AWS €40k
Ya, karena secara teknis memakai sumber daya lebih sedikit, sehingga beban pada AWS+Fastly juga lebih ringan, dan self-hosting pun menjadi lebih mudah
Dalam penilaian risiko yang dulu saya baca cukup mendetail, tertulis bahwa OSM “jika kehilangan sponsor Fastly, kemungkinan besar akan memutus semua akses pihak ketiga ke layer tile standar dan hanya mengoperasikan sedikit server Varnish”
Sejauh yang saya pahami, motivasi utama vektor lebih dekat ke peningkatan internasionalisasi, memungkinkan keputusan rendering di sisi klien, dan membangun ekosistem alat modern yang menghasilkan banyak manfaat lanjutan, bukan sekadar penghematan biaya
Pasti ada informasi yang lebih baru, dan materi terkait ada di 1 dan 2
Namun benar dalam arti sebagian pemrosesan bisa dialihkan ke klien, dan yang lebih penting, banyak keputusan styling bisa dibuat oleh klien. Tentu saja tidak semuanya bisa
Vector tile yang statis atau tidak sering diperbarui bisa dibuat dari data OSM dengan berbagai alat; yang saat ini paling populer adalah https://github.com/systemed/tilemaker dan https://github.com/onthegomap/planetiler
Hal yang benar-benar baru adalah berkat pekerjaan yang dibuat Paul untuk OSMF, vector tile kini bisa diperbarui seketika, yakni dalam hitungan menit. Ini penting sebagai mekanisme umpan balik bagi kontributor OSM, dan juga merupakan alasan utama OSMF saat ini mengoperasikan layanan raster tile
Saat ini masih terbuka batasan apa yang akan diterapkan pada penggunaan layanan vector tile. Seperti layanan raster tile, tujuannya bukan untuk bersaing dengan atau menggantikan layanan pihak ketiga, tetapi layanan vector tile berpotensi menjadi seperti itu
Misalnya https://protomaps.com/, https://openmaptiles.org/, https://versatiles.org/
Kompresi gzip juga sudah selesai di dalam tile
Masalah lain adalah di versi vektor, font Arab tidak dirender dengan benar. Teks dirender dari kiri ke kanan, bukan dari kanan ke kiri, dan huruf-hurufnya tampak terpisah, tidak tersambung
Jadi kerusakan yang terlihat itu adalah masalah pada style atau pada library yang merender konten secara lokal
Yang juga layak dilihat: OpenFreeMap — hosting vector tile OpenStreetMap gratis
https://openfreemap.org/
https://github.com/hyperknot/openfreemap?tab=readme-ov-file#...
Saya penasaran apakah ini juga berbasis stack teknologi vektor yang sama, atau pengembangan yang sepenuhnya terpisah
Bagian “gambar akan menjadi jauh lebih tajam dan bahasa label juga bisa diganti” tampaknya tidak akan berjalan sebaik yang diharapkan
Saat bahasa diubah, sama sekali tidak ada jaminan bahwa ukuran label akan tetap sama, dan ukuran label berinteraksi dengan tata letak peta serta ikut menentukan apa yang ditampilkan
Jika label membesar, label bisa menutupi terlalu banyak peta atau saling bertumpang tindih. Jika label mengecil, pengguna bisa heran mengapa kota yang sebelumnya dihilangkan karena keterbatasan ruang tidak muncul di ruang kosong yang baru terbentuk
Tampilkan saja semua nama jalan. Tidak apa-apa kalau jadi padat. Berdiri di persimpangan sambil melihat peta tanpa nama itu peta yang tidak berguna
Hal yang sama juga berlaku pada raster tile yang sudah dipakai selama bertahun-tahun
Ini perubahan baru yang sangat menyenangkan. Saya menantikan peta yang lebih enak dilihat
Namun bagian “my workstation” agak membuat heran. Kelihatannya tidak terlalu terkait dengan sisa tulisan, dan pekerjaan yang dibahas setelahnya juga tampaknya tidak membutuhkan spesifikasi sistem yang tinggi
Jika “gambar akan jauh lebih tajam dan pengalihan bahasa label juga akan dimungkinkan”, apakah itu berarti, misalnya, vektor bentuk kota—lebih tepatnya poligon—akan membawa metadata nama kota dalam semua bahasa yang didefinisikan?
Kegunaan fitur pengalihan bahasa tentu bergantung pada ada tidaknya terjemahan. Ini juga bisa mendorong para penyunting untuk menambahkan lebih banyak terjemahan nama tempat
Contoh seperti apa tampilannya bisa dilihat di https://americanamap.org. Itu memakai data OSM, tetapi tidak menargetkan hampir real-time seperti tile dalam tulisan ini
Semoga ini berarti OSMAnd dan OrganicMaps akhirnya akan bergabung untuk menghadirkan aplikasi peta bebas dan open source yang pamungkas
Tile vektor format MVT sama sekali tidak cocok untuk navigasi atau pencarian. Bukan berarti tidak bisa dipaksakan untuk dirangkai, tetapi itu cukup tidak masuk akal
Misalnya, OSMAnd memiliki banyak fitur pengguna tingkat lanjut yang sangat berguna bagi kontributor OSM, tetapi pada aplikasi untuk pengguna umum fitur-fitur itu mungkin hanya akan membuat antarmukanya berantakan
https://marble.kde.org/ sudah memiliki implementasi sendiri untuk streaming layer OSM vektor sejak 9 tahun lalu, dan saya sudah cukup lama menunggu hal serupa muncul di aplikasi peta OSM lainnya
Di aplikasi OSM Android, mengunduh peta ratusan megabyte dalam bongkahan besar per negara selalu menjadi masalah penyimpanan. Senang sekali akhirnya standar mulai terbentuk, dan saya berharap ini diadopsi serta disempurnakan di berbagai aplikasi. Kerja yang luar biasa