ARCHININGEN TECH BLOG

Overture Maps クイックスタート — 全世界の地図データを今すぐ直接取り出す

Overture Maps のデータ取得フロー。S3 / Azure 上の GeoParquet を DuckDB の read_parquet で bbox と列で絞って読み、COPY で GeoJSON などへ書き出す

Overture Maps とは

Overture Maps は Amazon / Meta / Microsoft / TomTom が設立した Linux Foundation 傘下のオープン地図データプロジェクトで、全世界の地図データを毎月 GeoParquet 形式でリリースしています。公式ドキュメントはとても充実しているのですが、「この 1 種類のデータだけ欲しい」ときにはどこから読めばいいか迷いやすい構成でもあります。この記事はその手前に置く入口として、よく使うスキーマを DuckDB で「とりあえず取得できる」状態まで最短で案内します。

データは theme (テーマ) → type (フィーチャータイプ) の 2 階層で整理され、クラウドストレージ上の GeoParquet として配布されます。公式にホストされているのは次の 2 クラウドで、どちらも認証不要 (匿名アクセス可) です。

  • AWS S3: s3://overturemaps-us-west-2
  • Azure Blob: https://overturemapswestus2.blob.core.windows.net

両クラウドとも配下のパスは共通で /release/<リリース>/theme=<テーマ>/type=<タイプ>/ に GeoParquet 形式ファイルが格納されています。

タイル API ではなく列指向ファイルでそのまま配る、というのが Overture の設計判断です。おかげで専用のクライアントやアカウント登録は不要で、Parquet が読めるツールなら何でもよく、後述の bbox カラムと組み合わせれば必要な範囲の行だけを転送して取り出せます。

以前は BigQuery でも提供されていましたが、現在の公式ドキュメントではパートナー管理の「データミラー」(BigQuery / Snowflake / Databricks など) という扱いに変わっています。公式ホストとして安定して使えるのは上記 2 つなので、この記事も S3 / Azure の 2 本立てで書いています。

リリースは 2026-06-17.0 のような日付形式のバージョンで、本記事執筆時点の最新は 2026-06-17.0 です。リリースの選び方と最新リリース名の取得方法は、後半の「運用の勘どころ」にまとめました。

スキーマ早見表

本記事で扱うスキーマの全体像です。サイズは 2026-06-17.0 リリースの実測値で、ここが読み込み戦略とライセンス判断の起点になります。

theme / type 内容 ジオメトリ 全世界サイズ ライセンス
addresses / address 住所ポイント Point 約 22 GB 提供元ごと (CC BY 4.0 / CC0 等)
buildings / building 建物フットプリント Polygon 約 276 GB ODbL
divisions / division 行政区画の代表点 Point 約 0.6 GB ODbL
divisions / division_area 行政区画の境界ポリゴン Polygon 約 4.4 GB ODbL
places / place POI (店舗・施設) Point 約 11 GB CDLA Permissive 2.0 中心

Buildings が突出して大きく、丸ごとダウンロードする運用は現実的ではありません。逆に Divisions は全世界でも数 GB に収まるため、国単位で使い回すならローカルに落とし切る選択肢も十分現実的です。この容量差が、後述の「bbox と列で絞って必要な分だけ読む」パターンを前提にすべき理由です。

ライセンスは theme ごとに異なります。ODbL の Buildings / Divisions は「© OpenStreetMap contributors」などの出典表記が必要で、Places の Foursquare 由来分は Apache 2.0 です。成果物に組み込むときはここだけは公式の Attribution ページを確認してください。

まず動かす

クエリには DuckDB を使います。DuckDB は単一バイナリで動くインプロセスの分析用データベースで、ローカル・リモートを問わず Parquet ファイルを直接クエリできるため、GeoParquet 配布の Overture と相性が抜群です。未導入の場合は次のいずれかでインストールしてください。

BASH
# macOS
brew install duckdb
# Windows
winget install DuckDB.cli
# Linux ほか (公式インストーラ)
curl https://install.duckdb.org | sh

duckdb コマンドで対話シェルが起動し、この記事の SQL はすべてそのまま貼り付けて実行できます。geometry カラムをそのまま扱うため、バージョンは 1.1 以降を使ってください。

S3 を使う場合の準備はこれだけです。

SQL
-- 拡張を入れて S3 のリージョンを指定する (INSTALL は初回のみ)
INSTALL spatial; INSTALL httpfs;
LOAD spatial; LOAD httpfs;
SET s3_region = 'us-west-2';

そのまま 1 クエリ投げてみます。東京駅周辺の POI を 10 件取得する例です。

