osmdroid-wms を使って国土国交省の Capabilitiesを解析し地図画像を表示する


mdroid-wms を使ってAndroid に国土国交省の地図画像を表示する
の続きです

WMS の Capabilities

WMSサーバで配信しているレイヤ(地図画像のデータセット)の一覧をXML形式で記述したもの

国交省のCapabilities機能の説明
http://nlftp.mlit.go.jp/webmapc/help.html#N3-1

osmdroid-wms の WMSParser

Capabilities を解析するXMLパーサー

HtpURLConnection  c = (HttpURLConnection) new URL(Capabilitiesのurl).openConnection();
InputStream is = c.getInputStream();
WMSEndpoint endpoint = WMSParser.parse(is);
// レイヤの一覧
List<WMSLayer> list = endpoint.getLayers();

レイヤの一覧をListView に表示する。
2000件くらいある。
レイヤ名の一覧が表示されるが、中身が推測できない。

下記から、レイヤ名と名称の対応表を作成する。

国交省の地図レイヤ定義一覧
http://nlftp.mlit.go.jp/webmapc/LayerList.html

Python の BeautifulSoup を使用した。
ソースコードはこちら。
https://github.com/ohwada/Android_Samples/blob/master/tools/python/parse_milt_layer_list.py

作成した対応表の例
800件くらいある。

N03-180101_100, H29_都道府県界
N02-17_100, H29_鉄道

勘案すると、中身が推測できない状態で、1000件ほど公開されていることになります。
勿体ないな。

Capabilitiesの解析結果と合わせてListView に表示する。

レイヤ名が決まれば、前回の記事と同様にして、地図画像を表示します。

スクリーンショット

国交省の鉄道を表示する。

左はベースのOSM地図、右は鉄道を重ねたもの

github にサンプルコードを公開した
https://github.com/ohwada/Android_Samples/tree/master/Osmdroidwms2