シームレス地質図APIで地点の地質を調べる
産総研(地質調査総合センター)の「20万分の1日本シームレス地質図」は、日本全国の地質を継ぎ目なく1枚にまとめた地質図で、APIが公開されています。緯度経度を投げるだけで、その地点が「いつの時代の、どんな岩石か」が日本語で返ってきます。登録もAPIキーも不要です。防災・不動産・土木の文脈で「この場所の地盤は何か」を機械的に調べたいときに便利ですが、精度の限界を知らずに使うと危険な誤用につながります。このガイドでは、何が取れるかと、実際に叩いて確認した挙動・限界を整理します。
緯度経度から何が返るか
ベースURLは `https://gbank.gsj.jp/seamless/v2` です。地点の地質を引くには `GET /api/1.2/legend.json?point=<緯度>,<経度>` を叩きます。認証は不要です。
実際に東京駅(35.681236, 139.767125)を投げると、シンボル記号(symbol)、凡例色のRGB値、地質時代(formationAge_ja: 「新生代 第四紀 完新世」)、岩石区分(group_ja: 「堆積岩」)、岩相(lithology_ja: 「谷底平野・山間盆地・河川・海岸平野堆積物」)が返ってきます。英語版のフィールド(formationAge_en / group_en / lithology_en)も同時に入っています。
妥当性を確かめるために富士山頂(35.3606, 138.7274)でも試したところ、group_ja が「火成岩」、lithology_ja が「玄武岩 溶岩・火砕岩」と返りました。富士山が玄武岩質の成層火山であることと一致しており、データは信頼できます。
凡例は「引かなくていい」(ただし全件取得すると1MB)
地質図のAPIというと、「まず地点を引いてシンボル記号を得て、次に凡例テーブルでその記号の意味を引く」という2段構えを想像しがちですが、このAPIではその必要がありません。地点を引いた時点で、地質時代・岩石区分・岩相がすべて日本語で展開されて返ってくるからです。symbol の `H_sad` のような記号を自力で解読する場面はありません。
凡例の全件取得(`/api/1.2/legend.json` をパラメータなしで叩く)は、シンボルと色の対応表が全部必要な場合──たとえば自分で地質図を描画する場合──に使います。実測では約2,416件・約1MBが返りました。産総研の「V2では計2,400超の凡例」という説明とも一致します。単一地点の解釈のために毎回これを取るのは無駄なので、用途を分けてください。
なお両者は同じ `legend.json` というエンドポイントで、`point` パラメータの有無だけが違います。付ければ1件、付けなければ全件です。
範囲外の座標を渡すと500が返る
実装で必ず踏むのがこれです。日本の陸域から外れた座標を渡すと、空のレスポンスでも404でもなく、**HTTP 500 Internal Server Error** が返ってきます。実測では、赤道上(0,0)・ニューヨーク・ソウル、そして東京湾の沖合(35.5, 139.9)のいずれも500でした。
公式のAPIドキュメントには「不正なパラメータはHTTP 400でJSONのエラー詳細を返す」と書かれていますが、範囲外・データなしの地点については実挙動が500です。ドキュメントと実際が食い違っている状態なので、ステータスコードだけを見て「400ならユーザー入力ミス、500ならサーバー障害」と切り分ける設計にすると、正常な範囲外リクエストをサーバー障害として扱ってしまいます。
ユーザーが地図上をクリックして地質を引く、といったUIを作るなら、海の上をクリックされることは日常的に起きます。500を「その地点にデータが無い」として穏当に扱うエラーハンドリングが必要です。
また、沖合の座標が軒並み500になることから、このデータは陸域が中心で海域(海底地質)はカバーしていない可能性が高いと考えられます。ただし公式に「海域を含まない」と明記された記述は見つけられなかったため、これは実測からの推定です。
精度の限界:20万分の1を超えない(最重要)
このAPIで最も注意すべきは、技術ではなく精度の解釈です。産総研は公式に次のように明記しています。「20万分の1日本シームレス地質図は画面上で一定程度拡大できますが、位置や分布精度については元となる20万分の1地質図以上にならないことをご留意ください」。
つまり、APIは緯度経度を小数点以下6桁まで受け取りますし、画面上ではいくらでも拡大できますが、**地質境界線の位置精度は20万分の1地形図の精度を超えません**。「この番地の地質」「この建物の地盤」といった土地単位の判定には使えない、ということです。返ってくる答えが具体的で日本語なので、つい精密なデータだと錯覚しますが、そこが落とし穴です。
広域の傾向を掴む、地域ごとの地質分布を比較する、といった使い方が本来の用途です。個別の土地の地盤を判断する目的なら、ボーリング柱状図など別の精度のデータに当たる必要があります。この点をUIや出力に明記しておかないと、利用者に誤解を与えかねません。
利用条件(出典表記で自由に二次利用可)
政府標準利用規約(第2.0版)に準拠しており、出典を記載すれば改変を含む自由な二次利用が可能です。利用申請の手続きも不要です。
出典表記は「産総研地質調査総合センター,20万分の1日本シームレス地質図V2」を基本形とし、必要に応じてバージョンやURLを付記します。著作権表示は「©The Research Institute of Geology and Geoinformation (AIST) All Rights Reserved.」です。なお「シームレス地質図」は産総研地質調査総合センターの登録商標です。
商用利用を明示的に禁じる記述は見当たりませんが、「商用利用可」と明言した一文を確認できたわけでもありません。商用サービスに組み込む場合は、規約本文を直接確認しておくと安全です。
実際に叩いてみる(産総研シームレス地質図・登録不要)
緯度経度を渡すと、その地点の地質時代・岩相・岩石区分がJSONで返ります(登録不要)。海上・国外・不正な座標を渡すと全項目 null になったり 404 が返るので、陸地の有効な座標かを先に確かめるのが実装のコツです。凡例全件(legend.json)は約1MBある点も注意します。
curl -s "https://gbank.gsj.jp/seamless/v2/api/1.2/legend.json?point=36.2,137.9"
# 実際のレスポンス(陸地の点)
{
"symbol": "Q31_std",
"formationAge_ja": "新生代 第四紀 後期更新世前期",
"group_ja": "堆積岩",
"lithology_ja": "段丘堆積物"
}
# ※海上・国外・不正な座標では全項目 null(または 404)が返る出典
元システムエンジニア。Web系アプリ開発6年+ソリューション9年、IT実務およそ15年。個人開発者として、政府オープンデータや各府省のAPIを実際に叩いて検証し、「何が取れるか」「実装時にどこで詰まるか」「どう活用するか」を一次検証にもとづいて記録しています。
運営者・検証方針について →