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次メッシュコードを計算する方法を示しています。地理情報を扱う際に非常に便利なツールとなるでしょう。ぜひ試してみてください。