見出し画像

Pythonで緯度・経度から3次メッシュコードを生成する方法

この記事では、Pythonを使って緯度・経度から3次メッシュコードを生成する方法について解説します。メッシュコードは地理情報を扱う際に便利なコード体系で、日本では特に利用されています。

コードの概要

以下のコードは、緯度と経度を入力として受け取り、対応する3次メッシュコードを計算して返します。

def get_mesh_code(lat, lon):
    # 1次メッシュコード
    lat1 = int(lat * 1.5)
    lon1 = int(lon - 100)
    mesh1 = f"{lat1:02d}{lon1:02d}"

    # 2次メッシュコード
    lat2 = int((lat * 1.5 - lat1) * 8)
    lon2 = int((lon - 100 - lon1) * 8)
    mesh2 = f"{lat2}{lon2}"

    # 3次メッシュコード
    lat3 = int(((lat * 1.5 - lat1) * 8 - lat2) * 10)
    lon3 = int(((lon - 100 - lon1) * 8 - lon2) * 10)
    mesh3 = f"{lat3}{lon3}"

    return mesh1 + mesh2 + mesh3

# 使用例
latitude = 35.658581
longitude = 139.745433
mesh_code = get_mesh_code(latitude, longitude)
print(f"3次メッシュコード: {mesh_code}")

詳細な解説

1次メッシュコードの計算

まず、緯度と経度から1次メッシュコードを計算します。

lat1 = int(lat * 1.5)
lon1 = int(lon - 100)
mesh1 = f"{lat1:02d}{lon1:02d}"
  • `lat1`は、緯度を1.5倍して整数部分を取得します。

  • `lon1`は、経度から100を引いて整数部分を取得します。

  • `mesh1`は、`lat1`と`lon1`を2桁のゼロ埋めでフォーマットした文字列です。

2次メッシュコードの計算

次に、1次メッシュコードを基に2次メッシュコードを計算します。

lat2 = int((lat * 1.5 - lat1) * 8)
lon2 = int((lon - 100 - lon1) * 8)
mesh2 = f"{lat2}{lon2}"
  • `lat2`は、緯度を1.5倍して`lat1`を引いた値に8を掛けて整数部分を取得します。

  • `lon2`は、経度から100を引いて`lon1`を引いた値に8を掛けて整数部分を取得します。

  • `mesh2`は、`lat2`と`lon2`をそのまま文字列にしたものです。

3次メッシュコードの計算

最後に、2次メッシュコードを基に3次メッシュコードを計算します。

lat3 = int(((lat * 1.5 - lat1) * 8 - lat2) * 10)
lon3 = int(((lon - 100 - lon1) * 8 - lon2) * 10)
mesh3 = f"{lat3}{lon3}"
  • `lat3`は、緯度を1.5倍して`lat1`を引いた値に8を掛けて`lat2`を引いた値に10を掛けて整数部分を取得します。

  • `lon3`は、経度から100を引いて`lon1`を引いた値に8を掛けて`lon2`を引いた値に10を掛けて整数部分を取得します。

  • `mesh3`は、`lat3`と`lon3`をそのまま文字列にしたものです。

結果の結合

最後に、1次、2次、3次メッシュコードを結合して最終的な3次メッシュコードを返します。

return mesh1 + mesh2 + mesh3

使用例

以下は、実際に緯度と経度を入力して3次メッシュコードを生成する例です。

latitude = 35.658581
longitude = 139.745433
mesh_code = get_mesh_code(latitude, longitude)
print(f"3次メッシュコード: {mesh_code}")

この例では、東京タワーの緯度と経度を使用して3次メッシュコードを生成しています。

まとめ

このコードは、緯度と経度から日本の3次メッシュコードを計算する方法を示しています。地理情報を扱う際に非常に便利なツールとなるでしょう。ぜひ試してみてください。


いいなと思ったら応援しよう!