国土地理院APIとは?開発者が知るべき地理空間情報の活用方法

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

国土地理院API(GSI API)は、日本の国土地理院が提供する地理空間情報を活用できる公式APIサービスです。地図データ、標高情報、住所検索機能など、様々な地理情報をプログラムから簡単に取得できます。

国土地理院APIの基本概要

  • 無料で利用可能:基本的な機能は無償で使用できます
  • 豊富なデータ:地形図、航空写真、標高データなど多様な情報を提供
  • REST API形式:シンプルなHTTPリクエストで情報取得が可能
  • JSON形式のレスポンス:Webアプリケーションに組み込みやすい形式

国土地理院APIで利用できる主要サービス

1. 地理院地図API

日本全国の詳細な地図データにアクセスできます。

// 地図タイル取得の例
const mapUrl = `https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png`;

2. 標高API

指定した緯度経度の標高情報を取得できます。

// 標高データ取得の例
const elevationUrl = `https://cyberjapandata.gsi.go.jp/general/dem5a_png/{z}/{x}/{y}.png`;

3. 住所検索API

住所から緯度経度を取得したり、逆に座標から住所を調べることができます。

4. 災害情報API

地震、洪水、土砂災害などの災害関連情報にアクセス可能です。

国土地理院APIの具体的な活用例

Webアプリケーションでの地図表示

<!DOCTYPE html>
<html>
<head>
    <title>国土地理院地図の表示</title>
    <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
</head>
<body>
    <div id="map" style="height: 400px;"></div>
    <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
    <script>
        // 地図の初期化
        const map = L.map('map').setView([35.6762, 139.6503], 10);
        
        // 国土地理院の地図タイル追加
        L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
            attribution: '&copy; <a href="https://www.gsi.go.jp/">国土地理院</a>',
            maxZoom: 18
        }).addTo(map);
    </script>
</body>
</html>

標高データの取得と活用

import requests
import json

def get_elevation(lat, lon):
    """指定座標の標高を取得"""
    url = f"https://cyberjapandata.gsi.go.jp/general/dem/scripts/getelevation.php"
    params = {
        'lon': lon,
        'lat': lat,
        'outtype': 'JSON'
    }
    
    response = requests.get(url, params=params)
    data = response.json()
    
    return data['elevation']

# 東京駅の標高取得例
elevation = get_elevation(35.6812, 139.7671)
print(f"東京駅の標高: {elevation}m")

国土地理院APIのメリットと活用シーン

メリット

  1. 信頼性の高いデータ:政府機関が提供する正確な地理情報
  2. 無料利用:基本機能は費用がかからない
  3. 豊富なデータセット:地形、災害、インフラ情報など多様
  4. 日本特化:日本国内の詳細情報が充実

主な活用シーン

  • 不動産サイト:物件周辺の地形や標高情報の表示
  • 観光アプリ:登山ルートや景観スポットの情報提供
  • 防災システム:災害リスクの可視化と避難経路案内
  • 物流システム:配送ルートの最適化
  • 農業支援:地形を考慮した営農計画支援

実装時の注意点とベストプラクティス

APIリクエストの最適化

// リクエスト頻度の制御
class GsiApiClient {
    constructor() {
        this.requestQueue = [];
        this.isProcessing = false;
    }
    
    async makeRequest(url) {
        return new Promise((resolve, reject) => {
            this.requestQueue.push({ url, resolve, reject });
            this.processQueue();
        });
    }
    
    async processQueue() {
        if (this.isProcessing || this.requestQueue.length === 0) return;
        
        this.isProcessing = true;
        const { url, resolve, reject } = this.requestQueue.shift();
        
        try {
            const response = await fetch(url);
            const data = await response.json();
            resolve(data);
        } catch (error) {
            reject(error);
        } finally {
            this.isProcessing = false;
            // 次のリクエストを少し遅延
            setTimeout(() => this.processQueue(), 100);
        }
    }
}

エラーハンドリング

async function fetchElevationData(lat, lon) {
    try {
        const response = await fetch(
            `https://cyberjapandata.gsi.go.jp/general/dem/scripts/getelevation.php?lon=${lon}&lat=${lat}&outtype=JSON`
        );
        
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        
        const data = await response.json();
        
        if (data.elevation === null) {
            throw new Error('指定座標の標高データが取得できませんでした');
        }
        
        return data.elevation;
    } catch (error) {
        console.error('標高データ取得エラー:', error);
        return null;
    }
}

よくある質問(FAQ)

Q: 商用利用は可能ですか?

A: はい、国土地理院のデータは基本的に商用利用が可能です。ただし、利用規約を確認し、適切な著作権表示を行う必要があります。

Q: APIキーは必要ですか?

A: 基本的な地図表示や標高取得には認証は不要です。ただし、大量のリクエストを行う場合は事前相談が推奨されます。

Q: レスポンス速度はどの程度ですか?

A: 通常、1秒以内にレスポンスが返されます。ただし、リクエスト頻度や時間帯によって変動する場合があります。

まとめ

国土地理院APIは、日本の地理空間情報を活用したWebサービス開発において非常に有用なツールです。無料で高品質なデータにアクセスでき、様々な用途に応用できます。

適切な実装方法を理解し、利用規約を遵守することで、ユーザーに価値のある地理情報サービスを提供できるでしょう。

参考リンク


この記事は2025年7月時点の情報に基づいています。最新の情報は国土地理院の公式サイトでご確認ください。

「らくらくPython塾」が切り開く「呪文コーディング」とは?

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>理系出身者向けのPython爆速講座

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks