eTrex30を手なずける(地図を作る その5 バーズアイ;【ymapjnx】でYahoo!地図を

 ymapjnx.pyの実行が確認できたら、画質を指定して必要な範囲の地図を作成する。

画質を設定する
画質については亀氏のサイトに説明がある。

GPSにYahoo!地図を表示する その3、jnx地図作成の設定と作成

画質の設定は、カメラに詳しい人は分かるだろうが、当方にはよくわからないから、亀氏の設定を利用させてもらっている。ただ、ymapjnx.pyの下記の行のquality=の数値は.jnxの画質とサイズを大きく左右用する。

pngimg.save(jpgpath, "JPEG", quality=60)


切り出しの条件

切り出し条件はconfig.txtに設定するが、切り出しの範囲については2つ方法がある。

(1)長方形を指定する。
緯度・経度で長方形の対角線の端点を指定し、その範囲の地図を切り出す。
# 緯度経度 その1
latlon1 = (35.70684619215367, 139.78315367951473) #新御徒町駅
# 緯度経度 その2
latlon2 = (35.67018253371494, 139.750073172706) #虎ノ門駅

※ 行末の#以下はオリジナルのconfig.txtにはないコメントをつけ加えた。

ソースの緯度・経度の値を、切り出したい地域の緯度・経度に書き換える。

(2)ルートを指定する。
GoogleマップやBaseCampでルートのgpxファイルを作ってymapjnx.pyと同じフォルダに置き、gpxfile =でそのファイル名を指定すると、そのルートを中心にしてaroundroute=で指定する範囲を切り出す。これについては、あとで説明する。
# GPXファイル
gpxfile = "example.gpx" #ルートのgpxファイル
#gpxfile = None
aroundroute = {1:800, 2:800, 3:800, 4:800, 5:500, 6:300, 7:200, 8:120, 9:50, 10:30, 11:12, 12:5, 13:5, 14:5, 15:3, 16:2, 17:2, 18:0.5, 19:0.5, 20:0.5} # km
(1)は普通の方法だが、(2)は自転車乗りには重宝な切り出し方法だと思う。行程が100キロ程度にもなれば、全行程を含む長方形を切り出すのは時間が掛かるしデータ量も増える。ルートに沿ってだけ切り出すのならデータ量が減り、手軽に切り出しができる。

※ config.txtのコメントに「GPXファイル が有効なら緯度経度は不要」とあるが、緯度経度(latlon1、latlon2)をコメントオフするとエラーで実行は中断される。latlon1、latlon2の設定より、gpxファイルのルート設定が優先するようだが、latlon1、latlon2(の値がルートに関係なくても)はデフォルトのままにしておいた。もしもymapjnx.pyの実行に関係しているなら、ルートのgpxファイルにある始点と終点をそれぞれlatlon1、latlon2に設定するか、あるいはBaseCampで作ったルートのgpxファイルなら<bounds>にルートを含む最小の長方形の緯度・経度があるので、それを利用してもいい。ま、ダメ元でやってみることだ。

なお、ルートのgpxファイルで<trk>セグメントの<name></name>タグは、Googleマップで作ると<name> Google Driving Directions Track</name>となっていて、eTrex30ではこれがトラック管理のトラック名に使われる。目的地名などに変えておくといい。

切り出しの範囲が決まると、次にscalelist =でYahoo! 地図のどの縮尺の地図(タイル、原画)を使うか指定する。

Yahoo! の地図はPC画面で分かるとおり拡大レベルが20段階ある。Yahoo! の地図が各段階で異なるタイルを使っているとすれば同じ地域に最大20枚のタイルがありうる。実際には、何枚かを用意し残りの段階はデジタルズームで繋いでいるのだろう。緯度経度(latlon1、latlon2)の範囲、あるいはルートからaroundrouteの範囲で、scalelisに含まれるYahoo! 地図のタイルを取り込んでいるのだろう。scalelistの最大5個という制限はタイルのダウンロード時間やデータ量などの現実的な判断からだと思う。

とりあえずscalelist = (15, 16, 17, 18, 19)あたりを使って様子を見てみる。必要なら、レベルを変えて複数の.jnxファイルを作成する。

一方、eTrex30には# GarminDisplayScale にコメントしてあるように拡大レベルが27段階ある。

# GarminDisplayScale = ["800km", "500km", "300km", "200km", "120km", "80km", "50km", "30km", "20km", "12km", "8km", "5km", "3km", "2km", "1.2km", "800m", "500m", "300m", "200m", "120m", "80m", "50m", "30m", "20m", "12m", "8m", "5m"]

したがって20→27への対応は明示的に指定する必要がある。たとえば、scalelist = (15, 16, 17, 18, 19,)で切り出したタイルはeTrex30の27段階あるレベルのどこで使うか。それを対応させるのがswitchlevelなのだろう。

switchlevel = {1:"800km", 2:"800km", 3:"800km", 4:"800km", 5:"500km", 6:"300km", 7:"200km", 8:"120km", 9:"50km", 10:"30km", 11:"12km", 12:"5km", 13:"3km", 14:"1.2km", 15:"800m", 16:"300m", 17:"200m", 18:"80m", 19:"50m", 20:"30m"}

config.txtではswitchlevelは上記のように設定されている。この場合、scalelist = (15, 16, 17, 18, 19)で切り出した地図は、eTrex30側では15→800m、16→300m、 17→200m、18→80m、19→50mのレベルで表示されることになる。

最後に、こんな実験をしてみた。config.txtでルートを使わない場合、切り出し範囲は新御徒町駅虎ノ門駅を対角線とする長方形になる。
latlon1 = (35.70684619215367, 139.78315367951473) #新御徒町駅
latlon2 = (35.67018253371494, 139.750073172706) #虎ノ門駅
そこで、次の2つの切り出しを比較してみた。

scalelist = (20,)
switchlevel = {20:"50m"}

これで、example_20.jnx(67,675KB)が出力される。

もうひとつ。

scalelist = (15, 16, 17, 18, 19,)
switchlevel = {15:"800m", 16:"300m", 17:"200m", 18:"80m", 19:"50m"}

これでexample_15_16_17_18_19.jnx(61,069KB)が出力される。2つの.jnxファイルの容量をみると細かい街区や家屋名などが増えるからか、レベル20にデータが集中していることが分かる。

この2つの.jnxファイルをBirdsEyeフォルダに置くと、eTrex30で800m以下の地図として表示される。

この2つを神田駅付近で見てみる。

scalelist = (20,)
205.png 209.png 896.png
20m 30m 50m
右側の地の色が変わっていのは、タイルの境界だろう。

scalelist = (15, 16, 17, 18, 19,) 
194.png 198.png 208.png
20m 30m 50m
50m以下は多分レベル19のデジタルズームなのだろうが、レベル20と縮尺や地図の内容が微妙に異なる。

scalelist = (15, 16, 17, 18, 19,)  + scalelist = (20,) 
884.png 887.png 896.png
20m 30m 50m
レベル20のタイルが優占か。

scalelist = (15, 16, 17, 18, 19,)
901.png 931.png 943.png
80m 300m 800m
おまけにこちらの単独表示も載せておく。

浜風で走るのは市街が多いから、ルート指定の切り出しを多用することになりそうだ。

コメントの投稿

非公開コメント

OJer

清見寺 五百羅漢

OJer

OJerBlog更新:2016/11/30

西蓮寺大銀杏黄葉2016

最新の記事
過去の記事

全記事のリンク

ご近所ブログ
最新のコメント
カテゴリ
検索フォーム