最近は ArcGIS API for JavaScript の話が続いてしまっていたので、今回は気分を変えて Python を使って地域メッシュコードを緯度経度に変換してみようと思います。緯度経度を地域メッシュコードに変換したい方は以下のエントリーを参考にしてみてください。
地域メッシュとは
地域メッシュ(ちいきメッシュ)とは、統計に利用するために、緯度・経度に基づいて地域をほぼ同じ大きさの網の目(メッシュ)に分けたものである。メッシュを識別するためのコードを地域メッシュコードと言う。(地域メッシュ - Wikipedia)
地域メッシュは区分の方法により、大きさの異なるいくつかの区画が定められています。
・1次メッシュ: 一辺約80km.
・2次メッシュ: 一辺約10km. 1次メッシュを縦横8分割したもの。
・3次メッシュ: 一辺約1km. 2次メッシュを縦横10分割したもの。
・4次メッシュ: 一辺約500m. 3次メッシュを縦横2分割したもの。
・5次メッシュ: 一辺約250m. 4次メッシュを縦横2分割したもの。
・6次メッシュ: 一辺約125m. 5次メッシュを縦横2分割したもの。
ESRIジャパンさんが詳しく説明してくれているので、気になる方はぜひ以下を読んでみてください。
実行環境
Windows 10
Python 3.6.6
地域メッシュから緯度経度を割り出すサンプルコード
1~3次メッシュまで対応させたサンプルコードを作成しました。
def get_latlon(meshCode): # 文字列に変換 meshCode = str(meshCode) # 1次メッシュ用計算 code_first_two = meshCode[0:2] code_last_two = meshCode[2:4] code_first_two = int(code_first_two) code_last_two = int(code_last_two) lat = code_first_two * 2 / 3 lon = code_last_two + 100 if len(meshCode) > 4: # 2次メッシュ用計算 if len(meshCode) >= 6: code_fifth = meshCode[4:5] code_sixth = meshCode[5:6] code_fifth = int(code_fifth) code_sixth = int(code_sixth) lat += code_fifth * 2 / 3 / 8 lon += code_sixth / 8 # 3次メッシュ用計算 if len(meshCode) == 8: code_seventh = meshCode[6:7] code_eighth = meshCode[7:8] code_seventh = int(code_seventh) code_eighth = int(code_eighth) lat += code_seventh * 2 / 3 / 8 / 10 lon += code_eighth / 8 / 10 print(lat, lon) if __name__ == '__main__': get_latlon(52396594)
例えば、52396594 を引数にして実行すると「35.24166666666667 139.675」という形で緯度経度を取得することができます。これがどこかといいますと、横須賀のとある地域ですね。
それではこの結果が本当に正しいか確認してみます。以下のサイトで地域メッシュコードの一覧を入手することができます。
地名までは載っていないのですが、52396594 は横須賀市ということがわかります。
意外と簡単に地域メッシュコードを緯度経度に変換することができるということがわかりました。今度は地域メッシュコードからその範囲のポリゴンを作成させたり、あとは、緯度経度から地域メッシュコードに変換したりしてみたいですね。本日は以上です。