明けましておめでとうございます。
昨年は一昨年に続き変化の多い年でした。新しい分野に挑戦することになり四苦八苦していますが、頑張ろうと思います。
さて、本日は Python で緯度経度を地域メッシュコードに変換してみようと思います。以下のエントリーで地域メッシュコードを緯度経度に変換する方法を紹介していますが、今回についてその逆を紹介します。
地域メッシュとは
前回エントリーに記載しましたので、こちらを参照してください。
やり方
地域メッシュの考え方が以下のサイトで公開されています。これを参考にしてコードを作ってみようと思います。
https://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdf
以下にサイトの画面ショットをのせておきます。
使用する緯度経度
こちらで取得したJR蒲田駅の緯度経度を使用したいと思います。なぜ蒲田かは秘密です。
緯度:35.562479
経度:139.716073
蒲田駅の地域メッシュコードをESRIジャパンさんが公開しているデータで確認してみます。
1次メッシュ:5339
2次メッシュ:533925
3次メッシュ:53392577
ということがわかりました。
実行環境
Windows 10
Python 3.6.6
サンプルコード
1~3次メッシュまで対応させたサンプルコードを作成しました。
# -*- coding: utf-8 -*- def latlon2mesh(lat, lon): #1次メッシュ上2けた quotient_lat, remainder_lat = divmod(lat * 60, 40) first2digits = str(quotient_lat)[0:2] #1次メッシュ下2けた last2digits = str(lon - 100)[0:2] remainder_lon = lon - int(last2digits) - 100 #1次メッシュ first_mesh = first2digits + last2digits #2次メッシュ上1けた first1digits, remainder_lat = divmod(remainder_lat, 5) #2次メッシュ下1けた last1digits, remainder_lon = divmod(remainder_lon * 60, 7.5) #2次メッシュ second_mesh = first_mesh + str(first1digits)[0:1] + str(last1digits)[0:1] #3次メッシュ上1けた first1digits, remainder_lat = divmod(remainder_lat * 60, 30) #3次メッシュ下1けた last1digits, remainder_lon = divmod(remainder_lon * 60, 45) #3次メッシュ third_mesh = second_mesh + str(first1digits)[0:1] + str(last1digits)[0:1] print("1次メッシュ:" + first_mesh) print("2次メッシュ:" + second_mesh) print("3次メッシュ:" + third_mesh) if __name__ == '__main__': latlon2mesh(35.7007777, 139.71475)
結果を確認すると想定通りの地域メッシュコードを取得することができました。
1次メッシュ:5339
2次メッシュ:533925
3次メッシュ:53392577
さいごに
「緯度経度を地域メッシュコードに変換」と聞くとなんとなく難解そうな気がしますが、コードにするととても短くシンプルなプロセスということがわかるかと思います。地域メッシュコードは GIS の世界ではよく使用するものなので、今まで聞いたことなかったという方はぜひ色々調べてみてください。本年もよろしくお願いします。