国土地理院APIとは
国土地理院(GSI:Geospatial Information Authority of Japan)は日本の地形・地図・測量に関するデータを管理する国土交通省の組織です。地図タイル・標高データ・住所検索・地名検索などのAPIを無料で公開しており、日本の地理情報を活用するアプリ開発に広く利用されています。
地図タイルの活用
国土地理院の地図タイルはOpenStreetMap互換のXYZタイル形式で提供されており、LeafletやMapboxGLと簡単に組み合わせられます。
// Leaflet.jsで国土地理院の地図を表示
import L from 'leaflet';
const map = L.map('map').setView([35.6814, 139.7670], 13);
// 標準地図
L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: '© 国土地理院',
maxZoom: 18
}).addTo(map);
// 空中写真(オルソ画像)
// https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg
// 標高色別地図
// https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png
主要な地図タイルレイヤー
- 標準地図:最新の標準地図(道路・建物・地名)
- 空中写真:衛星・航空写真(シームレス空中写真)
- 地形図:等高線・地形が詳細な地形図
- 淡色地図:背景として使いやすい薄い色調の地図
- 白地図:道路・地形のみのシンプルな地図
標高APIの使い方
// 緯度経度から標高を取得
const getElevation = async (lat, lon) => {
const response = await fetch(
`https://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=${lon}&lat=${lat}&outtype=JSON`
);
const data = await response.json();
return data.elevation; // 標高(メートル)
};
// 東京スカイツリーの位置
const elevation = await getElevation(35.7101, 139.8107);
console.log(`標高: ${elevation}m`);
住所・地名検索API
// 住所から緯度経度を検索(ジオコーディング)
GET https://msearch.gsi.go.jp/address-search/AddressSearch?q=東京都千代田区千代田1
// レスポンス
[
{
"geometry": { "coordinates": [139.75315, 35.68530], "type": "Point" },
"type": "Feature",
"properties": { "addressCode": "", "title": "東京都千代田区千代田1丁目" }
}
]
地理院地図ベクトルタイルの活用
地理院地図ベクトルタイル(GeoJSON形式)を使うと、道路・建物・行政境界などの地理データをベクトル形式で取得して独自スタイルの地図を作成できます。MapboxGLやDeck.glとの組み合わせで高品質な3D地図表現も可能です。
まとめ
国土地理院APIは日本の地形・地理データを無料で活用できる公共APIです。地図タイル・標高・住所検索を組み合わせることで、日本向けの高品質な地図アプリを低コストで構築できます。出典として「国土地理院」の帰属表示を必ず行い、利用規約を遵守した上で活用してください。