山行記録の項目
山行記録を作成しているが、今のところ地図上にルートを表示するのと気圧から高度変化をグラフにする2つだけ作ってる。プログラミングによってなんとか作りたいとか思ってたんだけど、うだうだやってるうちにもうエクセルでいんじゃねという啓示がおりてきたのでそうします。
取ってるログは、日付・時間・緯度・経度・GPS標高・温度・気圧の7つ。ここから色んな項目を作ってく。
標高
https://dalomo.net/blog/2023/03/04/1982/#toc13
こちらはGSSで作ってる。エクセルでやってもまぁ一緒。その日の海面気圧は自明ではないので気象庁から取ってくるか、標準大気圧をそのまま使って変化量だけ見る感じ。自分は後者にしている。
距離
緯度と経度から2地点間の距離を求める。
https://qiita.com/Yuzu2yan/items/0f312954feeb3c83c70e
こちらが参考になった。短い距離ではどの方法も誤差はほぼ無視していいみたいだが、今回は測地線航海算法を使うことにした。
https://www2.nc-toyama.ac.jp/WEB_Profile/mkawai/lecture/sailing/geodetic/geosail.html
こちらにも同様、というかこれが元かな?ここで化成緯度がなんか分かんなかったけど、更成緯度というのがいいのかな。いうてこれ更正じゃないのとか、reduceって言ってるし縮小とかのが合ってそう。地球を正円から楕円体として捉えるのだから値は小さくなるし。まぁそれは置いといてエクセルでやると左上がA1として
lat | lon | Φ | X | Δρ | ρ(km) | cm |
緯度1 | 経度1 | =ATAN(定数!$B$3/定数!$B$2*TAN(RADIANS(A2))) | ||||
緯度2 | 経度2 | =ATAN(定数!$B$3/定数!$B$2*TAN(RADIANS(A3))) | =ACOS((SIN(C2)*SIN(C3))+(COS(C2)*COS(C3)*COS(RADIANS(B2)-RADIANS(B3)))) | =定数!$B$4/8*((SIN(D3)-D3)*POWER(SIN(C2)+SIN(C3),2)/POWER(COS(D3/2),2)-(SIN(D3)+D3)*POWER(SIN(C2)-SIN(C3),2)/POWER(SIN(D3/2),2)) | =定数!$B$2*(D3+E3) | =F3*100000 |
定数は
赤道半径 | 6378.137 | B2 |
極半径 | 6356.752314 | B3 |
扁平率 | 0.003352811 | B4 |
にしてみてる。これでログの行間の距離が出た。ちなみにこれは勾配を考慮に入れていない。あくまで平地とした場合の距離となる。まぁ大菩薩嶺のログで単純に合計すると13.33kmだった。結構歩いたな。
距離基準の標高グラフ
距離が出たので距離基準の標高グラフもつくれーる。距離を積算していった列を作りそれと標高列を合わせてグラフを作るのだが、普通に折れ線グラフにすると行ごとの等間隔グラフになってしまって見たい形が出てこない。これはいつも作ってる時間対標高でもそうだったみたい。これを解消する、距離の間隔を等間隔にしてグラフを作るにはグラフの種類で散布図を選ぶとよい。
こうできた。大菩薩嶺丸川峠分岐からの急さと頂上から大菩薩峠ー上日川峠への緩やかさがよく分かって嬉しくなるね。時間対高さと比較
けっこー違うね。
速度
時間も距離も分かったので速度が出せる。距離は平地での距離なので、例えば90度の壁を時間かけて登ったとしてもそこの速度は0になることに注意。んで、エクセルは時間をシリアル値で管理しているためそれを考慮した計算にしないと変なことになる。
time | cm | cm/s | km/h | 50 | 100 |
0.238668981481481 | |||||
0.238680555555556 | 16.4455124078171 | =B3/((A3-A2)*24*60*60) | =C3/27.7778 | =SUM(B3:B52)/((A52-A2)*24*60*60) | =SUM(B3:B103)/((A103-A2)*24*60*60) |
cm/sはエクセルの秒数に24*60*60=86400を掛ければよい。罠として、時間表示のところに日付が紛れる場合があり、エクセルが余計な気を利かすそれを解消するために「1900/1/0 」などを削除する作業が発生する場合がある。cm/sをkm/hに変換する場合27.7778ぐらいの係数を掛けると変えれるらしい。ここまでは隣接2データの間の速度だけどこれだとデータ間のぶれが大きい。なので50行ごととか100行ごととかで計算してみる。
だんだんこう滑らかーになっていく。最後の方は#VALUEのエラーが出るので前行値-(前行値/100)とかで埋めてしまう。負になるようならゼロ埋め。これを元に地図上の軌跡に色を付けたい。
地図上の軌跡にカラーマップを適用する
速度によって軌跡の色を変えることによってなんかいい感じに表示してる地図を見かけたので同じことをやってみたいなと思った。GARMINのGPSMAPの機能らしい。
カラーマップ
最初こういうのはヒートマップというのだと思っていたけど、通称はカラーマップというらしい。その中でも有名なのがMATLABで使われているjetという配色みたい。RGBの青から赤へ色相を変化させる感じで
R | G | B |
0 | 0 | 0.5 |
0 | 0 | 1 |
0 | 0.5 | 1 |
0 | 1 | 1 |
0.5 | 1 | 0.5 |
1 | 1 | 0 |
1 | 0.5 | 0 |
1 | 0 | 0 |
0.5 | 0 | 0 |
こんな感じで変化していく。Doubleで扱う計算式がよく分からんので、0-255の2次元配列ルックアップテーブルを作った。
[[0, 0, 128], [0, 0, 132], [0, 0, 136], [0, 0, 140], [0, 0, 144], [0, 0, 148], [0, 0, 152], [0, 0, 156], [0, 0, 160], [0, 0, 165], [0, 0, 169], [0, 0, 173], [0, 0, 177], [0, 0, 181], [0, 0, 185], [0, 0, 189], [0, 0, 193], [0, 0, 197], [0, 0, 202], [0, 0, 206], [0, 0, 210], [0, 0, 214], [0, 0, 218], [0, 0, 222], [0, 0, 226], [0, 0, 230], [0, 0, 234], [0, 0, 239], [0, 0, 243], [0, 0, 247], [0, 0, 251], [0, 0, 255], [0, 4, 255], [0, 8, 255], [0, 12, 255], [0, 16, 255], [0, 20, 255], [0, 24, 255], [0, 28, 255], [0, 32, 255], [0, 36, 255], [0, 40, 255], [0, 44, 255], [0, 48, 255], [0, 52, 255], [0, 56, 255], [0, 60, 255], [0, 64, 255], [0, 68, 255], [0, 72, 255], [0, 76, 255], [0, 80, 255], [0, 84, 255], [0, 88, 255], [0, 92, 255], [0, 96, 255], [0, 100, 255], [0, 104, 255], [0, 108, 255], [0, 112, 255], [0, 116, 255], [0, 120, 255], [0, 124, 255], [0, 128, 255], [0, 131, 255], [0, 135, 255], [0, 139, 255], [0, 143, 255], [0, 147, 255], [0, 151, 255], [0, 155, 255], [0, 159, 255], [0, 163, 255], [0, 167, 255], [0, 171, 255], [0, 175, 255], [0, 179, 255], [0, 183, 255], [0, 187, 255], [0, 191, 255], [0, 195, 255], [0, 199, 255], [0, 203, 255], [0, 207, 255], [0, 211, 255], [0, 215, 255], [0, 219, 255], [0, 223, 255], [0, 227, 255], [0, 231, 255], [0, 235, 255], [0, 239, 255], [0, 243, 255], [0, 247, 255], [0, 251, 255], [0, 255, 255], [4, 255, 251], [8, 255, 247], [12, 255, 243], [16, 255, 239], [20, 255, 235], [24, 255, 231], [28, 255, 227], [32, 255, 223], [36, 255, 219], [40, 255, 215], [44, 255, 211], [48, 255, 207], [52, 255, 203], [56, 255, 199], [60, 255, 195], [64, 255, 191], [68, 255, 187], [72, 255, 183], [76, 255, 179], [80, 255, 175], [84, 255, 171], [88, 255, 167], [92, 255, 163], [96, 255, 159], [100, 255, 155], [104, 255, 151], [108, 255, 147], [112, 255, 143], [116, 255, 139], [120, 255, 135], [124, 255, 131], [128, 255, 128], [131, 255, 124], [135, 255, 120], [139, 255, 116], [143, 255, 112], [147, 255, 108], [151, 255, 104], [155, 255, 100], [159, 255, 96], [163, 255, 92], [167, 255, 88], [171, 255, 84], [175, 255, 80], [179, 255, 76], [183, 255, 72], [187, 255, 68], [191, 255, 64], [195, 255, 60], [199, 255, 56], [203, 255, 52], [207, 255, 48], [211, 255, 44], [215, 255, 40], [219, 255, 36], [223, 255, 32], [227, 255, 28], [231, 255, 24], [235, 255, 20], [239, 255, 16], [243, 255, 12], [247, 255, 8], [251, 255, 4], [255, 255, 0], [255, 251, 0], [255, 247, 0], [255, 243, 0], [255, 239, 0], [255, 235, 0], [255, 231, 0], [255, 227, 0], [255, 223, 0], [255, 219, 0], [255, 215, 0], [255, 211, 0], [255, 207, 0], [255, 203, 0], [255, 199, 0], [255, 195, 0], [255, 191, 0], [255, 187, 0], [255, 183, 0], [255, 179, 0], [255, 175, 0], [255, 171, 0], [255, 167, 0], [255, 163, 0], [255, 159, 0], [255, 155, 0], [255, 151, 0], [255, 147, 0], [255, 143, 0], [255, 139, 0], [255, 135, 0], [255, 131, 0], [255, 128, 0], [255, 124, 0], [255, 120, 0], [255, 116, 0], [255, 112, 0], [255, 108, 0], [255, 104, 0], [255, 100, 0], [255, 96, 0], [255, 92, 0], [255, 88, 0], [255, 84, 0], [255, 80, 0], [255, 76, 0], [255, 72, 0], [255, 68, 0], [255, 64, 0], [255, 60, 0], [255, 56, 0], [255, 52, 0], [255, 48, 0], [255, 44, 0], [255, 40, 0], [255, 36, 0], [255, 32, 0], [255, 28, 0], [255, 24, 0], [255, 20, 0], [255, 16, 0], [255, 12, 0], [255, 8, 0], [255, 4, 0], [255, 0, 0], [251, 0, 0], [247, 0, 0], [243, 0, 0], [239, 0, 0], [235, 0, 0], [231, 0, 0], [227, 0, 0], [223, 0, 0], [219, 0, 0], [215, 0, 0], [211, 0, 0], [207, 0, 0], [203, 0, 0], [199, 0, 0], [195, 0, 0], [191, 0, 0], [187, 0, 0], [183, 0, 0], [179, 0, 0], [175, 0, 0], [171, 0, 0], [167, 0, 0], [163, 0, 0], [159, 0, 0], [155, 0, 0], [151, 0, 0], [147, 0, 0], [143, 0, 0], [139, 0, 0], [135, 0, 0], [131, 0, 0], [128, 0, 0]]
なんちゃってなので正しいかの保証はない。で、jetのことを調べていたらturboのことを知った。
https://blog.research.google/2019/08/turbo-improved-rainbow-colormap-for.html
Googleが作ったやつでjetの視覚的均等性に考慮したものらしい。地理院関連でこんな講演もあったらしい。
https://www.gsi.go.jp/common/000236591.pdf
turboはPython, C, 多項式で公開されてるのでそれを流用してテーブルを作る。255かけりゃいいそうなので楽だ。試しに両方の配色を比べてみると
輝度のピークと色相が均されているように感じる。なのでturboを使ってみよう。
コード書く
便宜的に日付、時間、緯度、経度、速度の順に列が並んでるCSVデータとして、この前作った軌跡表示のコードを流用して
var btn = document.getElementById("upbtn");
btn.addEventListener("click", csv2map, false);
const turbo_colormap_data = [[0.18995, 0.07176, 0.23217], [0.19483, 0.08339, 0.26149], [0.19956, 0.09498, 0.29024], [0.20415, 0.10652, 0.31844], [0.20860, 0.11802, 0.34607], [0.21291, 0.12947, 0.37314], [0.21708, 0.14087, 0.39964], [0.22111, 0.15223, 0.42558], [0.22500, 0.16354, 0.45096], [0.22875, 0.17481, 0.47578], [0.23236, 0.18603, 0.50004], [0.23582, 0.19720, 0.52373], [0.23915, 0.20833, 0.54686], [0.24234, 0.21941, 0.56942], [0.24539, 0.23044, 0.59142], [0.24830, 0.24143, 0.61286], [0.25107, 0.25237, 0.63374], [0.25369, 0.26327, 0.65406], [0.25618, 0.27412, 0.67381], [0.25853, 0.28492, 0.69300], [0.26074, 0.29568, 0.71162], [0.26280, 0.30639, 0.72968], [0.26473, 0.31706, 0.74718], [0.26652, 0.32768, 0.76412], [0.26816, 0.33825, 0.78050], [0.26967, 0.34878, 0.79631], [0.27103, 0.35926, 0.81156], [0.27226, 0.36970, 0.82624], [0.27334, 0.38008, 0.84037], [0.27429, 0.39043, 0.85393], [0.27509, 0.40072, 0.86692], [0.27576, 0.41097, 0.87936], [0.27628, 0.42118, 0.89123], [0.27667, 0.43134, 0.90254], [0.27691, 0.44145, 0.91328], [0.27701, 0.45152, 0.92347], [0.27698, 0.46153, 0.93309], [0.27680, 0.47151, 0.94214], [0.27648, 0.48144, 0.95064], [0.27603, 0.49132, 0.95857], [0.27543, 0.50115, 0.96594], [0.27469, 0.51094, 0.97275], [0.27381, 0.52069, 0.97899], [0.27273, 0.53040, 0.98461], [0.27106, 0.54015, 0.98930], [0.26878, 0.54995, 0.99303], [0.26592, 0.55979, 0.99583], [0.26252, 0.56967, 0.99773], [0.25862, 0.57958, 0.99876], [0.25425, 0.58950, 0.99896], [0.24946, 0.59943, 0.99835], [0.24427, 0.60937, 0.99697], [0.23874, 0.61931, 0.99485], [0.23288, 0.62923, 0.99202], [0.22676, 0.63913, 0.98851], [0.22039, 0.64901, 0.98436], [0.21382, 0.65886, 0.97959], [0.20708, 0.66866, 0.97423], [0.20021, 0.67842, 0.96833], [0.19326, 0.68812, 0.96190], [0.18625, 0.69775, 0.95498], [0.17923, 0.70732, 0.94761], [0.17223, 0.71680, 0.93981], [0.16529, 0.72620, 0.93161], [0.15844, 0.73551, 0.92305], [0.15173, 0.74472, 0.91416], [0.14519, 0.75381, 0.90496], [0.13886, 0.76279, 0.89550], [0.13278, 0.77165, 0.88580], [0.12698, 0.78037, 0.87590], [0.12151, 0.78896, 0.86581], [0.11639, 0.79740, 0.85559], [0.11167, 0.80569, 0.84525], [0.10738, 0.81381, 0.83484], [0.10357, 0.82177, 0.82437], [0.10026, 0.82955, 0.81389], [0.09750, 0.83714, 0.80342], [0.09532, 0.84455, 0.79299], [0.09377, 0.85175, 0.78264], [0.09287, 0.85875, 0.77240], [0.09267, 0.86554, 0.76230], [0.09320, 0.87211, 0.75237], [0.09451, 0.87844, 0.74265], [0.09662, 0.88454, 0.73316], [0.09958, 0.89040, 0.72393], [0.10342, 0.89600, 0.71500], [0.10815, 0.90142, 0.70599], [0.11374, 0.90673, 0.69651], [0.12014, 0.91193, 0.68660], [0.12733, 0.91701, 0.67627], [0.13526, 0.92197, 0.66556], [0.14391, 0.92680, 0.65448], [0.15323, 0.93151, 0.64308], [0.16319, 0.93609, 0.63137], [0.17377, 0.94053, 0.61938], [0.18491, 0.94484, 0.60713], [0.19659, 0.94901, 0.59466], [0.20877, 0.95304, 0.58199], [0.22142, 0.95692, 0.56914], [0.23449, 0.96065, 0.55614], [0.24797, 0.96423, 0.54303], [0.26180, 0.96765, 0.52981], [0.27597, 0.97092, 0.51653], [0.29042, 0.97403, 0.50321], [0.30513, 0.97697, 0.48987], [0.32006, 0.97974, 0.47654], [0.33517, 0.98234, 0.46325], [0.35043, 0.98477, 0.45002], [0.36581, 0.98702, 0.43688], [0.38127, 0.98909, 0.42386], [0.39678, 0.99098, 0.41098], [0.41229, 0.99268, 0.39826], [0.42778, 0.99419, 0.38575], [0.44321, 0.99551, 0.37345], [0.45854, 0.99663, 0.36140], [0.47375, 0.99755, 0.34963], [0.48879, 0.99828, 0.33816], [0.50362, 0.99879, 0.32701], [0.51822, 0.99910, 0.31622], [0.53255, 0.99919, 0.30581], [0.54658, 0.99907, 0.29581], [0.56026, 0.99873, 0.28623], [0.57357, 0.99817, 0.27712], [0.58646, 0.99739, 0.26849], [0.59891, 0.99638, 0.26038], [0.61088, 0.99514, 0.25280], [0.62233, 0.99366, 0.24579], [0.63323, 0.99195, 0.23937], [0.64362, 0.98999, 0.23356], [0.65394, 0.98775, 0.22835], [0.66428, 0.98524, 0.22370], [0.67462, 0.98246, 0.21960], [0.68494, 0.97941, 0.21602], [0.69525, 0.97610, 0.21294], [0.70553, 0.97255, 0.21032], [0.71577, 0.96875, 0.20815], [0.72596, 0.96470, 0.20640], [0.73610, 0.96043, 0.20504], [0.74617, 0.95593, 0.20406], [0.75617, 0.95121, 0.20343], [0.76608, 0.94627, 0.20311], [0.77591, 0.94113, 0.20310], [0.78563, 0.93579, 0.20336], [0.79524, 0.93025, 0.20386], [0.80473, 0.92452, 0.20459], [0.81410, 0.91861, 0.20552], [0.82333, 0.91253, 0.20663], [0.83241, 0.90627, 0.20788], [0.84133, 0.89986, 0.20926], [0.85010, 0.89328, 0.21074], [0.85868, 0.88655, 0.21230], [0.86709, 0.87968, 0.21391], [0.87530, 0.87267, 0.21555], [0.88331, 0.86553, 0.21719], [0.89112, 0.85826, 0.21880], [0.89870, 0.85087, 0.22038], [0.90605, 0.84337, 0.22188], [0.91317, 0.83576, 0.22328], [0.92004, 0.82806, 0.22456], [0.92666, 0.82025, 0.22570], [0.93301, 0.81236, 0.22667], [0.93909, 0.80439, 0.22744], [0.94489, 0.79634, 0.22800], [0.95039, 0.78823, 0.22831], [0.95560, 0.78005, 0.22836], [0.96049, 0.77181, 0.22811], [0.96507, 0.76352, 0.22754], [0.96931, 0.75519, 0.22663], [0.97323, 0.74682, 0.22536], [0.97679, 0.73842, 0.22369], [0.98000, 0.73000, 0.22161], [0.98289, 0.72140, 0.21918], [0.98549, 0.71250, 0.21650], [0.98781, 0.70330, 0.21358], [0.98986, 0.69382, 0.21043], [0.99163, 0.68408, 0.20706], [0.99314, 0.67408, 0.20348], [0.99438, 0.66386, 0.19971], [0.99535, 0.65341, 0.19577], [0.99607, 0.64277, 0.19165], [0.99654, 0.63193, 0.18738], [0.99675, 0.62093, 0.18297], [0.99672, 0.60977, 0.17842], [0.99644, 0.59846, 0.17376], [0.99593, 0.58703, 0.16899], [0.99517, 0.57549, 0.16412], [0.99419, 0.56386, 0.15918], [0.99297, 0.55214, 0.15417], [0.99153, 0.54036, 0.14910], [0.98987, 0.52854, 0.14398], [0.98799, 0.51667, 0.13883], [0.98590, 0.50479, 0.13367], [0.98360, 0.49291, 0.12849], [0.98108, 0.48104, 0.12332], [0.97837, 0.46920, 0.11817], [0.97545, 0.45740, 0.11305], [0.97234, 0.44565, 0.10797], [0.96904, 0.43399, 0.10294], [0.96555, 0.42241, 0.09798], [0.96187, 0.41093, 0.09310], [0.95801, 0.39958, 0.08831], [0.95398, 0.38836, 0.08362], [0.94977, 0.37729, 0.07905], [0.94538, 0.36638, 0.07461], [0.94084, 0.35566, 0.07031], [0.93612, 0.34513, 0.06616], [0.93125, 0.33482, 0.06218], [0.92623, 0.32473, 0.05837], [0.92105, 0.31489, 0.05475], [0.91572, 0.30530, 0.05134], [0.91024, 0.29599, 0.04814], [0.90463, 0.28696, 0.04516], [0.89888, 0.27824, 0.04243], [0.89298, 0.26981, 0.03993], [0.88691, 0.26152, 0.03753], [0.88066, 0.25334, 0.03521], [0.87422, 0.24526, 0.03297], [0.86760, 0.23730, 0.03082], [0.86079, 0.22945, 0.02875], [0.85380, 0.22170, 0.02677], [0.84662, 0.21407, 0.02487], [0.83926, 0.20654, 0.02305], [0.83172, 0.19912, 0.02131], [0.82399, 0.19182, 0.01966], [0.81608, 0.18462, 0.01809], [0.80799, 0.17753, 0.01660], [0.79971, 0.17055, 0.01520], [0.79125, 0.16368, 0.01387], [0.78260, 0.15693, 0.01264], [0.77377, 0.15028, 0.01148], [0.76476, 0.14374, 0.01041], [0.75556, 0.13731, 0.00942], [0.74617, 0.13098, 0.00851], [0.73661, 0.12477, 0.00769], [0.72686, 0.11867, 0.00695], [0.71692, 0.11268, 0.00629], [0.70680, 0.10680, 0.00571], [0.69650, 0.10102, 0.00522], [0.68602, 0.09536, 0.00481], [0.67535, 0.08980, 0.00449], [0.66449, 0.08436, 0.00424], [0.65345, 0.07902, 0.00408], [0.64223, 0.07380, 0.00401], [0.63082, 0.06868, 0.00401], [0.61923, 0.06367, 0.00410], [0.60746, 0.05878, 0.00427], [0.59550, 0.05399, 0.00453], [0.58336, 0.04931, 0.00486], [0.57103, 0.04474, 0.00529], [0.55852, 0.04028, 0.00579], [0.54583, 0.03593, 0.00638], [0.53295, 0.03169, 0.00705], [0.51989, 0.02756, 0.00780], [0.50664, 0.02354, 0.00863], [0.49321, 0.01963, 0.00955], [0.47960, 0.01583, 0.01055]]
const conv8map = turbo_colormap_data.map((row) => {
return row.map((n) => {
return Math.round(n * 255);
});
});
function csv2map() {
const selectedFile = document.getElementById("csvfile").files[0];
const reader = new FileReader();
reader.addEventListener("load", () => {
var temp = reader.result.split("\r\n");
var res = [];
var i = 0;
for (const v of temp) {
res[i] = v.split(",");
i++;
}
var latlngs = [];
var lli = 0;
for (const r of res) {
if (!isNaN(r[2])) {
latlngs[lli] = [r[2], r[3], r[4]];
lli++;
}
}
var map = L.map("map").setView([36.8073068, 139.1125345], 15);
L.tileLayer(
"https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png",
{
maxZoom: 18,
attribution:
"<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>地理院タイル</a>",
}
).addTo(map);
const third = latlngs.map(row => row[2]);
const max = Math.max(...third);
latlngs.map((row) => {
var rgbhex = speed2hex(row[2], (Math.ceil(max * 100)) / 100);
L.circle([row[0], row[1]], { radius: 1, color: rgbhex }).addTo(map);
});
map.fitBounds(latlngs);
});
reader.readAsText(selectedFile);
}
function speed2hex(speed, maxspeed) {
var idx = Math.round((speed / maxspeed) * 255);
return rgb2hex(conv8map[idx]);
}
function rgb2hex(rgb) {
return "#" + rgb.map(function (value) {
return ("0" + value.toString(16)).slice(-2);
}).join("");
}
いつもながらしっちゃかめっちゃかだが
できました。画像より地図で見たいねこれは。あとPolylineではなくCircleで点を描画しているだけなので拡大すると粗が出る。例えばこれが徒歩じゃなくて、自転車・車とかだと線で表示されているように見えないかもしれない。そういう場合はPolylineをデータ数分実行することになるのかな。