6 poin oleh GN⁺ 2023-10-24 | 2 komentar | Bagikan ke WhatsApp
  • 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

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

 
GN⁺ 2023-10-24
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 bangunan
    Sangat mengesankan untuk ukuran 2MB, dan filenya ada di sini: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...

    • Saya sudah menjadikannya demo https://simonw.github.io/hmb-map/ dan tulisan blog https://til.simonwillison.net/gis/pmtiles
    • Keren sekali. Sepertinya bisa berguna untuk bisnis lokal
      Biasanya mereka menyematkan Google Maps, tetapi sering kali peta area sekitar lokasi saja sudah cukup dan mungkin lebih murah
    • Dengan cara yang sama, saya membuat peta Gran Canaria dan ukurannya 15MB
      Pengguna juga tidak perlu mengunduh seluruh file, jadi ini cukup keren, dan saya antusias mencoba memasukkan peta ke situs statis
    • Ini bukan pertanyaan dukungan teknis, tetapi saya tidak tahu kenapa di sisi saya tidak berhasil
      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

  • 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

    • Bagaimana organisasi media tahu bahwa data ini akurat?
    • Kedengarannya seperti komunitas yang menarik. Bisa dibagikan itu di mana?
  • Untuk yang penasaran, ukuran file contoh PMTile turunan OSM protomaps-basemap-opensource-20230408.pmtiles adalah 103GB
    https://docs.protomaps.com/basemaps/downloads

    • Sekarang 107GB
      Akan bagus kalau bisa mengunduh dan menerapkan hanya perubahan untuk file basis harian, mingguan, dan bulanan
    • Ini jenis file yang sangat cocok diunduh lewat Bittorrent
    • Apa yang dipakai untuk kompresi tile? Bisakah dibuat lebih kecil dengan AVIF? Atau bagaimana dengan AVIF untuk teks + overlay SVG?
    • Justru ini yang saya penasaran. Bisa dibilang ukurannya cukup masuk akal
  • 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

    • Saya tidak menemukannya di FAQ, tetapi akan menarik kalau tahu kira-kira berapa ukuran file PMTiles untuk negara berukuran menengah
      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
    • Mengacu pada Cloudflare, hosting 100GB biayanya $1, dan 10 juta request biayanya $0,36
      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/

    • PMTiles luar biasa. Saya mengetahuinya musim panas ini saat membuat peta hotspot kebakaran hutan Kanada
      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
    • PMTiles adalah padanan vektor dari Cloud Optimized GeoTIFF(COG), yang memungkinkan klien menggunakan informasi peta secara efisien ketika server mendukung HTTP range request
      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
    • Bisakah PMTiles juga dipakai sebagai cara murah, kasar, dan cepat untuk meng-host data geospasial lain yang bukan “map tile” dalam arti ketat? Misalnya database POI yang cukup besar tetapi tidak sering diperbarui
    • Kalau itu file vektor, apakah artinya bisa dilakukan styling secara langsung?
  • 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 .pmtiles dengan GDAL[3] dan tippecanoe: (.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtiles
    Untuk 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.zip
    https://census.gov/geographies/mapping-files/…

    • Saya seorang mahasiswa yang ingin meningkatkan kemampuan geospasial/ilmu komputer; proyek apa yang bisa saya buat dengan ini? Apakah ada titik awal yang bagus untuk direkomendasikan?
  • 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