Protomaps - Peta dunia open-source gratis
(protomaps.com)- Menyediakan alternatif self-hosting dengan satu file statis bagi tim yang terbebani oleh operasional server dan biaya API peta dalam distribusi peta web
- Developer frontend dapat menyediakan tile peta vektor secara sederhana dan murah hanya dengan cloud storage dan HTTP range requests
- PMTiles adalah format terbuka yang memuat raster, basemap vektor, dan layer kustom, serta mendukung plugin MapLibre, CLI, dan integrasi CDN
- Protomaps memelihara tileset basemap berbasis OpenStreetMap dan data terbuka lain, sehingga OSM mudah diterapkan pada peta web interaktif
- Penggunaan nonkomersial gratis; untuk penggunaan komersial atau jika memerlukan API tile basemap terkelola, perlu berpartisipasi sebagai GitHub Sponsor
Peta yang di-self-host dalam satu file
- Protomaps adalah peta gratis dan dapat disesuaikan yang dapat mendistribusikan peta seluruh dunia sebagai satu file statis
- Dapat diunggah ke cloud storage untuk digunakan; jika pernah menggunakan S3, Anda dapat memublikasikan peta interaktif berskala planet
- Dirancang agar developer frontend dapat self-host peta tanpa konfigurasi server terpisah
- Tile peta vektor disediakan secara sederhana dan murah menggunakan HTTP range requests
- Sebagai materi awal, tersedia Get Started dan quick start tutorial
PMTiles dan cara peta disusun
- Contoh-contohnya menunjukkan konfigurasi minimal untuk membuat basemap dan overlay data hanya dengan HTML + JS
- PMTiles adalah spesifikasi arsip piramida tile berurutan Hilbert, yang dapat memuat data geospasial seperti raster, basemap vektor, dan layer kustom
- Menyediakan plugin MapLibre, command line interface, dan integrasi CDN
- Detail format dapat dilihat di dokumentasi PMTiles
Basemap berbasis OpenStreetMap
- Protomaps memelihara tileset basemap yang dibuat dari OpenStreetMap dan sumber data terbuka lainnya
- Dapat digunakan sebagai jalur yang memudahkan adopsi OSM pada peta web interaktif
- File planet lengkap dapat diunduh secara gratis, atau hanya wilayah yang diinginkan dapat diekstrak dengan CLI
- Ekstraksi wilayah dapat dimulai dari Download your area
- Pengguna yang tidak ingin mengelola file besar secara langsung dapat menggunakan API tile basemap berbasis cache CDN
- Penggunaan nonkomersial gratis
- Penggunaan komersial memerlukan GitHub Sponsor
- Maps API dapat digunakan dari kode
Skenario penggunaan
- Perusahaan dapat memakai cloud storage yang sudah ada untuk memperoleh kontrol full-stack atas embed peta situs, dan memangkas biaya peta dari ratusan dolar per bulan menjadi hitungan sen
- Newsroom dapat membuat cerita interaktif dengan peta kustom yang bertahan lama tanpa bergantung pada API pihak ketiga
- Di bidang sains, PMTiles dapat digunakan untuk memvisualisasikan data iklim dan lingkungan berskala planet, serta membuat penjelajah data dengan tool open-source dan frontend peta
- Instansi pemerintah dapat mengurangi ketergantungan pada Big Tech sambil menjaga privasi warga dan kepatuhan GDPR, serta menggunakan alternatif gratis untuk GIS proprietari
2 komentar
Protomaps - Membuat sistem peta Anda sendiri dengan OpenStreetMap
Protomaps - Merilis peta serverless sebagai open source
Pendapat di Hacker News
Saya mencoba membuat peta yang dipotong hanya untuk area sekitar Half Moon Bay di selatan San Francisco dengan alat pmtiles dari Protomaps
Binary Go terbaru untuk macOS saya ambil dari https://github.com/protomaps/go-pmtiles/releases, dan bounding box perkiraannya saya temukan lewat http://bboxfinder.com/#37.373977,-122.593346,37.570977,-122....
Perintah yang saya jalankan adalah
pmtiles extract https://build.protomaps.com/20231023.pmtiles hmb.pmtiles \ --bbox=-122.593346,37.373977,-122.400055,37.570977, dan ketika hmb.pmtiles 2MB yang dihasilkan saya seret ke “drop zone” di https://maps.protomaps.com/, muncul peta detail yang bisa di-zoom sampai level metadata OpenStreetMap dan garis luar bangunanSangat mengesankan untuk ukuran 2MB, dan filenya ada di sini: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...
Biasanya mereka menyematkan Google Maps, tetapi sering kali peta area sekitar lokasi saja sudah cukup dan mungkin lebih murah
Pengguna juga tidak perlu mengunduh seluruh file, jadi ini cukup keren, dan saya antusias mencoba memasukkan peta ke situs statis
File pmtile yang ditautkan berfungsi, tetapi file lebih kecil yang saya buat sendiri tidak. Meski begitu, konsep mendapatkan peta untuk proyek itu sendiri sangat bagus
Saya sudah memakai Mapbox secara intens sejak mendapat akses alfa Tilemill, dan dari sudut pandang saya ini adalah kontribusi paling penting di bidang peta terbuka sejak vector tile dan Mapbox GL / Map GL
Mapbox memang membuka pintu dengan pendekatan pembuatan tile melalui MTS, tetapi meski kuat, ia terlalu rumit dan mahal. Tile bisa dibuat dengan Tippecanoe, tetapi hosting vector tile tetap merepotkan, sementara dengan PMTiles, hosting vector tile bisa menjadi lebih mudah dan nyaman daripada Mapbox, dengan biaya yang bisa lebih rendah lebih dari satu orde besaran
Terutama jika tidak membutuhkan proyeksi mewah atau dukungan 3D dan MapLibre sudah cukup. Felt juga tampaknya menjadi salah satu layanan besar yang memakai pendekatan PMTile secara internal, dan investasi berkelanjutan mereka pada Tippecanoe juga luar biasa. Di saat fokus Mapbox tampaknya bergeser ke navigasi kendaraan, menyenangkan melihat inovasi disruptif datang dari tempat baru, dan yang lebih mengejutkan lagi ini berasal dari tim satu orang
Kemunculan PMTiles, dipadukan dengan dukungan kueri spasial DuckDB, tampaknya akan membuka banyak inovasi. Jika file GeoParquet besar bisa di-query dan diproses lalu di-streaming sebagai PMTiles yang dibuat cepat, akan ada use case yang cukup kuat
gpq convert Cairo_Governorate.parquet --to=geojson | tippecanoe Cairo.geojson -o Cairo.pmtileshttps://cloudnativegeo.org/blog/2023/10/where-is-cog-for-vec...
https://github.com/planetlabs/gpq
Saya sering memantau komunitas online para developer jurnalis, dan di sana ada orang-orang yang berharap PMTiles menjadi cara untuk memangkas biaya hosting sendiri tile peta bergaya kustom
Misalnya, artikel “How The Post is replacing Mapbox with open source solutions” https://www.kschaul.com/post/2023/02/16/how-the-post-is-repl... layak dibaca
Untuk yang penasaran, ukuran file contoh PMTile turunan OSM
protomaps-basemap-opensource-20230408.pmtilesadalah 103GBhttps://docs.protomaps.com/basemaps/downloads
Akan bagus kalau bisa mengunduh dan menerapkan hanya perubahan untuk file basis harian, mingguan, dan bulanan
Yang menarik adalah poin bahwa “Google Maps API memang punya kuota gratis yang cukup longgar, tetapi biayanya tinggi setelah melewati 30.000 pemuatan peta. Protomaps sejak awal dirancang sebagai sistem yang dioperasikan sendiri, dan karena berjalan sebagai backend 100% statis di atas cloud storage, Anda hanya perlu menanggung biaya penyimpanan dan transfer. Pada tingkat penggunaan menengah, biayanya bisa hanya beberapa sen”
Saya ingin melihat konfigurasi hosting yang direkomendasikan, perbandingan biaya dengan Google Maps, dan di titik mana garis biayanya berpotongan
Jika petanya tidak harus 100% mutakhir dan hanya dipakai untuk wilayah tertentu, ini tampak seperti cara yang benar-benar menarik untuk di-host sendiri. Sepertinya prosedurnya akan mudah dan hampir tanpa dependensi eksternal: setahun sekali “mengompilasi ulang” file lalu mengunggahnya ke hosting file statis
Sunting: saya menemukan tautan unduhan resmi untuk seluruh dunia[1], ukurannya sedikit di atas 100GB. Jadi jawaban atas pertanyaan saya mungkin sekitar “ratusan MB hingga beberapa GB”, dan ukuran seperti itu tampaknya sepenuhnya masuk akal
[1] https://docs.protomaps.com/basemaps/downloads
Jika membaca dokumentasi Protomaps, ada penjelasan tentang cara melakukan cache request di CDN Cloudflare, jadi untuk setiap periode cache Anda hanya perlu membayar sekali untuk tiap request tile. Cukup murah
Judul submission Protomaps sebelumnya adalah “Serverless maps at 1/700 the cost of Google Maps API”
Pendiri Protomaps, Brandon, beberapa bulan lalu tampil di podcast Geomob: https://thegeomob.com/podcast/episode-176
Bagian yang paling menarik bagi saya adalah PMTiles
“PMTiles adalah format arsip satu file untuk piramida data tile. Arsip PMTiles dapat di-host di platform penyimpanan seperti S3, sehingga memungkinkan aplikasi peta berbiaya rendah dan tanpa pengelolaan”
“PMTiles adalah format umum untuk data tile yang dialamati dengan koordinat Z/X/Y. Format ini dapat memuat berbagai data seperti vector tile untuk basemap, observasi penginderaan jauh, dan gambar JPEG”
“Reader PMTiles menggunakan HTTP range request untuk mengambil hanya tile atau metadata yang diperlukan dari dalam arsip PMTiles secara on-demand”
“Penempatan tile dan direktori dirancang untuk meminimalkan jumlah request tambahan saat melakukan pan dan zoom”
https://docs.protomaps.com/pmtiles/
Setiap hari saya menerima file CSV, mengubahnya menjadi vector tile, menyinkronkannya dengan S3, lalu menampilkannya di peta mapbox-gl; biaya terbesarnya adalah operasi file S3. Untuk mengurangi biaya, saya melakukan clustering secara agresif dan menurunkan jumlah tile menjadi sekitar 75.000, tetapi pada frekuensi pembaruan yang saya inginkan, biaya operasi S3 saja mencapai $500 per bulan
Sekarang saya memproses file-file itu menjadi satu file PMTiles dan hanya mendistribusikan satu file tersebut, sehingga biayanya turun menjadi beberapa sen
Ini membuka banyak kemungkinan untuk membuat peta publik, dan jika penasaran, Anda bisa melihat seluruh data hotspot Kanada 2023 di sini: https://lens.pathandfocus.com
Cara lama di sisi vektor adalah memiliki sangat banyak file kecil, atau satu file besar yang membutuhkan frontend untuk menyajikan tiap tile
Sekarang, dengan mesin yang mumpuni, Anda bisa mengonversi dump OSM menjadi basemap tingkat negara dalam hitungan menit, bahkan tingkat benua dalam beberapa jam, lalu meng-host sendiri di web server biasa bersama stylesheet kustom
Kombinasi Maplibre[1] + PMTiles + tippecanoe[2] dari Felt sangat bagus untuk peta web yang di-host sendiri, jika Anda tidak keberatan terikat pada proyeksi Web Mercator
Hampir semua sumber geospasial bisa dikonversi menjadi
.pmtilesdengan GDAL[3] dan tippecanoe:(.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtilesUntuk data OpenStreetMap ada planetiler[4], dan ada juga style openmaptiles[5] yang bisa dipakai bersama Maplibre
Dengan kombinasi ini, Anda mendapat titik awal yang baik untuk pipeline data open source yang bisa di-host di AWS S3+CloudFront atau Cloudflare R2 dengan biaya beberapa sen
[1] https://maplibre.org/
[2] https://github.com/felt/tippecanoe
[3] https://gdal.org/
[4] https://github.com/onthegomap/planetiler
[5] https://openmaptiles.org/styles/
Selain itu, saya merasa dokumentasi GDAL/ogr2ogr cukup sulit dibaca, jadi sebagai contoh awal Anda bisa melihat perintah seperti ini
ogr2ogr -f GeoJSON counties.json -t_srs EPSG:4326 -nln counties -sql "SELECT STATEFP, COUNTYFP, NAME FROM tl_2022_us_county" /vsizip/tl_2022_us_county.ziphttps://census.gov/geographies/mapping-files/…
Saya pernah berkontribusi pada proyek ini, dan perusahaan kami juga memakainya di produksi
Ini benar-benar bagus, Brandon juga sangat baik, dan saya berterima kasih atas semua pekerjaan yang sudah dilakukan sejauh ini
Saya mendapat hasil yang cukup bagus dengan deployment peta serverless menggunakan PMTiles
Jika tertarik men-deploy ke AWS CloudFront/Lambda@Edge/S3, lihat https://github.com/serverlessmaps/serverlessmaps