headAD

2014年3月29日土曜日

ymapjnxでハマってしまった

 この記事の中の、ymapjnx, gsijnxはマップ側の仕様変更などにより地図が作成できません。現在サイトも閉鎖されています。
2015年末にこれらに変わるJNX作成ツールが公開されました。
その記事をこちらに記載しましたのでご参照ください。
加筆:2016-06-15
==================
  来週、渡良瀬で熱気球大会があるのでそれに合わせて準備中であることは、前のブログ記事でもご紹介した。
私の手持ちのGPSくんeTrex30には2種類の地図を入れている。
一つはOpenStreetMapをGarmin用に配布しているものと、もう一つはymapjnxを使っている。
ymapjnxとは、yahoo地図から指定した範囲を切り出してGarmin BirdsEye JNXファイル形式の地図にしてくれる。【ymapjnx】Garmin BirdsEye JNX 作製ツール

地図を入れようと、昨年の11月に使ったきりのymapjnxを先週から扱っているが機嫌悪く、思うようにいかない。

■pngファイルが壊れ、処理中にダンマリに


以前は問題なく処理してくれたが、今回は下のように画像のpngファイルが壊れてしまい、エラーが発生する。始末に悪いのは、いかにも処理中ですよと途中でダンマリ状態になってしまう。
環境はwindows7 64bit 8GBram HDDも十分に空いている。64bit版のpython2.7とPILを使っていた。32bit版に落としても同じだった。
ググってみたが結局のところ解らない。これで数日費やした。
17411742
ダメもとでpython3.x版とPILも上げてみた(python3.x版はymapjnxのHPではあまり推奨していない)
python3.x版にするとpngの壊れはなくなって、ymapjnxに添付されているサンプルでは正常に処理ができるようになった。
</ br> 使ったpythonファイルのダウンロード先はこちら
python-3.4.0.amd64.msi
Pillow-2.3.0.win-amd64-py3.4.exe ←unofficial
python2.7版では、サンプルもまともに処理できなかったので、3.xではよさげな雰囲気が伝わってきた。

■python3.xに変えたところ新たな問題点が


python3.xに変えたところ新たな問題点が見つかった。
私がWindowsメモ帳を使用したのが原因だった。


地図を切り出す範囲などを決める設定ファイルが、ymapjnxに添付されているconfig.txtである。
config.txtオリジナルのままで何も手を加えず起動すると正常に処理される。オリジナルではgpxファイルの範囲で地図を切り出している。ここまでは良かった。
次に、gpxファイルを読まずにconfig.txtで指定している範囲を切り出そうと#を書き換えて起動したところエラーが出るようになった。
オリジナルのconfig.txtで良くて、書き換えると(中身を変えなくても)エラーが発生している。
私はconfig.txtの編集を簡単にWindows付属のメモ帳で書き換えている。これがいけなかった。
テキストファイルであっても、Windowsメモ帳で編集するとファイル先頭に3byteの制御コードが付加される。テキストエディターでは制御コードを付加しないようにすることができるが、メモ帳はそれができない。
ちなみに、TeraPadなどのエディターを使うと問題なかった。
しかし、テキストファイルによってエディターを使い分けるのは面倒で、後々忘れるかもしれないし、他の方が上手くできないというのは、これも一つの原因ではないだろうか。
config.txtの先頭に付加された制御コードを無視してくれるルーチンならいいわけだ。

■メモ帳で編集しても上手くいくようにする


私は、pythonを扱うのは初めてだったが、少し眺めてみることにした。
・・・見つかった。ymapjnx.pyの180行目のところ。config.txtをopenしているところだ。
exec(compile(source=open(configfile, 'r', encoding='utf-8').read(), filename=configfile, mode='exec'), G, L)
下のように変更すればよい。importの行は初めのほうに追加する。
import codecs

exec(compile(source=codecs.open(configfile, 'r', 'utf-8-sig').read(), filename=configfile, mode='exec'), G, L)
これで、メモ帳やエディターで編集しても問題なく処理できるようになった。

0 件のコメント:

コメントを投稿