トップ地図ユーティリティ > MapUtil

MapUtil

はじめに

ごくまれにしか実行しない機能は地図アプリから切り離し、ユーティリテイとする。

当面、Windowsパソコンで実行するが、 将来的には、Androidタブレットあるいは ChromeBook に移行するかも知れないことと、Android Javaとの共通点が多いことから 本家Javaプログラムとする。

地図アプリデータファイル

スマホでは関連データを SDカードの Mapディレクトリ下に置いている。 現在は構造化されていないので、いささか管理しずらい。いずれ、3つ、4つに分類して管理したい。

パソコンでは c:/map/data ディレクトリ下に置いている。

・OSM関連
  1. 陸地ポリゴン: lands_low1、lands_split1、lands_split5
  2. 低ズーム: japan_low3 [、kanto_low3]
  3. 中ズーム: japan_mid7 [、kanto_mid7]
  4. 高ズーム: japan_norm7、japan_norm13 [、kanto_norm7、kanto_norm13]
  5. 地図記号: img
  6. 辞書: words_utf16.txt
・手作業で準備するもの
  1. 観光地などの案内図: infos
  2. バス時刻表: guides
・地図アプリなどが出力するもの
  1. GPSログ: gpslogs
  2. 写真: photos

Androidエミュレータ LDPlayer9 による地図アプリのデバッグ

スマホでの実機デバッグは電池の消耗が激しいので、最小限にとどめる。 Androidエミュレータは同じパソコンで動くため、操作は簡単である。

当初、MapUtilをAndroidアプリとして、GPSログ変換を行おうとしたが、ちょっとした操作の手違いでデータが全部消えてしまった。

Androidエミュレータはデバッグには使えるが、重い処理を行うには無理がありそう。

  1. Mapディレクトリを作成した
  2. japan_*、lands_* を Picturesにコピー、それを Map にコピーした。
  3. img を Map にコピーした。
  4. guides、infos を Map にコピーした。
  5. words_utf16.txt、landtiles.dat、busroutes_*.csv を Map/data にコピーした。
  6. srvlogs, actlogs を作成した。

デバッグ記録

java と javac のバージョン違い

c:\map> javac -d c:/MapUtil/class c:/MapUtil/java/MapUtil.java

c:\map> java -Dfile.encoding=UTF-8 -Xmx4g  -classpath c:/MapUtil/class MapUtil
Exception in thread "main" java.lang.UnsupportedClassVersionError: MapUtil has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
c:\map>where java
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\java.exe

c:\map>where javac
C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\javac.exe

Pathリストの順番を変更することにより、解決した。

リファレンス

[1]