MapLibre Tile जारी — आधुनिक और अधिक कुशल vector tile format
(maplibre.org)- MapLibre Tile(MLT) मौजूदा Mapbox Vector Tile(MVT) की जगह लेने वाला नया अगली पीढ़ी का vector tile format है, जिसे बड़े पैमाने के geospatial data processing की दक्षता बढ़ाने के लिए डिज़ाइन किया गया है
- यह अधिकतम 6 गुना बेहतर compression ratio और SIMD-आधारित तेज decoding performance प्रदान करता है, जिससे storage space, latency और cache efficiency बेहतर होती है
- आगे चलकर यह 3D coordinates (elevation), GPU-आधारित processing, complex data types, linear referencing और m-values के समर्थन तक विस्तार योग्य है
- यह अभी MapLibre GL JS और MapLibre Native में तुरंत उपयोग किया जा सकता है, और demo tiles, conversion server, तथा Planetiler के जरिए generation support भी उपलब्ध है
- यह open source community, कंपनियों और academia के सहयोग से विकसित format है, जिसे Microsoft और AWS की sponsorship से पूरा किया गया
MapLibre Tile का परिचय
-
MapLibre Tile(MLT), [Mapbox Vector Tile(MVT)] का उत्तराधिकारी format है, जिसे तेज़ी से बढ़ती geospatial data की मात्रा और जटिल अगली पीढ़ी के source formats को संभालने के लिए शुरुआत से नए सिरे से डिज़ाइन किया गया है
- इसे modern hardware और graphics API की performance का लाभ उठाने के लिए डिज़ाइन किया गया है, ताकि planet-scale 2D और 2.5D basemaps को high performance के साथ process और render किया जा सके
- मौजूदा implementation, functionality के स्तर पर MVT के बराबर है, लेकिन performance और efficiency के मामले में बेहतर है
-
मुख्य तकनीकी सुधार
- Compression ratio में सुधार: बड़े tiles में अधिकतम 6 गुना सुधार, इसके लिए column-oriented layout और recursive lightweight encoding का उपयोग किया गया है
- Decoding performance में सुधार: SIMD/vectorized instructions के साथ जुड़ सकने वाली तेज और हल्की encoding structure
- नतीजतन latency में कमी, storage और transfer cost में बचत, और cache utilization में सुधार होता है
भविष्य की विस्तार क्षमता
-
MLT को निम्नलिखित भविष्य की सुविधाओं के समर्थन को ध्यान में रखकर डिज़ाइन किया गया है
- 3D coordinates (elevation) के लिए बेहतर समर्थन
- CPU और GPU की efficient processing के लिए storage और memory format optimization
- linear referencing और m-values के समर्थन के जरिए Overture Maps(GeoParquet) जैसे अगली पीढ़ी के formats के साथ compatibility
- nested properties, lists, maps जैसे complex types का समर्थन
-
MLT की आगे की दिशा community की आवश्यकताओं के अनुसार तय होगी, और विभिन्न extension ideas तथा contributions का स्वागत है
- संबंधित सामग्रियों में Markus Tremmel की FOSS4G 2024 presentation slides, YouTube talk, और ACM paper शामिल हैं
उपलब्धता और integration
-
MLT अभी तुरंत उपयोग के लिए उपलब्ध है
- MapLibre GL JS और MapLibre Native दोनों MLT sources को support करते हैं
- style JSON की
encodingproperty मेंmltvalue देकर इसका उपयोग किया जा सकता है
-
इसे आज़माने और विकसित करने के तरीके
- MLT-आधारित demo tile style का उपयोग
- Encoding server के जरिए मौजूदा MVT styles को real time में MLT में convert करना
- Planetiler के अगले version में MLT generation support आने वाला है
- integration status को official implementation status page पर देखा जा सकता है
-
MLT के उपयोग अनुभव साझा करने के लिए Slack के
#maplibre-tile-formatchannel या GitHub issues/discussions में भाग लेने की सिफारिश की जाती है
आभार और सहयोग
- MLT को academia, open source, और कंपनियों के बीच कई वर्षों के सहयोग से विकसित किया गया है
- Markus Tremmel ने format की परिकल्पना की, और Yuri Astrakhan ने project का नेतृत्व किया
- Tim Sylvester ने C++ implementation किया, जबकि Harel Mazor, Benedikt Vogl, और Niklas Greindl ने JavaScript implementation संभाला
- Microsoft और AWS ने development funding प्रदान की
टिप्पणियाँ
- MLT, MVT के विपरीत, ऐसी layers को support नहीं करता जिनमें एक ही column के values का type हर feature के लिए अलग हो
1 टिप्पणियां
Hacker News प्रतिक्रियाएँ
शनिवार को FOSDEM के Geospatial devroom में होने वाली MapLibre प्रस्तुति में शामिल होने की सिफारिश करता हूँ
इवेंट शेड्यूल लिंक
मैंने example page थोड़ा देखा और MLT के साथ map display example की मौजूदा map display example से तुलना की
console log देखने पर पता चला कि compression efficiency में लगभग 10% सुधार हुआ है। काफ़ी प्रभावशाली है
MLT format में कई तरह की lightweight encoding built-in हैं, और हर tile को अलग तरीके से encode भी किया जा सकता है
इसलिए सबसे अच्छा combination ढूँढने के लिए heuristic approach की ज़रूरत होती है, और tile size तथा decoding performance के बीच trade-off मौजूद है
यह अभी शुरुआती चरण में है, लेकिन AWS इस साल भी MLT optimization work को sponsor कर रहा है, इसलिए आगे सुधार की काफ़ी गुंजाइश है
benchmark करते समय कुल tile size से ज़्यादा वास्तविक usage pattern देखना ज़रूरी है — क्योंकि कोई भी समुद्र के ठीक बीच में zoom नहीं करता 😉
मैंने हाल ही में pmtiles-आधारित solution deploy किया है और मैं उससे बहुत संतुष्ट हूँ
PMTiles दस्तावेज़ देखें
pmtiles MVT का उपयोग करता है, लेकिन उम्मीद है कि आगे MLT में convert करने वाले tools आएँगे
ब्राउज़र में map display करने के लिए MapLibre अब तक इस्तेमाल की गई JS libraries में सबसे बेहतरीन है
नए format पर switch होने की संभावना से उत्साहित हूँ
Planetiler में
--tile-format=mltCLI option के साथ MLT generate किया जा सकता हैअभी यह सिर्फ main branch में है, लेकिन जल्द release होगा
test result में default settings पर OpenMapTiles archive size लगभग 10% कम हुआ। और optimization भी चल रही है
दुर्भाग्य से Tilemaker की medium-term में MLT support की कोई योजना नहीं है
इसलिए community का एक हिस्सा migration से बाहर रह सकता है
संबंधित चर्चा के लिए issue thread देखें
यह दिलचस्प है कि vector file formats अभी भी नए सिरे से reinvent किए जा रहे हैं
compression ratio या decoding speed में सुधार समझ में आता है, लेकिन मैं जानना चाहता हूँ कि इस design को आगे बढ़ाने वाला नया idea या insight क्या था
मैं इस project को कुछ समय से देख रहा हूँ और यह काफ़ी रोमांचक लग रहा है
MapLibre stack user के नज़रिए से आख़िरी बड़ा काम शायद PostGIS में As_MLT() function जुड़ना है
क्या यहाँ कोई map self-hosting करता है? इसके फायदे-नुकसान और इस्तेमाल किए जाने वाले tools जानने की उत्सुकता है
server को बस इतना करना होता है कि वह range request के साथ static files serve कर सके (Caddy या Nginx दोनों ठीक हैं)
map एक ही बड़ा file होता है, इसलिए कई servers के बीच share करना भी आसान है
नुकसान लगभग नहीं हैं, लेकिन client side पर custom protocol support library जोड़नी पड़ती है
style editing थोड़ा मुश्किल है, लेकिन Maputnik editor में protomaps style load करके modify किया जा सकता है
guide document देखें
मैंने दुनिया का low-resolution map (50MB) और ऑस्ट्रेलिया का high-resolution map (900MB) अलग-अलग बनाकर S3 पर upload किया है
मुझे ताज़ा data की ज़रूरत नहीं होती, इसलिए उसी तरह छोड़कर इस्तेमाल करता हूँ, और यह बहुत अच्छी तरह काम करता है
commercial API के साथ 300dpi raster generation cost बहुत ज़्यादा थी या resale restrictions थीं
मैं PostGIS के साथ vector tiles store और serve करता हूँ, और AWS S3 में raster data को GeoTiff COG रूप में store करता हूँ
OSM से दिलचस्पी वाले क्षेत्र (Colorado) का pbf build करते हैं, openstreetmap-tile-server container चलाते हैं, फिर style apply करके renderd से render करते हैं
MLT अच्छा है, लेकिन काश 3D tile formats में भी ऐसी प्रगति होती
अभी Cesium का 3D Tiles लगभग एकमात्र विकल्प है, लेकिन performance उम्मीद जितनी तेज़ नहीं है