2012年12月15日

Androidタブレットで自作地図(林小班など)を表示する

Androidタブレットやスマートフォンで、利用出来る地図ソフトはたくさんありますが、なかなか自分で作成した地図や、GISのデータを表示できるものがありません。
林小班などを表示できれば、現場の調査などに活用できるのではと思います。
最近Google Nexus7を購入したので、試してみました。

色々調べてみると、次の2つのアプリで自作地図が使えるようです。
・OruxMaps
・Geopaparazzi

【Oruxmapsで地図を表示】
OruxMapsは、GARMIN社のGPSで使えるIMGファイルを表示できます。
こちらは残念ながら日本語は表示できません。(何か方法があるかもしれませんが・・・)
IMGファイルの作成方法は、ここが詳しいです。
http://ringyou-news.blogspot.jp/2010/03/gisgps.html

以前のeTrex10の地図を作る記事でも書いています。

レベルは、最高の「24」だけでも構いませんが、大きい縮尺で表示を切り替えたい時は、
「23」とか「22」を使ってもいいです。
レベル22で、OruxMapsのズームレベル14で表示が変わります。

Screenshot_2012-12-15-22-19-00.png Screenshot_2012-12-15-22-19-14.png
左がズームレベル14で右がズームレベル15です。
(画面下中央の100の右の数字がズームレベルです)
大縮尺では小班を非表示にして、林班のみ表示しています。

等高線などは、かなりデータ量が多いため、作成にも時間がかかります。
MapEditでは、等高線、林小班、道路などは分けてIMGファイルを作成して、
Sendmap21で一つにまとめるのがいいと思います。

GARMINのGPSでも機種ごとにMapeditで設定した線の種類の表示が異なりましたが、
OruxMapsでも独自の表示となります。
MapEditで設定した線や面が、OruxMapでどのように表示されるのかまとめてみました。
参考にしてください。
OruxMapsでのimgの表示.pdf

また、Mapeditで指定する図形の番号が上にある図形ほど地図でも上に表示されます。

Image 2012_12_15_222941.jpg

OruxMapsはGoogleMapなどのオンライン地図をダウンロードすることができます。
ズームレベル10〜14まではGoogleMapで表示させて、
それ以上はIMGファイルを表示させることもできます。
エリアを細切れにダウンロードしても、
地図のエリア外になると自動で地図を切り替えてくれるので、
非常に使い勝手がいいです。


【Geopaparazziで地図を表示】
Geopaparazziでは、Spatialiteデータが表示できます。
Spatialiteは、QGISでも表示できるベクタデータです。
単体のデータベースファイルで動作するので、非常に軽いです。

Geopaparazziでは、残念ながらラベルには対応していないようで、
ラベルは表示できません。

ShapeファイルをSpatialiteに変換するには、
「Spatialite-gui」というソフトが便利です。
ここからダウンロードできます。

「spatialite_gui.exe」を起動して、新しいSpatialiteファイルを作成します。
Image 2012_12_15_225800.jpg

ファイル名を入力し、ファイルが出来ると、以下の画面になります。
(拡張子は「.sqlite」で作成します)
次にShapeファイルを読み込みます。
Shapeファイルは座標参照系を「WGS84(ID:4326)」にしたものを
準備してください。
Image 2012_12_15_225856.jpg

読み込むShapeファイルのフォルダ名、ファイル名に日本語が含まれていると読み込めません
すべて半角英数字にしてください。
ファイルを選択すると、以下の画面が表示されます。
Image 2012_12_15_230650.jpg

ここで注意する点が幾つかあります。
◎「Table name」の一番初めには数字は使用しない。
 (「10_北海道」などはダメ。「北海道_10」ならOK)
◎「Table name」に日本語を使用するのはOK。
◎「Charset Encoding」では、属性データに使用している文字コードを選択する。
◎「SRID」には座標参照系のID(WGS84は4326)を入力する。
◎Geometry storage」の「With Spatial Index」には必ずチェックを付ける。
 「With Spatial Index」は空間インデックスのことですが、
 空間インデックスを作成しないと地図が表示されません。

上手く作成できると、以下のようにテーブルが追加されています。
Image 2012_12_15_231716.jpg

必要なデータを同じように変換します。

作成したSpatialiteファイル(拡張子.sqlite)をAndroid端末の
「Maps」フォルダにコピーします。

ついでに、「http://download.mapsforge.org/maps/asia/」から、
日本の地図をダウンロードします。(Japan.map)
この地図は「mapstorge」というチームが作っているベクタ地図で、
Openstreetmapがもとになっています。
オフラインでも使えて、全国分のデータが入っています。
この「Japan.map」というファイルも、Android端末の「Maps」フォルダにコピーします。

Android端末でGeopaparazziを開き、ホーム画面で設定ボタンをタップして
「表示する地図」を選択します。
Screenshot_2012-12-15-23-42-44.png
「DATABESE_RENDERER」を選択すると、「Japan」の地図が選択できます。
「Japan」が表示されない場合には、「Japan.map」が「Map」フォルダにあるか
確認してください。

Screenshot_2012-12-15-23-44-30.png
このような地図が表示されます。

設定ボタンをタップすると、「Data」というボタンがあるはずです。
Screenshot_2012-12-15-23-44-37.png

この「Data」ボタンでSpatialiteファイルの表示設定をします。
「Data」ボタンをタップすると、作成したSpatialiteのレイヤが表示されます。
Screenshot_2012-12-15-23-44-50.png

表示したいレイヤにチェックを付けて、表示の設定をします。
リストの上にあるほど、地図では下に表示されます。

線の設定は以下のとおり。
Screenshot_2012-12-15-23-44-59.png
「Stroke alpha」で透過率を設定できます。

面の設定は以下のとおり。
Screenshot_2012-12-15-23-45-07.png
こちらも「Stroke alpha」と「Fill alpha」で透過率を設定できます。

上手く設定できると、次のように地図に表示されます。
Screenshot_2012-12-15-23-45-31.png Screenshot_2012-12-15-23-45-43.png

各図形の属性データは、ズームボタンの下にある「?←」ボタンで確認できます。
ボタンをクリック後、確認したい場所を範囲指定します。
Screenshot_2012-12-16-00-06-20.png

すこし時間がかかりますが、属性データがすべて表示されます。
Screenshot_2012-12-16-00-06-52.png


どちらの地図ソフトも一長一短ですが、どちらも使いようによっては、
フィールド調査で効果を発揮しそうです。

また、Geopaparazziは、ノートの項目を独自に設定できるようなので、
そのへんをもう少し勉強しようと思います。

次回は、Nexus7のGPSの性能を確認したいと思います。

posted by kouichi at 22:37| Comment(1) | Android | このブログの読者になる | 更新情報をチェックする