- MapLibre Tile (MLT) adalah format vector tile generasi berikutnya yang baru untuk menggantikan Mapbox Vector Tile (MVT) yang ada, dirancang untuk meningkatkan efisiensi pemrosesan data geospasial berskala besar
- Menawarkan rasio kompresi hingga 6x lebih baik dan performa decoding cepat berbasis SIMD, sehingga meningkatkan efisiensi ruang penyimpanan, latensi, dan cache
- Ke depannya dapat diperluas dengan target dukungan untuk koordinat 3D (elevasi), pemrosesan berbasis GPU, tipe data majemuk, linear referencing, dan m-values
- Saat ini bisa langsung digunakan di MapLibre GL JS dan MapLibre Native, serta didukung oleh demo tile, server konversi, dan pembuatan melalui Planetiler
- Format ini dikembangkan lewat kolaborasi komunitas open source, perusahaan, dan akademisi, dan diselesaikan dengan dukungan Microsoft dan AWS
Pengenalan MapLibre Tile
-
MapLibre Tile (MLT) adalah format penerus [Mapbox Vector Tile (MVT)] yang dirancang ulang dari nol untuk menangani volume data geospasial yang terus meningkat dan format sumber generasi berikutnya yang makin kompleks
- Dirancang agar dapat memanfaatkan performa hardware modern dan API grafis terbaru, sehingga memungkinkan pemrosesan dan rendering basemap 2D dan 2.5D berskala planet dengan performa tinggi
- Implementasi saat ini setara secara fungsional dengan MVT, tetapi ditingkatkan dari sisi performa dan efisiensi
-
Peningkatan teknis utama
- Peningkatan rasio kompresi: hingga 6x lebih baik pada tile berukuran besar, dengan menerapkan layout berorientasi kolom dan recursive lightweight encoding
- Peningkatan performa decoding: struktur encoding yang cepat dan ringan, serta dapat dipadukan dengan instruksi SIMD/vectorization
- Hasilnya adalah latensi lebih rendah, biaya penyimpanan dan transmisi lebih kecil, serta pemanfaatan cache yang lebih baik
Potensi perluasan ke depan
-
MLT dirancang dengan mempertimbangkan dukungan untuk fitur masa depan berikut
- Peningkatan dukungan koordinat 3D (elevasi)
- Optimasi format penyimpanan dan memori untuk pemrosesan CPU dan GPU yang efisien
- Dukungan linear referencing dan m-values agar kompatibel dengan format generasi berikutnya seperti Overture Maps (GeoParquet)
- Dukungan untuk tipe majemuk seperti nested attributes, list, dan map
-
Arah pengembangan MLT akan ditentukan oleh kebutuhan komunitas, dan berbagai ide perluasan serta kontribusi sangat disambut
- Materi terkait yang tersedia mencakup slide presentasi FOSS4G 2024 oleh Markus Tremmel, kuliah di YouTube, dan paper ACM
Ketersediaan dan integrasi
-
MLT sudah bisa langsung digunakan sekarang
- Baik MapLibre GL JS maupun MapLibre Native mendukung sumber MLT
- Dapat digunakan dengan menetapkan nilai
mltpada propertiencodingdi style JSON
-
Cara mencoba dan mengembangkan
- Gunakan gaya demo tile berbasis MLT
- Ubah style MVT yang ada menjadi MLT secara real-time melalui Encoding server
- Dukungan pembuatan MLT direncanakan hadir di versi berikutnya dari Planetiler
- Status integrasi dapat dicek di halaman status implementasi resmi
-
Untuk berbagi pengalaman menggunakan MLT, pengguna dianjurkan ikut serta di channel Slack
#maplibre-tile-formatatau issue/diskusi GitHub
Ucapan terima kasih dan kolaborasi
- MLT dikembangkan melalui kolaborasi lintas akademisi, open source, dan perusahaan selama bertahun-tahun
- Markus Tremmel mencetuskan format ini, dan Yuri Astrakhan memimpin proyeknya
- Tim Sylvester menangani implementasi C++, sementara Harel Mazor, Benedikt Vogl, dan Niklas Greindl menangani implementasi JavaScript
- Microsoft dan AWS mendanai pengembangan
Catatan
- Berbeda dengan MVT, MLT tidak mendukung layer yang tipe nilainya di dalam kolom dapat berbeda untuk tiap feature
1 komentar
Komentar Hacker News
Disarankan untuk menghadiri presentasi MapLibre yang diadakan di geospatial devroom FOSDEM pada hari Sabtu
Tautan jadwal acara
Saya sempat melihat-lihat halaman contohnya, lalu membandingkan contoh menampilkan peta dengan MLT dengan contoh menampilkan peta yang lama
Dari log konsol, terlihat ada peningkatan efisiensi kompresi sekitar 10%. Cukup mengesankan
Format MLT sudah memiliki beragam encoding ringan bawaan, dan bahkan bisa menggunakan cara encoding yang berbeda untuk tiap tile
Karena itu, dibutuhkan pendekatan heuristik untuk menemukan kombinasi terbaik, dan ada trade-off antara ukuran tile dan performa decoding
Ini masih tahap awal, tetapi AWS juga mensponsori pekerjaan optimasi MLT tahun ini, jadi masih banyak ruang untuk perbaikan ke depan
Saat melakukan benchmark, lebih penting melihat pola penggunaan nyata daripada total ukuran tile — toh tidak ada yang memperbesar peta di tengah lautan 😉
Saya baru-baru ini menerapkan solusi berbasis pmtiles dan sangat puas
Lihat dokumentasi PMTiles
pmtiles memakai MVT, tetapi saya berharap nanti akan ada alat untuk mengonversinya ke MLT
MapLibre sejauh ini adalah pustaka JS terbaik yang pernah saya pakai untuk menampilkan peta di browser
Saya antusias membayangkan peralihannya ke format baru
Di Planetiler, MLT bisa dibuat dengan opsi CLI
--tile-format=mltSaat ini baru ada di branch main, tetapi rilisnya akan segera menyusul
Hasil pengujian menunjukkan pada konfigurasi default, ukuran arsip OpenMapTiles berkurang sekitar 10%. Optimasi tambahan juga sedang berlangsung
Sayangnya, Tilemaker belum punya rencana mendukung MLT dalam jangka menengah
Jadi sebagian komunitas bisa tertinggal dalam transisi ini
Untuk diskusi terkait, lihat thread issue
Menarik bahwa format berkas vektor masih terus ditemukan ulang hingga sekarang
Saya paham peningkatan rasio kompresi atau kecepatan decoding, tetapi saya penasaran apa ide atau wawasan baru yang mendorong desain ini
Saya sudah mengikuti proyek ini selama beberapa waktu dan sangat antusias
Dari sudut pandang pengguna stack MapLibre, menurut saya tantangan besar terakhir adalah penambahan fungsi As_MLT() di PostGIS
Adakah di sini yang melakukan self-hosting peta? Saya penasaran dengan kelebihan, kekurangan, dan alat yang digunakan
Servernya cukup bisa menyajikan berkas statis dengan range request (baik Caddy maupun Nginx bisa)
Petanya berupa satu berkas besar, jadi mudah dibagikan antar beberapa server
Hampir tidak ada kekurangan, tetapi di sisi klien perlu menambahkan pustaka dukungan protokol kustom
Pengeditan style agak rumit, tetapi style protomaps bisa dimuat dan diubah lewat editor Maputnik
Lihat panduan
Saya membuat peta resolusi rendah seluruh dunia (50MB) dan peta resolusi tinggi Australia (900MB) secara terpisah lalu mengunggahnya ke S3
Karena saya tidak butuh data terbaru, saya biarkan begitu saja dan semuanya bekerja sangat baik
API komersial terlalu mahal untuk menghasilkan raster 300dpi atau memiliki pembatasan penjualan ulang
Saya menyimpan dan menyajikan vector tile dengan PostGIS, lalu menyimpan data raster dalam bentuk GeoTiff COG di AWS S3
Kami membangun pbf wilayah yang diminati (Colorado) dari OSM, menjalankan kontainer openstreetmap-tile-server, lalu menerapkan style dan merendernya dengan renderd
MLT memang keren, tetapi saya juga berharap ada perkembangan seperti ini pada format tile 3D
Saat ini 3D Tiles milik Cesium pada praktiknya adalah satu-satunya pilihan, tetapi performanya tidak secepat yang diharapkan