6 ポイント 投稿者 GN⁺ 2023-10-24 | 2件のコメント | WhatsAppで共有
  • Web地図の配信でサーバー運用や地図APIのコストが負担になっているチームに、単一の静的ファイルでセルフホスティングできる代替手段を提供する
  • フロントエンド開発者はクラウドストレージとHTTP range requestsだけで、ベクター地図タイルをシンプルかつ低コストに提供できる
  • PMTilesはラスタ・ベクターベースマップ・カスタムレイヤーを格納するオープンな形式で、MapLibreプラグイン・CLI・CDN連携をサポートする
  • ProtomapsはOpenStreetMapやその他のオープンデータを基盤としたベースマップタイルセットを維持し、インタラクティブなWeb地図にOSMを簡単に適用できるようにする
  • 非商用利用は無料で、商用利用または管理型ベースマップタイルAPIが必要な場合はGitHub Sponsorへの参加が必要

単一ファイルでセルフホスティングする地図

  • Protomapsは、世界地図を単一の静的ファイルとして配布できる無料・カスタマイズ可能な地図
  • クラウドストレージに置いて利用でき、S3の利用経験があれば地球規模のインタラクティブ地図を公開できる
  • 追加のサーバー設定なしで、フロントエンド開発者が地図をセルフホスティングできるよう設計されている
  • ベクター地図タイルはHTTP range requestsを使ってシンプルかつ低コストに配信される
  • 導入資料としてGet Startedquick start tutorialを提供している

PMTilesと地図の構成方式

OpenStreetMapベースのベースマップ

  • ProtomapsはOpenStreetMapとその他のオープンデータソースから作られたベースマップタイルセットを維持している
    • インタラクティブなWeb地図でOSMを採用しやすくする経路として使える
    • 完全なplanetファイルを無料でダウンロードすることも、CLIで必要な地域だけを抽出することもできる
    • Download your areaから地域抽出を始められる
  • 大きなファイルを自分で管理したくないユーザーは、CDNキャッシュベースのベースマップタイルAPIを利用できる
    • 非商用利用は無料
    • 商用利用にはGitHub Sponsorが必要
    • Maps APIをコードから利用できる

活用シナリオ

  • 企業は既存のクラウドストレージを使ってサイト地図埋め込みのフルスタック制御を確保し、月に数百ドル規模の地図コストを数セント単位まで削減できる
  • ニュースルームはサードパーティAPIに依存せず、長期間動作するカスタム地図でインタラクティブなストーリーを作れる
  • 科学分野ではPMTilesで地球規模の気候・環境データを可視化し、オープンソースツールと地図フロントエンドでデータエクスプローラーを構築できる
  • 政府機関はBig Techへの依存を減らしつつ、市民のプライバシーとGDPR準拠を維持し、独占的なGISの無料代替を利用できる

