コンテンツにスキップ

比較

Geocode AI と OpenStreetMap の生データの比較

私たちが提供するすべての境界は OpenStreetMap から取得しています。問題は、検索、ポリゴンの組み立て、キャッシュ、検証を自分で行いたいかどうかです。

自前で行う場合と Geocode AI の比較
自前で行う場合Geocode AI
データソースOpenStreetMapOpenStreetMap
名前で検索Nominatim の検索search_boundaries(無料)
ID でポリゴンを取得Nominatim の polygon_geojson または Overpass で取得し、リレーションを組み立てるget_boundary、1 回の呼び出し
逆引き:地点を含むすべての境界Overpass または Nominatim を複数回呼び出しreverse_boundaries、1 回の呼び出し
境界の下位区分Overpass のエリアクエリ。隣接区域は自分で除外list_children(無料)
ポイントインポリゴンのバッチ判定自前の PostGIS または Turfcontains_points
地図表示用に簡略化自分で簡略化low / medium / high / full
フォーマットGeoJSON または OSM XMLGeoJSON, KML, WKT, GML, SVG
利用制限公開 Nominatim:毎秒約 1 リクエスト、大量利用は不可プランの上限内。キャッシュは全ユーザーで共有
コスト無料(自前のサーバーと時間が必要)無料枠あり、以降はユニット単位
エリアを文章で説明

自前で行う場合に必要な作業

OpenStreetMap は行政境界をリレーションとして保存しています。リレーションは、外側と内側のリングを構成するウェイのリストです。使えるポリゴンを得るには、リレーションを見つけ(通常は Nominatim で)、メンバーのウェイを取得し(Nominatim の polygon_geojson、Overpass、またはポリゴンサービス)、それらをつないで閉じたリングにし、自己交差を修復し、飛び地をどう扱うかを決める必要があります。

次に階層が必要になります。ある市がどの郡に属するか、ある市にどの地区があるか、といった情報です。Overpass のエリアクエリで答えは得られますが、境界を接する隣接区域も返されるため、ジオメトリで絞り込む必要があります。さらに、公開サーバーは軽い利用を求めています。Nominatim の利用ポリシーで許可されているのは毎秒約 1 リクエストまでで、一括ダウンロードは認められていません。そのため、ユーザーのデータをジオコーディングするプロダクトには、前段にキャッシュが必要です。

Geocode AI は、そのキャッシュとパイプラインを API として提供します。各境界は一度だけ取得・検証されて PostGIS に保存され、以後はすべてのユーザーに配信されます。その上に階層、エクスポート、地点判定を備えています。上流へのリクエストはレート制限付きの単一のリースを経由するため、利用ポリシーの範囲内に収まるよう私たちが管理します。

よくある質問