- Published on
ジオスペーシャル スタック 2026 完全ガイド — PostGIS・MapLibre・Mapbox・deck.gl・Kepler.gl・Protomaps・Overture Maps・H3・S2 深掘り
- Authors

- Name
- Youngju Kim
- @fjvbn20031
"地図は単なる可視化ではなく、座標・時間・メタデータを結合した地球上で最も豊かなデータ構造である。2026 年のジオスペーシャルは GIS 専門家だけの領域ではない。" — Overture Maps Foundation, 2025 Annual Report
ジオスペーシャル(Geospatial)スタックは 2020 年代初頭まで ESRI ArcGIS・Mapbox・Google Maps の 3 社が支配する領域でしたが、2022 年の Overture Maps 発足、2023 年の Protomaps と PMTiles の台頭、2024 年の deck.gl の Linux Foundation 移管を経て、急速にオープン化しました。2026 年 5 月現在、モダンなジオスペーシャル スタックはデータソース・レンダリング・DB・インデックス・ルーティング・ジオコーディングの 6 レイヤーに分化した豊かなエコシステムです。
本稿では OpenStreetMap、Overture Maps、Mapbox、Google Maps Platform、MapLibre GL JS、Mapbox GL JS v3、deck.gl、Kepler.gl、Leaflet、OpenLayers、CesiumJS、PostGIS 3.5、DuckDB Spatial、H3、S2、Geohash、OSRM、Valhalla、GraphHopper、pgRouting、Nominatim、Pelias、Photon、PMTiles、MVT、Cesium 3D Tiles、そして韓国・日本のリージョナル地図データまで一気に整理します。
1. 2026 年ジオスペーシャル スタック地図 — 6 レイヤー
ジオスペーシャル システムは役割に応じて 6 つの大きなレイヤーに分けられます。
| レイヤー | 代表的プロダクト | 役割 |
|---|---|---|
| Data Source | OpenStreetMap, Overture Maps, Mapbox, Google, Apple, HERE, TomTom | 道路・建物・POI などの原データ |
| Tile Format | MVT, PMTiles, XYZ, WMTS, Cesium 3D Tiles | サーバーからクライアントへの伝送形式 |
| Tile Server | TileServer GL, MapTiler, Stadia Maps, OpenMapTiles, GeoServer | タイルの生成とホスティング |
| Renderer | MapLibre GL JS, Mapbox GL v3, deck.gl, Leaflet, OpenLayers, CesiumJS | ブラウザでの描画ライブラリ |
| Spatial DB & Index | PostGIS, DuckDB Spatial, SpatiaLite, H3, S2, Geohash | 座標ベースの検索・結合・集計 |
| Service | OSRM, Valhalla, Nominatim, pgRouting, Mapbox Directions | ルーティング・ジオコーディング・マトリクスサービス |
データソースはさらに オープン(OpenStreetMap, Overture Maps) と 商用(Google, Apple, HERE, TomTom, Mapbox) に分かれ、レンダラーは 2D ベクター(MapLibre, Mapbox GL)、2D ラスター(Leaflet)、WebGL ビッグデータ(deck.gl, Kepler.gl)、3D Globe(CesiumJS) に分化します。選択は通常「データ量 × インタラクション × ライセンス」の 3 軸で決まります。
2026 年のキーワードは ベンダーロックイン脱出 です。2020 年に Mapbox GL JS v2 が BSD-3 から独占ライセンスへ移行した後、MapLibre フォークが事実上の標準となり、PMTiles はタイルサーバーのインフラそのものを単一の静的ファイルへ置き換えました。
2. OpenStreetMap — すべてのオープン地図のルーツ
OpenStreetMap(OSM、openstreetmap.org)は 2004 年に Steve Coast が始めた Wiki スタイルの地図データベースで、2026 年現在 1,100 万人以上の登録マッパーと 100 億以上のノードを持ちます。ライセンスは ODbL(Open Database License)— データ利用は自由ですが Share-Alike 条項があり、派生データセットも ODbL で公開する必要があります。
OSM のコアデータモデルは 3 つの基本要素しかありません。
- Node: 単一の緯度経度点(例: カフェの位置)
- Way: ノードの順序付きリスト(道路・建物の外枠)
- Relation: ノードと Way のグループ(地下鉄路線・行政区域)
各オブジェクトはキー・バリューのタグを持ちます。道路は highway=primary、建物は building=residential、カフェは amenity=cafe のように分類されます。タグスキーマは自由で数万種類のキーが存在しますが、コア 200 を知ればほとんどのクエリが可能です。
OSM データを取得する方法は 3 つあります。planet.osm 全体(pbf 圧縮で約 90GB、未圧縮 1.5TB)をダウンロード、Geofabrik(download.geofabrik.de)から国・地域単位の抽出を取得、または Overpass API(overpass-api.de)でクエリ。大規模分析は通常 pbf を PostGIS に取り込み SQL で扱います。
OSM の最大の弱点はデータ品質のばらつきです。ソウル・東京・ロンドンのような大都市はほぼ完璧ですが、韓国の地方都市や東南アジアの一部は道路名の欠落が珍しくありません。そのため商用サービスでは Overture Maps や Mapbox で補強します。
3. Overture Maps — ビッグテックのオープン地図コンソーシアム
Overture Maps(overturemaps.org)は 2022 年 12 月に AWS・Microsoft・Meta・TomTom の 4 社で発足し、2023 年に Esri が合流した Linux Foundation 配下のプロジェクトです。目的は「OSM の自由さ + 商用品質 = 完全オープンな基盤地図データ」を作ることです。2024 年 4 月の初の GA リリース以降、四半期ごとに新リリースを公開しており、2026 年 5 月現在 v2026.04.30 が最新です。
Overture はデータを 5 つのテーマに整理します。
- Places: POI(Point of Interest)— レストラン・店舗・公共施設 約 5,000 万件
- Buildings: 世界の建物フットプリント 約 28 億件
- Transportation: 道路・鉄道ネットワーク(OSM ベース + 補強)
- Base: 行政区域・土地被覆・インフラ
- Addresses: 住所データ(2024 年追加)
フォーマットは GeoParquet — Apache Parquet のジオスペーシャル拡張。分散クエリエンジン(DuckDB, BigQuery, Athena)が直接照会でき、S3 にホスティングされたファイルを partial-read で取得できるため、ペタバイト級のデータを効率的に扱えます。
-- DuckDB で Overture Maps Places を直接クエリ(ダウンロード不要)
INSTALL spatial;
INSTALL httpfs;
LOAD spatial;
LOAD httpfs;
SELECT
names.primary AS name,
categories.primary AS category,
ST_AsText(geometry) AS location
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-04-30.0/theme=places/type=place/*')
WHERE bbox.xmin BETWEEN 139.7 AND 139.8
AND bbox.ymin BETWEEN 35.6 AND 35.7
AND categories.primary = 'restaurant'
LIMIT 100;
Overture の最大の価値は GERS(Global Entity Reference System) です。全オブジェクトに永続 ID を付与し、OSM・商用データ・Wikipedia など異種データセットを連結できます。2026 年には KAKAO Mobility・Mapbox・Esri といった商用企業も自社データに GERS ID を付与し始めました。
4. Mapbox vs Google Maps Platform — 商用地図の二強
商用地図市場は事実上 Mapbox と Google Maps Platform の二強構図です。2026 年の価格・機能の違いを整理すると以下のようになります。
| 項目 | Mapbox | Google Maps Platform |
|---|---|---|
| 無料枠 | 月 5 万回 ロード | 月 $200 クレジット(約 28,500 ロード) |
| 1,000 ロード単価 | $0.50 | $7(Dynamic Maps) |
| スタイル カスタマイズ | Studio で 100% 自由 | Cloud-based Style のみ部分的 |
| オフライン | Mapbox SDK 専用 | 限定的 |
| 衛星画像 | Mapbox Satellite | Google Satellite(Photorealistic 3D) |
| ルーティング | Directions API | Routes API |
| ジオコーディング | Geocoding API | Geocoding API |
| 自動運転データ | Mapbox AVS | Google HD Maps |
Mapbox(mapbox.com)は 2010 年創業、2020 年に GL JS v2 を独占ライセンスへ移行しましたが、データカタログと Studio デザインツールは依然として業界トップクラスです。2024 年に Mapbox GL JS v3 がリリースされ 3D 地形・ライティング・モデルインポートが追加され、2025 年の v3.10 で PMTiles と deck.gl の直接統合が入りました。
Google Maps Platform(mapsplatform.google.com)は価格は高いですが、データ品質と Street View のような差別化資産が強力です。2024 年にリリースされた Photorealistic 3D Tiles は Cesium 3D Tiles 標準に準拠するグローバル 3D 地形で、CesiumJS・deck.gl・MapLibre のどれでもレンダリング可能です。
両社とも 2024 年以降の値上げが続いており、PMTiles + MapLibre + Overture 構成での自己ホスティングが急速に増えています。
5. MapLibre GL JS — Mapbox から分岐したオープン標準
MapLibre GL JS(maplibre.org)は 2020 年 12 月、Mapbox GL JS v1.13 の最後の BSD-3 バージョンからフォークされたオープンソースプロジェクトです。2026 年現在 v5.0.0 が最新で、AWS・Meta・Microsoft・Stadia・MapTiler が中核スポンサーです。
API は Mapbox GL JS とほぼ同一なので、マイグレーションは単純です。import mapboxgl from 'mapbox-gl' の一行を import maplibregl from 'maplibre-gl' に変え、商用 Mapbox スタイル/タイル URL を自前またはオープンタイルサービス URL に置き換えれば終わりです。
import maplibregl from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
const map = new maplibregl.Map({
container: 'map',
style: 'https://api.maptiler.com/maps/streets-v2/style.json?key=YOUR_KEY',
center: [139.7670, 35.6814], // 東京駅 LngLat
zoom: 12,
pitch: 45,
bearing: -17.6,
})
// 3D 建物レイヤーを追加
map.on('load', () => {
map.addLayer({
id: '3d-buildings',
source: 'openmaptiles',
'source-layer': 'building',
type: 'fill-extrusion',
minzoom: 14,
paint: {
'fill-extrusion-color': '#aaa',
'fill-extrusion-height': ['get', 'render_height'],
'fill-extrusion-base': ['get', 'render_min_height'],
'fill-extrusion-opacity': 0.8,
},
})
})
MapLibre の強みは 完全オープンソース、API キー不要の自己ホスティング、Mapbox GL 互換 の 3 点です。弱点は Mapbox Studio 相当のデザインツールがない ことと、モバイルネイティブ SDK が Mapbox に一歩遅れる こと。2025 年リリースの MapLibre Native v11 で iOS/Android の差はかなり縮まりました。
6. Mapbox GL JS v3 — 3D ライティングとモデルインポート
Mapbox GL JS v3 は 2023 年 9 月に発表されたメジャーアップデートで、単純な 2D ベクター地図を超えてゲームエンジンに近い 3D レンダリングをサポートします。2026 年 5 月現在 v3.10 が最新です。
v3 の新機能の核は次のとおりです。
- Mapbox Standard スタイル: 時間帯・天気に応じて動的に変わるベースマップ
- Dynamic Lighting: 太陽位置・時刻を反映した影とライティング
- 3D Models: glTF/glb を地図上に配置(POI マーカーを 3D モデルに置換)
- Globe Projection: ズームアウト時に自動で球体投影
- Atmospheric Effects: 霧・大気遠近法・星のような環境効果
- Custom Layers(WebGL/WebGPU): deck.gl・Three.js コードを直接挿入
ライセンス料は GL JS v3 利用時に月 5 万ロードまで無料、以降 $0.50/1,000 ロード — v2 と同じです。ただし Mapbox Standard スタイルは別途トラッキングが入るため自己ホスティング不可です。
MapLibre vs Mapbox GL v3 の選択基準は明確です。商用使用量が少なくデザイン自由度が重要 → Mapbox、使用量が大きいか自己ホスティングが重要 → MapLibre。ゲーム/AR のような視覚効果中心なら Mapbox、インフラ中心なら MapLibre が一般的な答えです。
7. deck.gl — WebGL 大規模データ可視化
deck.gl(deck.gl)は Uber が 2016 年にオープンソース化、2022 年に Linux Foundation へ移管した WebGL ベースのジオスペーシャル可視化ライブラリです。2026 年 5 月時点で v9.1 が最新で、核心となる強みは 数百万〜数億ポイントを 60fps でレンダリング する GPU 最適化です。
deck.gl の核心概念は Layer — ScatterplotLayer・LineLayer・HexagonLayer・GridLayer・H3HexagonLayer・TripsLayer・Tile3DLayer といった 80 余りの組み込みレイヤーがあり、すべて GPU 加速されます。他の地図ライブラリと異なり、deck.gl 自体はベースマップを描画せず、MapLibre/Mapbox/Google Maps の上にオーバーレイとして動作します。
// deck.gl + MapLibre で 100 万ポイントを可視化
import { Deck } from '@deck.gl/core'
import { ScatterplotLayer } from '@deck.gl/layers'
import maplibregl from 'maplibre-gl'
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [-122.4194, 37.7749],
zoom: 11,
})
const deck = new Deck({
canvas: 'deck-canvas',
initialViewState: {
longitude: -122.4194,
latitude: 37.7749,
zoom: 11,
pitch: 30,
},
controller: true,
layers: [
new ScatterplotLayer({
id: 'taxi-pickups',
data: 'https://example.com/taxi-1m.json',
getPosition: (d) => [d.lon, d.lat],
getRadius: 50,
getFillColor: [255, 140, 0, 180],
pickable: true,
}),
],
})
deck.gl のもう一つの強みは React 統合(@deck.gl/react)と Jupyter 統合(pydeck)です。データサイエンティストは Python でプロトタイピングし、その成果物をそのまま Web アプリへ移せます。2024 年に追加された WebGPU バックエンドは WebGL 比 2〜3 倍のレンダリング性能を示します。
8. Kepler.gl — deck.gl の上のノーコード UI
Kepler.gl(kepler.gl)は Uber が 2018 年に発表したノーコード ジオスペーシャル分析ツールで、deck.gl をエンジンとする React アプリケーションです。2026 年現在 v3.1 が最新で、アナリストがコードなしでデータをドラッグ&ドロップで可視化できます。
対応データフォーマットは CSV・JSON・GeoJSON・Shapefile・KML・Arrow・GeoParquet などほぼすべての標準形式。一度アップロードすればカラム型を自動推論し、適切なレイヤータイプ(Point・Heatmap・Hexbin・Arc・Line・Polygon)を提案します。
Kepler のキラーフィーチャーは 時間アニメーション です。タイムスタンプ付きデータをアップロードすると自動的にタイムライン UI が生成され、時間に応じた変化を動画のように再生できます。交通量・災害・感染症データ分析の事実上の標準ツールです。
自己ホスティングが可能で(@kepler.gl/react で埋め込み)、Uber が運営する無料ホスティング(kepler.gl/demo)もあります。ただしホスト版はデータがブラウザにのみ留まりアップロードされないため、機密データにも安全です。
9. Leaflet — 最もシンプルで最も長寿の Web 地図
Leaflet(leafletjs.com)は 2011 年に Vladimir Agafonkin が作成した JavaScript 地図ライブラリで、2026 年現在 v1.9.4 が安定版です。15 年近くほとんど変わっておらず、そのシンプルさと安定性で今も広く使われています。
Leaflet は ラスタータイル(XYZ・TMS・WMTS)を中心に動作します。ベクタータイル対応はプラグイン(leaflet.vectorgrid)で可能ですが第一級市民ではなく、高解像度ズームや動的スタイル変更が重要なら MapLibre が正解です。
import L from 'leaflet'
import 'leaflet/dist/leaflet.css'
const map = L.map('map').setView([35.6814, 139.7670], 13)
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'OpenStreetMap',
}).addTo(map)
L.marker([35.6814, 139.7670])
.addTo(map)
.bindPopup('東京駅')
.openPopup()
Leaflet の強みは バンドルサイズ約 40KB、API のシンプルさ、豊富なプラグインエコシステム(1,200 以上)です。短所は GPU 加速がなく、大容量データ(1 万ポイント超)で遅くなる点。政府・公共・小規模ビジネス向け地図は今も Leaflet が答えです。
10. OpenLayers — エンタープライズ OGC 標準サポート
OpenLayers(openlayers.org)は 2006 年に MetaCarta が始めた JavaScript 地図ライブラリで、2026 年現在 v10.5 が最新です。Leaflet より重い(約 250KB)ですが OGC(Open Geospatial Consortium)標準を最も広くサポートしており、政府・公共・エンタープライズ GIS では事実上の標準です。
対応フォーマットは WMS・WMTS・WFS・WCS・XYZ・TMS・GeoJSON・TopoJSON・KML・GML・GPX・MVT — ほぼすべてのジオスペーシャル標準。座標系も EPSG コード単位で自由に変換可能です(proj4js 内蔵)。
import 'ol/ol.css'
import { Map, View } from 'ol'
import TileLayer from 'ol/layer/Tile'
import { OSM, TileWMS } from 'ol/source'
import { fromLonLat } from 'ol/proj'
const map = new Map({
target: 'map',
layers: [
new TileLayer({ source: new OSM() }),
new TileLayer({
source: new TileWMS({
url: 'https://www.gis.go.kr/wms',
params: { LAYERS: 'cadastral', TILED: true },
}),
}),
],
view: new View({
center: fromLonLat([139.7670, 35.6814]),
zoom: 14,
projection: 'EPSG:3857',
}),
})
OpenLayers は GeoServer・MapServer のような OGC サーバーと相性が良いです。韓国の V-World、日本の GSI、欧州の INSPIRE のような政府 GIS ポータルはほぼ OpenLayers + GeoServer の組み合わせです。
11. CesiumJS — 3D Globe と地球の可視化
CesiumJS(cesium.com/platform/cesiumjs)は 2011 年に AGI が作成した 3D 地球可視化ライブラリで、2026 年現在 v1.130 が最新です。NASA・航空宇宙・自律飛行・デジタルツイン分野で標準です。
核心は Cesium 3D Tiles — 2017 年に Cesium が提案し 2019 年に OGC 標準となった 3D ジオスペーシャル データフォーマット。都市全体の 3D ビルディング・点群(Point Cloud)・メッシュを LoD(Level of Detail)でストリーミングします。Google Photorealistic 3D Tiles・Bentley・Esri ArcGIS はすべてこのフォーマットに準拠します。
import { Viewer, Cesium3DTileset, Cartesian3, IonResource } from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'
const viewer = new Viewer('cesiumContainer', {
terrainProvider: await createWorldTerrainAsync(),
})
// Google Photorealistic 3D Tiles をロード
const tileset = await viewer.scene.primitives.add(
await Cesium3DTileset.fromIonAssetId(2275207)
)
viewer.camera.flyTo({
destination: Cartesian3.fromDegrees(139.7670, 35.6814, 1500),
})
CesiumJS はベースマップを直接描画せず、Cesium ion(cesium.com/ion)ホスティングサービスまたは自前 3D Tiles サーバーを使用します。無料枠はありますが大容量利用は高額になるため、自己ホスティングが普通です。デジタルツイン市場の拡大で 2025 年から市場シェアが急速に伸びました。
12. PostGIS 3.5 — ジオスペーシャル DB の標準
PostGIS(postgis.net)は 1998 年に Refractions Research が作った PostgreSQL 用空間拡張で、2026 年 5 月現在 v3.5 が最新です。ジオスペーシャル DB 市場で 事実上の標準 — Mapbox・Foursquare・KAKAO Mobility・Uber などはどこかで必ず PostGIS を使っています。
PostGIS は OGC SQL/MM 標準に準拠するため関数名が標準化されています。主要関数は次のとおりです。
-- 1) 2 点間の距離(メートル単位、EPSG:4326)
SELECT ST_Distance(
ST_GeographyFromText('POINT(126.978 37.5665)'), -- ソウル市庁
ST_GeographyFromText('POINT(139.767 35.6814)') -- 東京駅
); -- 約 1,158,300 メートル
-- 2) ポリゴン内部のポイント検索
SELECT * FROM poi
WHERE ST_Within(
geom,
ST_MakeEnvelope(139.6, 35.5, 139.9, 35.8, 4326)
);
-- 3) 最も近い N 件(KNN インデックス使用)
SELECT name, ST_Distance(geom, target) AS distance
FROM cafes
ORDER BY geom <-> ST_GeomFromText('POINT(139.767 35.6814)', 4326)
LIMIT 10;
-- 4) クラスタリング(DBSCAN)
SELECT
ST_ClusterDBSCAN(geom, eps := 100, minpoints := 5) OVER () AS cluster_id,
name
FROM incidents;
PostGIS の強みは GIST インデックス — R-tree のバリアントで空間クエリを O(log n) で処理します。一行の CREATE INDEX idx_geom ON poi USING GIST (geom) で 100 万行テーブルの空間クエリも 1ms 以内に収まります。
3.5 の新機能は ベクタータイル直接生成(ST_AsMVT)、ラスターのクラウド最適化、GeoParquet read/write です。データベースから直接 MVT タイルを生成しクライアントへ送れば、別途タイルサーバーなしで動的地図が可能です。
13. DuckDB Spatial — 分析用組込空間 DB
DuckDB Spatial(duckdb.org/docs/extensions/spatial)は 2023 年にリリースされた DuckDB の空間拡張で、2026 年の v1.4 時点で最も急成長中の GIS ツールです。PostGIS と同じ OGC 関数をほぼすべてサポートしつつ、単一ファイル組込 + Parquet/GeoParquet 直接クエリ という差別化があります。
DuckDB Spatial のキラーユースケースは Overture Maps のような大容量 GeoParquet をダウンロードなしでクエリ することです。
-- DuckDB で Overture Maps と自前データを結合(両方とも S3 から直接)
INSTALL spatial;
INSTALL httpfs;
LOAD spatial;
LOAD httpfs;
WITH my_stores AS (
SELECT id, name, lon, lat
FROM read_csv('s3://my-bucket/stores.csv')
),
nearby_places AS (
SELECT
s.id AS store_id,
p.names.primary AS poi_name,
p.categories.primary AS category,
ST_Distance_Sphere(
ST_Point(s.lon, s.lat),
ST_GeomFromWKB(p.geometry)
) AS distance_m
FROM my_stores s,
read_parquet('s3://overturemaps-us-west-2/release/2026-04-30.0/theme=places/*') p
WHERE p.bbox.xmin BETWEEN s.lon - 0.01 AND s.lon + 0.01
AND p.bbox.ymin BETWEEN s.lat - 0.01 AND s.lat + 0.01
)
SELECT * FROM nearby_places WHERE distance_m < 500;
DuckDB Spatial はアナリストのノート PC でペタバイト級データをクエリできる データサイエンティストの PostGIS です。トランザクション・リアルタイム更新が必要なら PostGIS、バッチ分析なら DuckDB が一般的な選択です。
14. H3 — Uber のヘキサゴナル空間インデックス
H3(h3geo.org)は Uber が 2018 年にオープンソース化した 階層的ヘキサゴナル空間インデックス システム です。地球表面を正三角形 + ヘキサゴン 122 個から始めて 16 段階で再帰分割します。2026 年現在 H3 v4.2 が最新で、ほぼすべてのモビリティ・物流企業が H3 を使います。
H3 の核心的利点は すべてのセルがほぼ同じ面積と距離 — 隣接セル中心との距離が一定で、平均・集計計算がきれいに行えます。正方形グリッドと違い、ヘキサゴンは隣接が 6 個で等距離なので、フロー分析にも適します。
各 H3 セルは 64 ビット整数で表現され、解像度(0〜15)と位置の両方をエンコードします。解像度別の平均面積は次のとおりです。
| Resolution | 平均ヘキサゴン面積 | 平均エッジ長 | 用途 |
|---|---|---|---|
| 0 | 4.25M km² | 1,107km | 大陸単位 |
| 5 | 252 km² | 8.5km | 大都市圏 |
| 7 | 5.16 km² | 1.2km | 町単位 |
| 9 | 0.105 km² | 174m | ブロック単位 |
| 11 | 2,150 m² | 25m | 建物単位 |
| 15 | 0.9 m² | 0.5m | ピクセル単位 |
import { latLngToCell, cellToBoundary, gridDisk, cellArea } from 'h3-js'
// 1) 緯度経度 → H3 セル ID(解像度 9、~150m ヘキサゴン)
const tokyoStation = latLngToCell(35.6814, 139.7670, 9)
// → '8930e1da41bffff' 相当
// 2) セル境界座標(地図に描画)
const boundary = cellToBoundary(tokyoStation)
// → [[lat, lng], [lat, lng], ...] 6 つの頂点
// 3) 周辺 1 リング(隣接 6 個)を取得
const neighbors = gridDisk(tokyoStation, 1)
// 4) 面積計算
const area = cellArea(tokyoStation, 'm2')
H3 の真の価値は 空間集計の効率性 です。100 万件の GPS ポイントをヘキサゴン別に集計するには GROUP BY h3_cell 一回で済み、解像度を 1 段階下げてズームアウト集計も単純です。Uber の ETA 計算、Foursquare の訪問頻度分析、KAKAO Mobility の需要予測がすべて H3 ベースです。
15. S2 — Google のクアッドツリーベース空間インデックス
S2(s2geometry.io)は Google が 2017 年にオープンソース化した空間インデックスシステムで、地球を正六面体に投影し各面をクアッドツリーで分割します。Google Maps・Google Earth・Niantic の Pokemon GO/Ingress はすべて S2 の上で動作します。
S2 と H3 を比較すると次のような特性を持ちます。
| 特性 | S2 | H3 |
|---|---|---|
| 形状 | 四角形(クアッドツリー) | ヘキサゴン |
| 解像度段階 | 30(0〜30) | 16(0〜15) |
| セルサイズ変動 | 緯度により変動 | ほぼ均一 |
| ID | 64 ビット整数 | 64 ビット整数 |
| Hilbert curve 整列 | あり | なし |
| 隣接数 | 4 | 6 |
S2 の核心的強みは Hilbert curve ベースの ID — 隣接 ID は空間的に近接するセルであることが保証され、データベース範囲クエリ(WHERE s2_id BETWEEN x AND y)が効率的です。H3 にはこの保証がなく、別途 R-tree インデックスが必要です。
ゲームのように座標を整数で扱う環境、Google Maps との互換性が重要な環境では S2 が答えです。それ以外の大半のデータ分析は H3 のユースケースのほうが豊富です。
16. ルーティングエンジン — OSRM, Valhalla, GraphHopper, pgRouting
ルーティング(Routing)は「A から B への最短経路を求める」ことですが、道路グラフの規模が数億ノードに達するため、リアルタイム計算は専用アルゴリズム + 前処理が必須です。2026 年の主要オープンソース ルーティングエンジンは次のとおりです。
| エンジン | 言語 | 特徴 | ライセンス |
|---|---|---|---|
| OSRM | C++ | Contraction Hierarchies、最速(1ms) | BSD-2 |
| Valhalla | C++ | マルチモーダル(徒歩・自転車・自動車)、動的オプション | MIT |
| GraphHopper | Java | Spring/JVM 親和、自転車・徒歩最適化 | Apache 2.0 |
| pgRouting | C(Postgres) | PostGIS と同じ DB で SQL ルーティング | GPL-2 |
| OpenRouteService | Java(GraphHopper fork) | HeiGIT が運営、公共 API を提供 | MIT |
OSRM(project-osrm.org)は最速のルーティングエンジンで、Contraction Hierarchies(CH)アルゴリズムで世界の道路網を 1ms 以内にルーティングします。短所はオプションが乏しい点 — 通行料回避・時間帯別交通のようなカスタムが難しいです。
Valhalla(valhalla.github.io)は Mapbox が 2015 年に作り、2021 年に Mapzen が買収、2024 年に再びオープンソースコミュニティへ移管されたルーティングエンジンです。徒歩・自転車・自動車を単一グラフで処理し、リクエスト時の動的オプション(道路回避・時間重み付け)が可能なので、モビリティ企業が最も多く使います。
pgRouting(pgrouting.org)は PostGIS の上で動作する SQL ルーティングエンジンです。速くはないですが、自前の道路データに SQL で直接ルーティングを接続できるため、社内物流システムで有用です。
-- pgRouting で 2 ノード間の最短経路
SELECT * FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM road_segments',
source_node := 1234,
target_node := 5678,
directed := true
);
17. ジオコーディング — Nominatim, Pelias, Photon
ジオコーディング(Geocoding)は「住所 → 座標」または「座標 → 住所(逆ジオコーディング)」の変換です。商用 API(Google・Mapbox)は高額なので自己ホスティングが一般的です。
Nominatim(nominatim.org)は OSM 公式ジオコーダーで、PostGIS ベースの全文検索を使用します。シンプルかつ安定ですが検索品質は弱く、「東京駅」より「東京駅 中央線」のようなフルテキストのほうが良く動作します。
Pelias(pelias.io)は Mapzen が作り 2018 年にオープンソース化されたモジュラージオコーダーで、OSM + Overture Maps + Geonames + WhosOnFirst の複数ソースを統合します。Elasticsearch ベースで検索品質は最高ですが、インフラが重いです。
Photon(photon.komoot.io)はドイツの Komoot が作った OSM ベースのジオコーダーで、Elasticsearch + Java + Lucene の構成です。Nominatim より速く結果品質も良いため、インディー開発者が最も多く使います。
// Photon 公開インスタンスでジオコーディング
const res = await fetch(
'https://photon.komoot.io/api/?q=東京駅&limit=5&lang=ja'
)
const json = await res.json()
// json.features は GeoJSON FeatureCollection
商用 API と比較して自己ホスティングには 品質差 があります。Mapbox Geocoding は同義語・誤字・多言語をうまく処理し、Google Geocoding はビジネス位置を上手に見つけます。精度が重要なら商用、コストが重要なら Photon が一般的選択です。
18. タイルフォーマット — MVT, PMTiles, XYZ, WMTS
タイルフォーマットは、データをクライアントへどう届けるかの標準です。2026 年の主要フォーマットは次のとおりです。
MVT(Mapbox Vector Tile) は 2014 年に Mapbox が作り 2017 年に OGC 標準となったベクタータイルフォーマットです。Protocol Buffers ベースでエンコードされ、z/x/y のディレクトリ構造で配置されます。クライアントはズームレベルに合うタイルをリクエストすれば中身の全オブジェクトを受け取り GPU でレンダリングします。
PMTiles(protomaps.com/docs/pmtiles)は 2022 年に Protomaps の Brandon Liu が作った単一ファイル タイルフォーマットです。ディレクトリ構造で数百万ファイルを作る代わりに、すべてのタイルを 1 つの大きなファイルに入れ HTTP Range Request で必要部分だけを取得します。結果として タイルサーバーなしで S3/R2/GCS の静的ホスティングだけでグローバル地図が可能 になります。
// PMTiles + MapLibre — タイルサーバーなしでグローバル地図
import maplibregl from 'maplibre-gl'
import { Protocol } from 'pmtiles'
const protocol = new Protocol()
maplibregl.addProtocol('pmtiles', protocol.tile)
const map = new maplibregl.Map({
container: 'map',
style: {
version: 8,
sources: {
protomaps: {
type: 'vector',
url: 'pmtiles://https://example.com/planet.pmtiles',
},
},
layers: [/* ... */],
},
})
XYZ/TMS は最も古いラスター タイルフォーマットで、{z}/{x}/{y}.png URL パターン。WMTS は OGC 標準のラスター タイルプロトコルで、政府 GIS ポータルで一般的です。
2026 年のトレンドは PMTiles への急速な移行 — Protomaps は全世界の OSM データを単一の PMTiles ファイル(約 100GB)で提供しており、Overture Maps も PMTiles 配布を開始しました。
19. Protomaps — PMTiles とオープン グローバル地図
Protomaps(protomaps.com)は 2022 年に Brandon Liu が始めたオープンソースプロジェクトで、PMTiles フォーマットの発明者です。2026 年現在 PMTiles は事実上、次世代タイル標準として定着しました。
Protomaps の核心的価値提案は タイルサーバーなしでグローバル地図をホスティング です。伝統的構成は OSM → PostGIS → tilemaker → TileServer GL → CDN のような重いパイプラインでしたが、Protomaps は OSM → planetiler → planet.pmtiles → S3/R2 へ単純化します。コストも月数千ドルだったものが月数十ドルへ落ちます。
Protomaps は 無料でホスティングされたグローバル PMTiles(protomaps.com/builds)も提供します。毎週 OSM 全体をビルドして約 100GB の PMTiles ファイルを R2 にアップロードし、誰でも直接ダウンロードしたり URL で参照できます。
Protomaps のもう一つの強みは Basemaps デザイン(protomaps.com/basemaps)です。8 種類の基本スタイル(light, dark, white, grayscale, black, naturalist, ...)を提供し、JSON 一行でカスタマイズ可能です。
20. 韓国地図 — V-World, Naver Maps, Kakao Maps
韓国は軍事安保上の理由から 1:5,000 以上の精密地図の海外搬出が制限されており、Google Maps・Mapbox のようなグローバルサービスの韓国データが不十分です。代わりに国土交通部 V-World と Naver/Kakao Maps が事実上の標準です。
V-World(vworld.kr)は国土交通部が運営する無料公共地図プラットフォームで、航空写真・地籍図・行政区域・新住所(道路名住所)など韓国公共 GIS データを OGC 標準(WMS, WFS, WMTS)で提供します。日 100 万件まで無料、それ以上は申請後無料です。
Naver Maps API(navermaps.github.io)は Naver が提供する地図 SDK で、JS/iOS/Android/REST すべて対応します。無料枠後の単価は Google より約 30〜50% 安く、韓国 POI 品質が最も良いです。
Kakao Maps API(apis.map.kakao.com)は Kakao が提供する地図 SDK で、JS/iOS/Android/REST に対応します。KAKAO Mobility のデータが強く、道路・交通情報品質が優秀で、独自のルーティング API も豊富です。
// Naver Maps JS v3 — ソウル市庁マーカー
ncpClientId = 'YOUR_CLIENT_ID'
const map = new naver.maps.Map('map', {
center: new naver.maps.LatLng(37.5665, 126.9780),
zoom: 14,
})
new naver.maps.Marker({
position: new naver.maps.LatLng(37.5665, 126.9780),
map,
title: 'ソウル市庁',
})
3 サービスの強み・弱みのまとめは次のとおりです。
| 項目 | V-World | Naver Maps | Kakao Maps |
|---|---|---|---|
| 価格 | 無料(公共データ) | 一定枠まで無料、以降有料 | 一定枠まで無料、以降有料 |
| POI | 基本のみ | 最強 | 強 |
| 道路/交通 | 弱 | 強 | 最強 |
| 航空写真 | 強 | 強 | 強 |
| 地籍図 | 最強(公式) | なし | なし |
| 海外利用 | 可能 | 韓国中心 | 韓国中心 |
韓国向けサービスなら バックオフィス/公共 = V-World、コンシューマーアプリ = Naver/Kakao、グローバルアプリなら Mapbox/MapLibre + Overture Maps が一般的な答えです。
21. 日本地図 — 国土地理院(GSI), Yahoo, ZENRIN, MIERUNE
日本は韓国と違い海外搬出制限がないため Google Maps・Apple Maps のデータ品質が非常に良いですが、公共データと自前ソリューションのエコシステムも活発です。
国土地理院 GSI(gsi.go.jp、cyberjapandata.gsi.go.jp)は日本の国土地理院が運営する公共地図サービスで、地形図・航空写真・標高・火山活動データなどを WMTS/XYZ タイルで無料提供します。ライセンス表記をすれば商用利用も可能です。
Yahoo!Japan Maps API(developer.yahoo.co.jp/webapi/map)は Yahoo Japan が提供する地図 SDK です。日本 POI 品質が非常に良く、1 日 5 万回まで無料です。
ZENRIN(zenrin.co.jp)は日本最大の地図データ会社で、ほぼすべての日本自動車ナビゲーションのデータ提供者です。商用ライセンスが必要ですがデータ品質は日本国内で最強です。
MIERUNE(mierune.co.jp)は日本北海道拠点のオープン GIS 企業で、MapLibre・PMTiles・OSM ベースのソリューションを提供します。日本語サポートが強く、GSI データ統合ツールを無料公開しています。
// GSI 標準地図 + MapLibre
const map = new maplibregl.Map({
container: 'map',
style: {
version: 8,
sources: {
gsi: {
type: 'raster',
tiles: ['https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png'],
tileSize: 256,
attribution: '国土地理院',
},
},
layers: [{ id: 'gsi', type: 'raster', source: 'gsi' }],
},
center: [139.7670, 35.6814],
zoom: 12,
})
日本向けサービスなら 公共 = GSI、コンシューマー = Yahoo/Google/Apple、車載 = ZENRIN が一般的な分業です。
22. ユースケース — 物流・配達・不動産・自動運転
実際の産業でジオスペーシャル スタックがどう組み合わさるか、ケース別に見ます。
物流・配達: クーパン、Uber Eats、DoorDash は一般的に次の構成です。道路データ = OSM + 自前補強、ルーティング = Valhalla 自己ホスティング、可視化 = MapLibre + deck.gl、空間 DB = PostGIS、ETA 予測 = H3 セル単位 ML、ライダー/ドライバーのマッチング = S2 または H3 隣接検索。
不動産: Zillow、Redfin、Zigbang、Dabang は次の構成。ベースマップ = Mapbox または自前 PMTiles、POI = Overture + 自前クロール、徒歩距離 = OSRM、物件クラスタリング = deck.gl HexagonLayer、空間検索 = PostGIS + GIST インデックス。
自動運転: Tesla、Waymo、Cruise は独自 HD Map を作りますが、ベースラインは OpenStreetMap + 自前マッピング車両データで補強。車載可視化は通常独自エンジンですが、バックオフィスは CesiumJS + 3D Tiles。HERE Technologies と TomTom が自動運転用 HD Map 市場で強いです。
都市計画・デジタルツイン: シンガポール Virtual Singapore、ドバイ Smart Dubai、ソウル市デジタルツインはすべて CesiumJS + Cesium 3D Tiles + 自前 BIM データの組み合わせ。インフラシミュレーション、日射量分析、交通シミュレーションを 1 プラットフォームで行います。
緊急サービス: 米国 911、韓国 119 は GIS システムが核心。ESRI ArcGIS Pro + 自前道路データ + リアルタイム通信を組み合わせ、通報位置から最も近い出動リソースを H3/pgRouting でマッチングします。
23. 座標系と投影 — EPSG:4326 vs 3857 vs 5179
ジオスペーシャルで最もよくある罠は 座標系の混同 です。同じ地点でも座標系によって数値が完全に異なります。
EPSG:4326(WGS84) は GPS 標準座標系で、経度/緯度を度(degree)単位で表現します。(ソウル市庁 ≈ 126.978°E, 37.566°N)。すべての GeoJSON と OSM 原データは 4326 です。
EPSG:3857(Web Mercator) は Google Maps が導入した平面投影で、メートル単位の X/Y で表現します。(ソウル市庁 ≈ 14,135,830 m, 4,517,790 m)。ほぼすべての Web 地図タイルが 3857 でレンダリングされるため、クライアント側の距離計算によく使われます。
EPSG:5179(Korea 2000 / Unified TM) は韓国標準座標系で、V-World のような韓国公共 GIS が使用します。韓国域内での距離歪みが小さく、測量・地籍図に適します。
EPSG:6668(JGD2011) は日本測地系の標準で、日本の GSI が使用します。EPSG:4612(JGD2000) も日本でよく使われます。
座標変換は PostGIS ST_Transform(geom, target_srid) または JavaScript proj4js で処理します。
-- EPSG:5179(韓国 TM)→ EPSG:4326(WGS84)変換
SELECT
ST_AsText(ST_Transform(geom, 4326)) AS lonlat,
ST_AsText(geom) AS tm_5179
FROM cadastral
LIMIT 5;
24. マイグレーションシナリオ — Mapbox 脱出
2024 年以降、Mapbox から自己ホスティングまたは MapLibre へのマイグレーション事例が急増しています。一般的なマイグレーション手順は次のとおりです。
ステップ 1: SDK 置換 — mapbox-gl パッケージを maplibre-gl に置換。API 互換性が 95% 以上のため大半は import 文の変更だけで終わります。
ステップ 2: スタイル置換 — Mapbox 公式スタイル(mapbox://styles/mapbox/streets-v12)を MapTiler・Stadia・Protomaps のような代替スタイルへ変更。必要なら maputnik.github.io で独自スタイルをデザイン。
ステップ 3: タイルホスティング — Mapbox ホスト タイルの代わりに自前 PMTiles ホスティング。planetiler で OSM から PMTiles をビルド(〜3 時間)し、R2/S3 へアップロード。
ステップ 4: 補助 API 置換 — Mapbox Geocoding → Photon/Pelias、Mapbox Directions → OSRM/Valhalla、Mapbox Static Images → 自前サーバーまたは MapTiler。
コスト効果は劇的です。月 100 万ロード基準で Mapbox 費用は約 0.50/1,000)ですが、R2/S3 + Cloudflare ホスティングは月 $5〜20 程度です。ただし自前インフラ運用の負担は増えます。
25. まとめ — 2026 年のジオスペーシャル スタック選択
2026 年のジオスペーシャル スタックを一行でまとめると オープンソース優勢と単一ファイル PMTiles の普及 です。Mapbox 独占時代は終わり、Overture Maps + MapLibre + Protomaps + PostGIS の組み合わせでほぼすべてのユースケースを無料に近いコストで処理できます。
選択ガイドをまとめると次のとおりです。
| シナリオ | 推奨スタック |
|---|---|
| 小規模 Web 地図(訪問数少) | Leaflet + OSM タイル(パブリック) |
| モダン ベクター Web 地図 | MapLibre + MapTiler/Stadia + 自前スタイル |
| 大容量データ可視化 | MapLibre + deck.gl + H3 集計 |
| 3D シティ/デジタルツイン | CesiumJS + Cesium 3D Tiles |
| 自己ホスト グローバル地図 | Protomaps PMTiles + R2/S3 |
| 政府/公共 GIS | OpenLayers + GeoServer + WMS/WFS |
| 韓国向けサービス | Naver/Kakao Maps + V-World 補強 |
| 日本向けサービス | GSI + Yahoo/Mapbox + ZENRIN |
| データ分析 | DuckDB Spatial + Overture Parquet |
| 運用 DB | PostGIS + H3 インデックスカラム |
最後に強調したいのは データライセンスを忘れないでください です。OSM は ODbL Share-Alike、Mapbox は独自ライセンス、Google は利用規約にキャッシュ禁止条項があります。ライセンス違反はサービス停止につながりかねないため、プロダクト公開前に必ず法務レビューを受けるべきです。
26. 参考 / References
- OpenStreetMap —
https://www.openstreetmap.org - OSM Wiki Map Features —
https://wiki.openstreetmap.org/wiki/Map_features - Overture Maps Foundation —
https://overturemaps.org - Overture Maps Documentation —
https://docs.overturemaps.org - Mapbox —
https://www.mapbox.com - Mapbox GL JS —
https://docs.mapbox.com/mapbox-gl-js - Google Maps Platform —
https://mapsplatform.google.com - Google Photorealistic 3D Tiles —
https://developers.google.com/maps/documentation/tile/3d-tiles - MapLibre —
https://maplibre.org - MapLibre GL JS —
https://maplibre.org/maplibre-gl-js - deck.gl —
https://deck.gl - Kepler.gl —
https://kepler.gl - Leaflet —
https://leafletjs.com - OpenLayers —
https://openlayers.org - CesiumJS —
https://cesium.com/platform/cesiumjs - Cesium 3D Tiles —
https://github.com/CesiumGS/3d-tiles - PostGIS —
https://postgis.net - DuckDB Spatial —
https://duckdb.org/docs/extensions/spatial - H3 Geo —
https://h3geo.org - S2 Geometry —
https://s2geometry.io - OSRM —
https://project-osrm.org - Valhalla —
https://valhalla.github.io - GraphHopper —
https://www.graphhopper.com - pgRouting —
https://pgrouting.org - Nominatim —
https://nominatim.org - Pelias —
https://pelias.io - Photon —
https://photon.komoot.io - Protomaps —
https://protomaps.com - PMTiles —
https://docs.protomaps.com/pmtiles - MapTiler —
https://www.maptiler.com - Stadia Maps —
https://stadiamaps.com - V-World —
https://www.vworld.kr - Naver Maps API —
https://navermaps.github.io - Kakao Maps API —
https://apis.map.kakao.com - 国土地理院 GSI —
https://www.gsi.go.jp - Yahoo!Japan Maps API —
https://developer.yahoo.co.jp/webapi/map - ZENRIN —
https://www.zenrin.co.jp - MIERUNE —
https://www.mierune.co.jp