SQL
-- 東京駅周辺の POI を 10 件だけ取得する
SELECT names.primary AS name, confidence
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-06-17.0/theme=places/type=place/*', hive_partitioning=1)
WHERE bbox.xmin > 139.75 AND bbox.xmax < 139.78
  AND bbox.ymin > 35.67 AND bbox.ymax < 35.69
LIMIT 10;

数秒で店舗名が返ってくれば成功です。あとはこのパターンのまま theme / type と SELECT する列を差し替えるだけで、スキーマすべてに応用できます。

Azure 側を使う場合は azure 拡張で匿名接続します。

SQL
-- Azure Blob を匿名で読む場合の接続設定
INSTALL azure; LOAD azure;
SET azure_storage_connection_string =
  'DefaultEndpointsProtocol=https;AccountName=overturemapswestus2;AccountKey=;EndpointSuffix=core.windows.net';
-- 以降のパスは azure://release/2026-06-17.0/theme=.../type=.../* の形式になる

クエリの基本 4 パターン

クエリを書くときの共通パターンは 4 つ覚えれば十分です。

  • bbox カラムで先に絞る: 全フィーチャーが bbox.xmin などの数値カラムを持ち、WHERE 句で範囲指定すると Parquet の行グループ単位で読み飛ばされます。ST_Intersects などのジオメトリ演算より先にまず bbox、が鉄則です。演算を速くするというより、ファイルの読み込み量そのものを減らすためです
  • 必要な列だけ SELECT する: Overture のスキーマは網羅性が高く、names / sources / brand などの入れ子 struct を含めて 1 レコードあたりの列が多めです。Parquet は列指向なので、SELECT で列を絞るだけで読み込み量が大きく減ります。SELECT *DESCRIBELIMIT 付きの探索にとどめてください
  • geometry は自動認識される: DuckDB 1.1 以降は GeoParquet の geometry カラムをそのまま空間型として扱えます。古い解説記事に出てくる ST_GeomFromWKB は現在は不要です
  • 書き出しは COPY: COPY (SELECT ...) TO 'out.geojson' WITH (FORMAT GDAL, DRIVER 'GeoJSON') で GeoJSON や GPKG に落とせます

スキーマの取得レシピ

以下のレシピは東京駅周辺の bbox (経度 139.75〜139.78 / 緯度 35.67〜35.69) で統一しています。WHERE 句の 4 条件は次の図の矩形の 4 辺にそのまま対応します。すべて 2026-06-17.0 リリースの実データで動作確認済みです。

東京駅周辺の bbox を座標軸上に示した図。WHERE 句の bbox.xmin / xmax / ymin / ymax の 4 条件が矩形の 4 辺に対応する

各スキーマの冒頭には、フルの列定義ではなく「実務でまず使う重要カラム」だけを挙げています。全スキーマ共通で id (GERS ID) / geometry / bbox を持つので、それに続けて以下のカラムを SELECT するのが基本形です。列の全量が必要になったら公式の Schema Reference を参照してください。

Addresses (住所ポイント)

theme=addresses / type=address。住所 1 件が 1 ポイントになったデータです。

  • number: 番地。3-9 のようなハイフン付きの文字列
  • street: 通り名。日本のデータでは「大手町一丁目」のような町丁目名が入ります
  • country: ISO 3166-1 alpha-2 (例: JP)
  • address_levels: 国より下の行政区分の配列。日本では都道府県・市区町村が入ります
  • postcode / unit: 郵便番号・部屋番号など。ソースにより欠損します (日本のデータでは postcode は NULL でした)

カバレッジはソースとなるオープンデータの有無に依存するため、国・地域差が大きい点は把握しておく必要があります。日本は街区レベルのデータが収録されていました。

SQL
-- 範囲内の住所ポイントを取得する
SELECT number, street, postcode, country, geometry
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-06-17.0/theme=addresses/type=address/*', hive_partitioning=1)
WHERE bbox.xmin > 139.75 AND bbox.xmax < 139.78
  AND bbox.ymin > 35.67 AND bbox.ymax < 35.69;

Buildings (建物フットプリント)

theme=buildings / type=building。OSM に加えて Microsoft / Google / Esri 由来の機械学習抽出フットプリントを合成したデータで、建物ポリゴンの網羅性が強みです。前述のとおり全世界で約 276 GB ある最大級のテーマなので、bbox なしのスキャンは避けてください。

  • height / num_floors: 高さ (m) と階数。欠損も多いので IS NOT NULL で絞ると扱いやすいです
  • subtype / class: 用途の大分類 (例: commercial / civic) と詳細分類。名前のある大きなビルでも NULL のことは珍しくありません
  • names: 建物名。names.primary で代表名を取れます
SQL
-- 高さ情報つきの建物を GeoJSON に書き出す
COPY (
  SELECT id, names.primary AS name, height, subtype, geometry
  FROM read_parquet('s3://overturemaps-us-west-2/release/2026-06-17.0/theme=buildings/type=building/*', hive_partitioning=1)
  WHERE bbox.xmin > 139.75 AND bbox.xmax < 139.78
    AND bbox.ymin > 35.67 AND bbox.ymax < 35.69
    AND height IS NOT NULL
) TO 'buildings.geojson' WITH (FORMAT GDAL, DRIVER 'GeoJSON');

Divisions (行政区画)

theme=divisions には type が 2 つあり、ここが最初のつまずきポイントです。division は行政区画の代表点 (ポイント)、division_area が境界ポリゴンです。境界ポリゴンが欲しいなら division_area を読みます。

  • subtype: 区画の階層。country / region / county / locality / neighborhood など。どの粒度が何に対応するかは国によって異なります (日本の市区町村は locality)
  • country / region: ISO 3166-1 / 3166-2 コード (例: JP / JP-13)
  • names: 区画名。names.primary に現地語の名称が入ります
SQL
-- 日本の locality (市区町村相当) のポリゴンを取得する
SELECT names.primary AS name, subtype, region, geometry
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-06-17.0/theme=divisions/type=division_area/*', hive_partitioning=1)
WHERE country = 'JP' AND subtype = 'locality';

このクエリは bbox ではなく country で絞っているため、全球ファイルのスキャン量が bbox 絞り込みより増えます。とはいえ division_area は全世界でも約 4.4 GB と小さいテーマなので、国単位で繰り返し使うなら一度ローカルの Parquet に書き出してから加工するのが実用的です。

Places (POI)

theme=places / type=place。店舗や施設などの POI で、Meta と Foursquare のデータが主なソースです。

  • names: 施設名。names.primary で代表名
  • confidence: その場所が実在する確度 (0〜1)。ソースの合成でできているデータなので、用途に応じて閾値を切るのが前提の設計です
  • basic_category: カテゴリ (例: restaurant / train_station)。NULL のこともあります
  • websites / phones / addresses / brand: 連絡先・住所・ブランド情報

注意点として、旧来のカテゴリカラム categories は 2026-06 リリースで非推奨になり、basic_categorytaxonomy (階層付きカテゴリ) に置き換えられました。2026 年 9 月のリリースで categories は削除予定なので、これから書くクエリは basic_category を使ってください。

SQL
-- 範囲内の POI を確度・緯度経度つきで取得する
SELECT names.primary AS name, basic_category, confidence,
       ST_X(geometry) AS lon, ST_Y(geometry) AS lat
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-06-17.0/theme=places/type=place/*', hive_partitioning=1)
WHERE bbox.xmin > 139.75 AND bbox.xmax < 139.78
  AND bbox.ymin > 35.67 AND bbox.ymax < 35.69
  AND confidence > 0.7;

運用の勘どころ

継続的に使うときに知っておきたいことを最後にまとめます。

最新リリースの取得と選び方

/release/latest のようなエイリアスパスは存在しません。リリース名は日付形式で辞書順がそのまま時系列順になるため、/release/ 配下の一覧から最大値を取るのが確実です。S3 には「ディレクトリ」の実体がないので、glob は実ファイルまで届くパターンで書く点に注意してください。

SQL
-- /release/ 配下から最新リリース名を取得する (キー一覧の走査に数秒かかる)
SELECT max(regexp_extract(file, 'release/([^/]+)/', 1)) AS latest_release
FROM glob('s3://overturemaps-us-west-2/release/*/theme=addresses/type=address/*');

リリースの使い方は次の方針をおすすめします。

  • リリースは月の下旬が多い: 固定スケジュールではありませんが、20 日前後に出ることが多いです。定期処理で最新リリースを追うなら月末か月初の実行がおすすめです
  • 過去リリースを「当時のスナップショット」として使わない: 各リリースはデータソースの追加や品質改善の積み重ねであって、その時点の世界を写した歴史データではありません。過去に遡る用途には向かないので、常に最新リリースから取るのが安全です
  • 参照するリリースは 1 つに固定する: 毎月のリリースに必ず追従する必要はありませんが、複数のリリースを混ぜて使わず、単一のリリースを情報源にします
  • スキーマ変更をウォッチする: 前述した Places の categories 非推奨化のような破壊的変更は今後も起こりえます。継続利用するなら release notes の確認を習慣にしてください

コストは自分の回線と時間だけ

データの利用自体は無償です。AWS Open Data プログラムでホストされており、匿名アクセスできることからも分かるとおり Requester Pays バケットではないため、利用者側に S3 の転送料金は発生しません。かかるコストは自分の回線と時間、クラウド上で処理するならその計算資源だけです。

GERS ID はリリースをまたいで安定

全フィーチャーの id カラムは GERS (Global Entity Reference System) の ID で、毎月のリリースをまたいで安定しています。取得した建物や POI に自前のデータを紐づけても、翌月のリリースでキーが壊れない、というのが実務上の利点です。

まとめ

Overture Maps は「INSTALL 2 つ + SET 1 つ + read_parquet」だけで全球の地図データに手が届きます。まずこの記事のレシピで欲しいスキーマのデータを手元に出してみて、カラムの詳細や他の theme が必要になったら公式ドキュメントの Schema Reference と Getting Data の章を参照する、という順番がおすすめです。

公式ドキュメントの主要なリンクをまとめておきます。