経度、緯度の配列からメッシュコードを計算する
jismeshで予期しない値が返ってきたので、自前で実装し直し。
latlon2mesh があったから、numpyの配列を指定できるように改良してみた。
import numpy as np
def latlon2mesh(lat, lon):
#1次メッシュ上2けた
quotient_lat, remainder_lat = np.divmod(lat * 60, 40)
first2digits = quotient_lat.astype(int).astype(str)
#1次メッシュ下2けた
last2digits = (lon - 100).astype(int).astype(str)
remainder_lon = lon - lon.astype(int)
#1次メッシュ
first_mesh = np.char.add(first2digits, last2digits)
#2次メッシュ上1けた
first1digits, remainder_lat = np.divmod(remainder_lat, 5)
#2次メッシュ下1けた
last1digits, remainder_lon = np.divmod(remainder_lon * 60, 7.5)
#2次メッシュ
first1digits = first1digits.astype(int).astype(str)
last1digits = last1digits.astype(int).astype(str)
second_mesh = np.char.add(first_mesh, np.char.add(first1digits, last1digits))
#3次メッシュ上1けた
first1digits, remainder_lat = np.divmod(remainder_lat * 60, 30)
#3次メッシュ下1けた
last1digits, remainder_lon = np.divmod(remainder_lon * 60, 45)
#3次メッシュ
first1digits = first1digits.astype(int).astype(str)
last1digits = last1digits.astype(int).astype(str)
third_mesh = np.char.add(second_mesh, np.char.add(first1digits, last1digits))
print("1次メッシュ:", first_mesh)
print("2次メッシュ:", second_mesh)
print("3次メッシュ:", third_mesh)
lat0 = 34.875
lon0 = 135.1875
latlon2mesh(
np.array([lat0, lat0]),
np.array([lon0, lon0]),
)
…
Source: python
経度、緯度の配列からメッシュコードを計算する