6 puan yazan GN⁺ 2023-10-24 | 2 yorum | WhatsApp'ta paylaş
  • Web haritası yayımlarken sunucu işletimi ve harita API maliyetleri yük olan ekiplere, tek bir statik dosya ile self-hosting alternatifi sunar
  • Frontend geliştiricileri, yalnızca bulut depolama ve HTTP range requests ile vektör harita kutucuklarını basit ve düşük maliyetli şekilde sunabilir
  • PMTiles, raster ve vektör taban haritaları ile özel katmanları barındıran açık bir formattır; MapLibre eklentisi, CLI ve CDN entegrasyonlarını destekler
  • Protomaps, OpenStreetMap ve diğer açık verilere dayalı taban harita tileset'lerini sürdürerek OSM'in etkileşimli web haritalarında kolayca kullanılmasını sağlar
  • Ticari olmayan kullanım ücretsizdir; ticari kullanım veya yönetilen taban harita tile API gerekiyorsa GitHub Sponsor katılımı gerekir

Tek dosyayla self-host edilen harita

  • Protomaps, tüm dünya haritasını tek bir statik dosya olarak dağıtabilen ücretsiz ve özelleştirilebilir bir haritadır
  • Bulut depolamaya yüklenerek kullanılabilir; S3 deneyiminiz varsa dünya ölçeğinde etkileşimli bir harita yayımlayabilirsiniz
  • Frontend geliştiricilerinin ek sunucu kurulumu olmadan haritaları self-host etmesi için tasarlanmıştır
  • Vektör harita kutucukları HTTP range requests kullanılarak basit ve düşük maliyetli şekilde sunulur
  • Başlangıç için Get Started ve quick start tutorial kaynakları sunulur

PMTiles ve harita oluşturma yöntemi

OpenStreetMap tabanlı taban haritalar

  • Protomaps, OpenStreetMap ve diğer açık veri kaynaklarından oluşturulmuş taban harita tileset'lerini sürdürür
    • Etkileşimli web haritalarında OSM'i benimsemek için kolay bir yol olarak kullanılabilir
    • Tüm planet dosyası ücretsiz indirilebilir veya CLI ile yalnızca istenen bölge çıkarılabilir
    • Bölge çıkarmaya Download your area üzerinden başlanabilir
  • Büyük dosyaları doğrudan yönetmek istemeyen kullanıcılar, CDN önbelleğine dayalı taban harita tile API'yi kullanabilir
    • Ticari olmayan kullanım ücretsizdir
    • Ticari kullanım için GitHub Sponsor gerekir
    • Maps API kod içinde kullanılabilir

Kullanım senaryoları

  • Şirketler, mevcut bulut depolamalarını kullanarak site haritası yerleştirmeleri üzerinde full-stack kontrol elde edebilir ve aylık yüzlerce dolarlık harita maliyetlerini kuruş seviyesine indirebilir
  • Haber merkezleri, üçüncü taraf API bağımlılığı olmadan uzun süre çalışacak özelleştirilmiş haritalarla etkileşimli hikâyeler oluşturabilir
  • Bilim alanında PMTiles ile dünya ölçeğinde iklim ve çevre verileri görselleştirilebilir; açık kaynak araçlar ve harita frontend'leriyle veri gezginleri oluşturulabilir
  • Kamu kurumları, Big Tech bağımlılığını azaltırken vatandaş gizliliğini ve GDPR uyumunu koruyabilir, tescilli GIS'e ücretsiz bir alternatif kullanabilir

2 yorum

 
GN⁺ 2023-10-24
Hacker News yorumları
  • Protomaps’in pmtiles aracıyla San Francisco’nun güneyindeki Half Moon Bay çevresiyle sınırlı bir harita oluşturmayı denedim
    Güncel macOS Go ikilisini https://github.com/protomaps/go-pmtiles/releases adresinden indirdim; yaklaşık sınır kutusunu da http://bboxfinder.com/#37.373977,-122.593346,37.570977,-122.... ile buldum
    Çalıştırdığım komut pmtiles extract https://build.protomaps.com/20231023.pmtiles hmb.pmtiles \ --bbox=-122.593346,37.373977,-122.400055,37.570977 idi; ortaya çıkan 2MB hmb.pmtiles dosyasını https://maps.protomaps.com/ üzerindeki “drop zone” alanına sürükleyip bırakınca OpenStreetMap meta verileri ve bina konturları seviyesine kadar yakınlaştırılabilen ayrıntılı bir harita çıktı
    2MB için bu seviye gerçekten etkileyici; dosya burada: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...

    • Bunu bir demo https://simonw.github.io/hmb-map/ ve blog yazısı https://til.simonwillison.net/gis/pmtiles hâline getirdim
    • Gerçekten harika. Yerel işletmeler için faydalı olabilir gibi görünüyor
      Genelde Google Maps gömülüyor, ama çoğu zaman yalnızca işletme çevresindeki bir harita yeterli olur ve muhtemelen daha ucuzdur
    • Aynı yöntemle Gran Canaria haritası yaptım, 15MB çıktı
      Kullanıcıların dosyanın tamamını indirmesi de gerekmeyeceği için oldukça güzel; statik bir siteye harita koymayı denemek için heyecanlıyım
    • Teknik destek sorusu değil ama bende neden çalışmadığını anlayamadım
      Bağlanan pmtile dosyası çalışıyor, benim oluşturduğum daha küçük dosya çalışmıyor. Yine de proje için harita elde etme fikrinin kendisi harika
  • Tilemill alfa erişimi aldığım zamandan beri Mapbox’ı yoğun şekilde kullanıyorum; bana göre bu, vektör karolar ve Mapbox GL / Map GL’den bu yana açık harita alanındaki en önemli katkı
    Mapbox, MTS ile karo üretmeye yaklaşarak kapıyı açık bırakmıştı ama güçlü olmasına karşın fazla karmaşık ve pahalıydı. Tippecanoe ile karo üretilebiliyordu, fakat vektör karo barındırma hâlâ baş ağrısıydı; PMTiles kullanınca vektör karo barındırma Mapbox’a kıyasla daha kolay ve rahat, maliyet olarak da bir basamak mertebesinden fazla daha düşük olabiliyor
    Gösterişli projeksiyonlara ya da 3D desteğine ihtiyacınız yoksa ve MapLibre yeterliyse bu özellikle geçerli. Felt de içeride PMTile yaklaşımını kullanan başlıca servislerden biri gibi görünüyor; Tippecanoe’ye yatırım yapmaya devam etmeleri de harika. Mapbox’ın odağının araç içi navigasyona kayıyor gibi göründüğü bir dönemde yıkıcı yeniliğin yeni yerlerden gelmesi sevindirici; daha da şaşırtıcı olan bunun tek kişilik bir ekipten çıkmış olması
    PMTiles’ın ortaya çıkışı, DuckDB’nin mekânsal sorgu desteğiyle birleşince çok sayıda yeniliğin önünü açacak gibi. Büyük GeoParquet dosyalarını sorgulayıp işleyebilmek ve hızla üretilmiş PMTiles olarak stream edebilmek oldukça güçlü kullanım senaryoları yaratabilir

  • Gazeteci geliştiricilerin çevrimiçi topluluğunu uzaktan takip ediyorum; orada PMTiles’ı özel stilli harita karolarını kendi başına barındırmanın maliyetini düşürme yolu olarak görenler var
    Örneğin “How The Post is replacing Mapbox with open source solutions” https://www.kschaul.com/post/2023/02/16/how-the-post-is-repl... yazısı görülmeye değer

    • Haber kuruluşları bu verinin doğru olduğunu nasıl biliyor?
    • İlginç bir topluluk gibi duruyor. Neresi olduğunu paylaşabilir misin?
  • Merak edenler için yazayım: OSM’den türetilmiş örnek PMTile dosyası protomaps-basemap-opensource-20230408.pmtiles boyut olarak 103GB
    https://docs.protomaps.com/basemaps/downloads

    • Şu anda 107GB
      Günlük, haftalık ve aylık temel dosyalara yalnızca değişiklikleri indirip uygulayabilsek güzel olurdu
    • Böyle şeyler Bittorrent ile indirmek için biçilmiş kaftan
    • Karo sıkıştırmada ne kullanıyorlar acaba? AVIF ile daha da küçültülebilir mi? Ya da metin için AVIF+SVG overlay nasıl olur?
    • Tam da bunu merak ediyordum. Oldukça makul bir boyut sayılabilir
  • “Google Maps API’nin cömert bir ücretsiz kotası var, ancak 30.000 harita yüklemesini aşınca ücretler yükseliyor. Protomaps ise en baştan kendi kendine işletilen bir sistem olarak tasarlandı ve bulut depolama üzerinde %100 statik bir backend olarak çalıştığı için yalnızca depolama ve aktarım maliyetlerini üstlenmeniz gerekiyor. Orta düzey kullanımda bu birkaç sent seviyesinde olabilir” noktası ilginç
    Önerilen hosting yapılandırmasını, Google Maps ile maliyet karşılaştırmasını ve maliyet çizgilerinin hangi noktada kesiştiğini görmek isterdim

    • FAQ’da bulamadım ama orta ölçekli bir ülkenin PMTiles dosya boyutunun ne kadar olduğunu bilmek ilginç olurdu
      %100 güncel olması gerekmeyen ve yalnızca belirli bir bölgede kullanılan bir haritaysa, kendi kendine host etmek için gerçekten cazip bir yöntem gibi görünüyor. Yılda bir kez dosyayı “yeniden derleyip” statik dosya hosting’e yüklemek, dış bağımlılığı neredeyse olmayan kolay bir süreç olur gibi
      Düzenleme: Tüm dünya için resmi indirme bağlantısını[1] buldum; 100 GB’ın biraz üzerinde. O hâlde sorumun yanıtı muhtemelen “yüzlerce MB ile birkaç GB arası” olur ve bu da tamamen makul görünüyor
      [1] https://docs.protomaps.com/basemaps/downloads
    • Cloudflare’a göre 100 GB hosting $1, 10 milyon istek ise $0.36
      Protomaps belgelerini okuyunca, Cloudflare CDN’de isteklerin nasıl önbelleğe alınacağını açıkladığını görüyorsunuz; böylece her karo isteğinin maliyetini önbellek süresi başına yalnızca bir kez ödüyorsunuz. Oldukça ucuz
      Önceki Protomaps gönderisinin başlığı “Serverless maps at 1/700 the cost of Google Maps API” idi
  • Protomaps’in kurucusu Brandon birkaç ay önce Geomob podcast’ine konuk olmuştu: https://thegeomob.com/podcast/episode-176

  • Benim için en ilginç kısım PMTiles
    “PMTiles, karo veri piramitleri için tek dosyalık bir arşiv biçimidir. PMTiles arşivleri S3 gibi depolama platformlarında host edilebilir ve düşük maliyetli, yönetim gerektirmeyen harita uygulamalarını mümkün kılar”
    “PMTiles, Z/X/Y koordinatlarıyla adreslenen karo verileri için genel amaçlı bir formattır. Harita altlığı vektör karoları, uzaktan algılama gözlemleri, JPEG görüntüler gibi çeşitli verileri içerebilir”
    “PMTiles okuyucuları, HTTP range request’leri kullanarak PMTiles arşivi içinden yalnızca gereken karoları veya metaverileri isteğe bağlı olarak getirir”
    “Karo ve dizin yerleşimi, kaydırma ve yakınlaştırma sırasında ek istek sayısını en aza indirecek şekilde tasarlanmıştır”
    https://docs.protomaps.com/pmtiles/

    • PMTiles harika. Bu yaz Kanada orman yangını sıcak nokta haritası yaparken öğrendim
      Her gün CSV dosyaları alıp bunları vektör karolara dönüştürüyor, S3 ile senkronize ediyor ve mapbox-gl haritasında gösteriyordum; en büyük maliyet S3 dosya işlemleriydi. Maliyeti düşürmek için agresif biçimde kümeleme yaptım ve karo sayısını yaklaşık 75.000’e indirdim, ama istediğim güncelleme sıklığında yalnızca S3 işlem maliyeti ayda $500 tutuyordu
      Artık dosyaları tek bir PMTiles dosyası olarak işliyor ve yalnızca o tek dosyayı dağıtıyorum; maliyet birkaç sent seviyesine düştü
      Herkese açık haritalar yapmak için çok büyük olanaklar açtı; merak ediyorsanız 2023 yılının tüm Kanada sıcak nokta verilerini burada görebilirsiniz: https://lens.pathandfocus.com
    • PMTiles, sunucu HTTP range request desteği verdiğinde istemcinin harita bilgisini verimli kullanmasını sağlayan Cloud Optimized GeoTIFF’in (COG) vektör karşılığı
      Vektör tarafındaki önceki yöntem ya çok sayıda küçük dosya ya da tek tek karoları sunacak bir frontend gerektiren büyük bir dosyaydı
      Artık güçlü bir makinede OSM dökümünü ülke ölçeğinde alt haritaya birkaç dakika içinde, kıta ölçeğinde de birkaç saat içinde dönüştürüp ardından özel bir stylesheet ile birlikte sıradan bir web sunucusunda kendiniz host edebilirsiniz
    • PMTiles, dar anlamda “harita karosu” olmayan başka coğrafi-uzamsal verileri ucuz, kabaca ve hızlı biçimde host etmenin bir yolu olarak da kullanılabilir mi? Örneğin epey büyük ama sık güncellenmeyen bir POI veritabanı gibi
    • Vektör dosyasıysa bu, anında stil verilebileceği anlamına mı geliyor?
  • Maplibre[1] + PMTiles + Felt'in tippecanoe[2] kombinasyonu, Web Mercator projeksiyonuna bağlı kalmayı sorun etmiyorsanız kendi barındırdığınız web haritaları için harika
    Neredeyse tüm jeo-uzamsal kaynaklar GDAL[3] ve tippecanoe ile .pmtiles biçimine dönüştürülebilir: (.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtiles
    OpenStreetMap verileri için planetiler[4] var; Maplibre ile birlikte kullanılabilen openmaptiles[5] stilleri de mevcut
    Bu kombinasyonla, açık kaynak bir veri hattı kullanarak AWS S3+CloudFront veya Cloudflare R2 üzerinde birkaç sentlik maliyetle barındırılabilen iyi bir başlangıç noktası elde edersiniz
    [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/
    Ek olarak, GDAL/ogr2ogr belgelerini okuması epey zor bulduğum için, başlangıç örneği olarak şu komuta bakılabilir
    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/…

    • Jeo-uzamsal/bilgisayar bilimi becerilerini geliştirmek isteyen bir öğrenciyim; bununla nasıl bir proje yapabilirim? Önerebileceğiniz iyi bir başlangıç noktası var mı?
  • Bu projeye katkıda bulunmuştum ve şirkette de production ortamında kullanıyoruz
    Gerçekten çok iyi; Brandon da çok nazik biri ve bugüne kadar yapılan tüm çalışmalar için minnettarım

  • PMTiles kullanan serverless harita dağıtımlarında oldukça iyi sonuçlar aldım
    AWS CloudFront/Lambda@Edge/S3 üzerinde dağıtımla ilgileniyorsanız https://github.com/serverlessmaps/serverlessmaps adresine bakabilirsiniz