2件のコメント

 
GN⁺ 2023-10-24
Hacker Newsのコメント
  • Protomapsの pmtilesツールで、San Francisco南方のHalf Moon Bay周辺だけを切り出した地図を作ってみた
    最新のmacOS向けGoバイナリは https://github.com/protomaps/go-pmtiles/releases から入手し、おおよそのバウンディングボックスは http://bboxfinder.com/#37.373977,-122.593346,37.570977,-122.... で探した
    実行したコマンドは pmtiles extract https://build.protomaps.com/20231023.pmtiles hmb.pmtiles \ --bbox=-122.593346,37.373977,-122.400055,37.570977 で、生成された 2MBのhmb.pmtileshttps://maps.protomaps.com/ の「drop zone」にドラッグ&ドロップすると、OpenStreetMapのメタデータや建物の輪郭レベルまでズームできる詳細な地図が表示された
    2MBでここまでできるのは本当に印象的で、ファイルはこちら: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...

    • これをデモ https://simonw.github.io/hmb-map/ とブログ記事 https://til.simonwillison.net/gis/pmtiles にしておいた
    • 本当に素晴らしい。地域事業者に役立ちそうに見える
      通常はGoogle Mapsを埋め込むが、地域周辺の地図だけで十分で、より安く済むことも多そう
    • 同じ方法で Gran Canariaの地図を作ったところ15MBだった
      ユーザーがファイル全体をダウンロードすることもないのでかなり良さそうで、静的サイトに地図を入れてみるのが楽しみ
    • 技術サポートの質問ではないが、なぜ自分の環境ではうまくいかないのか分からない
      リンク先のpmtileファイルは動作するが、自分で作ったより小さいファイルは動作しない。それでも、プロジェクト用の地図を得るという考え方自体は素晴らしい
  • Tilemillのアルファアクセス権をもらった頃からMapboxを熱心に使ってきたが、自分の見方では、これはベクタータイルとMapbox GL / Map GL以降のオープン地図分野で最も重要な貢献だ
    MapboxはMTSでタイル生成への道を開いてはいたが、強力な一方で複雑すぎて高価だった。Tippecanoeでタイルを生成することはできたが、それでもベクタータイルのホスティングは悩みの種で、PMTilesを使えばMapboxよりもベクタータイルのホスティングがより簡単で便利になり、コストも1桁以上低くできる可能性がある
    派手な投影法や3D対応が不要で、MapLibreで十分なら特にそうだ。Feltも内部的にPMTileのアプローチを使っている主要サービスの一つに見え、Tippecanoeへ継続的に投資している点も素晴らしい。Mapboxの焦点が車載ナビゲーションへ移りつつあるように見える中で、新しい場所から破壊的イノベーションが出てくるのはうれしいし、さらに驚くべきなのは、これが1人チームから生まれたという点だ
    PMTilesの登場は、DuckDBの空間クエリ対応と相まって多くの革新を生みそうだ。大きなGeoParquetファイルをクエリ・処理し、高速に生成したPMTilesとしてストリーミングできれば、かなり強力なユースケースが可能になる

  • ジャーナリスト開発者たちのオンラインコミュニティを眺めているが、そこではPMTilesを、カスタムスタイルの地図タイルを自前ホスティングするコスト削減方法として期待している人たちがいる
    例えば「How The Post is replacing Mapbox with open source solutions」https://www.kschaul.com/post/2023/02/16/how-the-post-is-repl... は読む価値がある

    • 報道機関は、このデータが正確だとどうやって分かるのだろう?
    • 面白そうなコミュニティに聞こえる。どこか共有できる?
  • 気になる人のために書いておくと、OSMから派生したサンプルPMTileファイル protomaps-basemap-opensource-20230408.pmtiles のサイズは 103GB
    https://docs.protomaps.com/basemaps/downloads

    • 今は 107GB
      日次・週次・月次の基準ファイルについて、差分だけをダウンロードして適用できるとよさそう
    • こういうものは Bittorrent でダウンロードするのにぴったりの種類だ
    • タイル圧縮には何を使っているのだろう? AVIFでもっと小さくできるだろうか? あるいはテキスト用にAVIF+SVGオーバーレイはどうだろう?
    • まさにこれが気になっていた。かなり妥当なサイズと言える
  • 「Google Maps APIには十分な無料枠があるが、地図のロードが30,000回を超えると料金が高くなる。Protomapsは最初からセルフホストするシステムとして設計されており、クラウドストレージ上の100%静的なバックエンドとして動作するため、ストレージと転送のコストだけを負担すればよい。中程度の利用量では数セント程度で済む可能性がある」という点が興味深い
    推奨ホスティング構成とGoogle Mapsのコスト比較、そしてどの時点でコスト線が交差するのかを見てみたい

    • FAQでは見つけられなかったが、中規模の国のPMTilesファイルサイズがどの程度なのか分かると面白そう
      100%最新である必要がなく、特定地域だけで使う地図なら、セルフホストするには本当に魅力的な方式に見える。年に一度ファイルを「再コンパイル」して静的ファイルホスティングに上げれば、外部依存がほとんどない簡単な手順になりそう
      追記: 全世界版の公式ダウンロードリンク[1]を見つけたが、100GBを少し超えている。そうすると私の疑問への答えは「数百MBから数GB」くらいになりそうで、この程度ならまったく問題なさそう
      [1] https://docs.protomaps.com/basemaps/downloads
    • Cloudflare基準では、100GBのホスティングは$1、リクエスト1,000万件は$0.36
      Protomapsのドキュメントを読むと、Cloudflare CDNでリクエストをキャッシュする方法が説明されており、キャッシュ期間ごとに各タイルリクエストのコストを一度だけ払えばよい。かなり安い
      以前のProtomaps投稿のタイトルは「Serverless maps at 1/700 the cost of Google Maps API」だった
  • Protomaps創業者のBrandonが数か月前にGeomobポッドキャストに出演していた: https://thegeomob.com/podcast/episode-176

  • 私にとって最も興味深い部分はPMTiles
    「PMTilesは、タイルデータのピラミッドのための単一ファイルアーカイブ形式である。PMTilesアーカイブはS3のようなストレージプラットフォームにホストでき、低コストで管理不要の地図アプリケーションを可能にする」
    「PMTilesは、Z/X/Y座標でアドレス指定されるタイルデータの汎用形式である。地図ベースマップのベクタータイル、リモートセンシング観測値、JPEG画像など、さまざまなデータを格納できる」
    「PMTilesリーダーはHTTP範囲リクエストを使い、PMTilesアーカイブ内から必要なタイルやメタデータだけをオンデマンドで取得する」
    「タイルとディレクトリの配置は、移動・ズーム時の追加リクエスト数を最小限に抑えるよう設計されている」
    https://docs.protomaps.com/pmtiles/

    • PMTilesはすごい。今年の夏、カナダ山火事ホットスポット地図を作っていて知った
      毎日CSVファイルを受け取り、ベクタータイルに変換してS3と同期し、それをmapbox-glの地図に表示していたが、最大のコストはS3のファイル操作だった。コストを下げるために強くクラスタリングし、タイル数を約75,000個まで減らしたものの、望んでいた更新頻度ではS3操作のコストだけで月$500かかっていた
      今はファイル群を単一のPMTilesファイルとして処理し、そのファイル1つだけを配布しているので、コストは数セント程度まで下がった
      公開用地図を作る可能性を大きく広げてくれたし、興味があれば2023年全体のカナダのホットスポットデータをここで見られる: https://lens.pathandfocus.com
    • PMTilesは、サーバーがHTTP範囲リクエストに対応している場合にクライアントが地図情報を効率よく使えるようにする、Cloud Optimized GeoTIFF(COG)のベクター版
      ベクター側の従来方式は、小さなファイルが非常に多いか、個別タイルを提供するフロントエンドが必要な大きなファイルだった
      今では、強力なマシンでOSMダンプを国単位のベースマップなら数分以内、大陸単位でも数時間以内に変換し、その後は通常のWebサーバーでカスタムスタイルシートと一緒にセルフホストできる
    • PMTilesを、厳密な意味での「地図タイル」ではない別の地理空間データを安く、粗く、速くホストする方法としても使えるだろうか? たとえば、かなり大きいが頻繁には更新されないPOIデータベースのようなもの
    • ベクターファイルなら、その場でスタイリングできるということ?
  • Maplibre[1] + PMTiles + Felt の tippecanoe[2] の組み合わせは、Web Mercator 投影法に縛られることを許容できるなら、セルフホストのWeb地図にとても優れています
    ほぼすべての地理空間データの元データは、GDAL[3] と tippecanoe で .pmtiles に変換できます: (.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtiles
    OpenStreetMap データには planetiler[4] があり、Maplibre と一緒に使える openmaptiles[5] スタイルもあります
    この組み合わせなら、オープンソースのデータパイプラインで、AWS S3+CloudFront や Cloudflare R2 上に数セントの費用でホスティングできる、よい出発点が得られます
    [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/
    ちなみに、GDAL/ogr2ogr のドキュメントはかなり読みにくいと感じるので、最初の例としてはこのようなコマンドを見るとよいです
    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/…

    • 地理空間/コンピュータサイエンスのスキルを伸ばしたい学生なのですが、これでどんな プロジェクト を作れるでしょうか?おすすめのよい出発点はありますか?
  • このプロジェクトに貢献したことがあり、会社でも 本番環境 で使っています
    本当に素晴らしく、Brandon もとても親切で、これまでに投入されたすべての作業に感謝しています

  • PMTiles を活用した サーバーレス地図 のデプロイで、かなりよい成果を出せました
    AWS CloudFront/Lambda@Edge/S3 へのデプロイに興味があるなら、https://github.com/serverlessmaps/serverlessmaps を見るとよいです