(3)から一気呵成に。
こんなだね:
1 # -*- coding: utf-8 -*-
2 import pickle
3 import numpy as np
4
5
6 def _calc_pos0(lon_or_lat, lseg):
7 a = (lon_or_lat % 100) / lseg
8 b = (a - int(a)) / (1 / 8.)
9 c = (b / (1 / 10.)) % 10
10 return (int(a), int(b), int(c))
11
12
13 def _basepath_from_latlon(lat, lon):
14 _fromlat = _calc_pos0(lat, 2/3.)
15 _fromlon = _calc_pos0(lon, 1.)
16 return "__converted/{}{}-{}{}/{}{}".format(
17 _fromlat[0], _fromlon[0],
18 _fromlat[1], _fromlon[1],
19 _fromlat[2], _fromlon[2])
20
21
22 #lat, lon = 35.603693, 139.646342 # 等々力渓谷
23 #lat, lon = 35.589359, 139.667162 # 多摩川台公園
24 #lat, lon = 35.652972, 139.252782 # 八王子城址
25 #lat, lon = 35.235262, 139.127051 # 石垣一夜城
26 #lat, lon = 35.611360, 139.561343 # 生田緑地
27 lat, lon = 35.593224, 139.730269 # 大森貝塚
28 base = _basepath_from_latlon(lat, lon)
29 print(base)
30 _m = pickle.load(open(base + ".meta", "rb"))
31 _raw = pickle.load(open(base + ".data", "rb"))
32
33 elevs = np.zeros(_m["shape"][1] * _m["shape"][0])
34 elevs[_m["st"]:len(_raw) + _m["st"]] = _raw
35 elevs = elevs.reshape((_m["shape"][0], _m["shape"][1]))
36 elevs = np.flipud(elevs)
37 print(elevs)
38
39 #
40 import matplotlib
41 import matplotlib.cm as cm
42 import matplotlib.pyplot as plt
43 from matplotlib.ticker import FormatStrFormatter
44
45 #fig, ax = plt.figure()
46 fig, ax = plt.subplots()
47 ax.xaxis.set_major_formatter(FormatStrFormatter('%.4f'))
48 ax.yaxis.set_major_formatter(FormatStrFormatter('%.4f'))
49
50 X = np.linspace(_m["lc"][1], _m["uc"][1], _m["shape"][1])
51 Y = np.linspace(_m["lc"][0], _m["uc"][0], _m["shape"][0])
52 CS = plt.contour(X, Y, elevs)
53 plt.clabel(CS, inline=1, fontsize=10)
54 plt.show()
てわけで等々力渓谷:
同じく多摩川台公園:
生田緑地:
大森貝塚:
さて、ここはどこでしょう?:
よしよし。ひとまずセル一個に収まるものについては自由自在ね。
あとは広域の扱いだとかそんなんはやらんといかん。でないと「富士山」とか面白くないし。当然だけど、望みの位置を画像の中心にしたいし、広域でなくても「お好きなスケール」にしたい。つまり望むならどこまでも拡大したい。それと、最終的には手書きでトレースするためには、一等高線で一枚の画像にする、とか、等高線間隔を自由に制御するとかそんなこともしないと。
まだ先長いねぇ。