Python:緯度経度を指定して地図の画像ファイルを保存する

国土地理院のサイトで出来たんですが、見慣れた Google Map の画像にしたい。でも、緯度経度を決めてのスクショは厳しい。
ということで、Maps Static API を使用して画像ファイルを取得してみました。
Google Colab がお手軽なので Python にしましたが、別の言語でも良いと思います。

Maps Static API で地図の画像を保存

API キーの取得と、Maps Static API を許可する説明は省略します。
コードは以下のようにしました。

import requests

# 自分のAPIキーに置き換える
api_key = "自分のAPIキー"

def save_map_image(api_key, filename, locations, maptype, zoom, width, height):
    base_url = "https://maps.googleapis.com/maps/api/staticmap?"
    api_key_param = f"key={api_key}"
    maptype_param = f"maptype={maptype}"
    zoom_param = f"zoom={zoom}"
    size_param = f"size={width}x{height}"
    markers = "&".join([f"markers=size:small%7C{loc}" for loc in locations])
    request_url = base_url + "&".join([
        api_key_param,
        maptype_param,
        zoom_param,
        size_param,
        markers,
        "scale=2",
        "language=ja_JP",
    ])
    response = requests.get(request_url)
    if response.status_code == 200:
        with open(filename, "wb") as f:
            f.write(response.content)
    else:
        raise Exception(f"Error: {response.status_code} - {response.text}")

save_map_image(
    api_key,
    "test.png",
    ["36.103993,140.084481", "36.105103,140.085855"],
    "roadmap",
    17,
    256,
    256
)

保存できたファイルは次の通りです。
zoom の値を何度か調整して、経度と緯度の位置がマーカーで分かるようにしました。
少し面倒ですが、トリミングすれば良いかなと。

国土地理院のサイトで地図の画像を保存

参考までに国土地理院のサイトを使った場合です。
ツールバーの「共有」から、山っぽいアイコンを選びます。

「範囲を固定」を選択すると、緯度経度を指定できます。
「OK」で進めていくと、画像ファイルに保存できます。

コメント