等高線付きの地図を作成する(アンドロイド地図アプリの開発 捕捉)

前回の総まとめでも書いた通り、map形式の地図ファイルで等高線付きのものは等高線間隔が20mまでです。10m間隔の地図は自分で作るしかないようです。
alasixosaka.hatenablog.com

そこで、出来るかどうかチャレンジしてみました。
基本的には次のサイトのやり方を踏襲しました。
[地図自作] 国土地理院の数値標高モデルを使って等高線入り地図を作成する方法 -すけログ
このサイトでは最終的にGamin GPS用の地図データを作成していますが、途中までは同じやり方でできます。

基本的には国土地理院のサーバーから数値標高モデルをダウンロードし、GeoTIFF形式に変換、等高線をOSM形式に変換、等高線のないOSM地図と合わせる。という流れになります。

等高線データのダウンロード

国土地理院のサーバーには日本の地形情報が数値データとして格納されていて、ダウンロードできるようになっています。
fgd.gsi.go.jp
ここから、数値標高モデルをダウンロードします。
ダウンロードは地域別とメッシュ別から選択できます。あまり深く考えずに地域別を選択し、日本全部をダウンロードしましたが、県境のエリアなどではオーバーラップがあるようで、同じファイルがダウンロードされてしまいます。メッシュでやった方が効率が良いようです。
ダウンロードしたファイルはCAB形式で圧縮されており、解凍するとさらにZIP形式に圧縮されています。後で述べる方法ではZIPを解凍する必要はありません。(私は別の方法を先に試したので解凍してしまいました)。
ファイルは全部で4885個あります。とんでもない数です。改めて地図というのは情報の塊であるということを認識しました。

GeoTIFF形式に変換

ここのサイトには色々なやり方が書いてありますが、QGISというソフトを使うのが一番簡単そうなのでまず初めにやってみましたが、プラグインのfgddemImporterが最新版に対応していないので使えませんでした。
www.chuogeomatics.jp
結局、最初の参考サイトのPythonスクリプトを使った方法になりました。ただ、これも一筋縄ではいかず。参考サイトはLinux環境で作業されていますが、Windowsでやろうとして色々ハマりました。
まず、Phythonスクリプトですが、作者の方がアップされているスクリプトがPhython2.x系のものだったので、3.x系ではエラーになって走らず、Phython2.7を改めてインストールしました。
github.com
それでも、numpyがないと言われるので、PIPでインストール。すると、今度はGDALが無いと言われる。ところが、GDALはPIPではインストールできず、調べるといろいろと手順が必要なことが分かった。
基本的には次のサイトの記述通りにやればできました。
gpsrsgis.seesaa.net
まず、GDALのHPへ行って、コアというのをダウンロードしてインストールする。次に同じサイトのPythonとGDALをバインドするためのプログラムをダウンロードする。このとき、Pythonのバージョンに気を付ける。今回の場合は2.7が必要。
最後に、環境変数を設定
PATHにC:\program files\GDAL を追加
GDAL_DATAを作成し、変数値をC:\program files\GDAL\gdal-data にする。
GDAL_DRIVER_PATHを作成し、変数値をC:\program files\GDAL\gdalplugins にする。
これでようやく変換用のスクリプトが動くようになりました。
スクリプト(fgddem.py)と国土地理からダウンロードしたファイルをd:\GPS\DEMの置きました。
Windowsコマンドプロンプトディレクトリをファイルのあるところに移動し、
py -2 fgddem.py FG-GML-*-DEM10B-*.xml
と打ち込めば変換が始まります。とっても時間がかかるので気長に待ちましょう。

f:id:alasixOsaka:20200503141414j:plain
変換には時間がかかる
とにかく、等高線のOSMファイルを作ってしまえばこの作業は頻繁にすることはないので時間のある時にやるしかないですね。地形は大規模な開発や火山の噴火などがあったら変わりますけど、基本的には変わらないものですから。ダウンロードしたデータも2016年のもので地図データとしてはけして新しいものではないですし。むしろ、道ができたりとかの方が重要なので、合わせる地図データの方をいつも最新にしておくのが良いと思います。

出来たファイルを結合する。

出来たファイルは結合して一つにします。
参考サイトでは
gdalbuildvrt japan-dem10b.vrt FG-GML-*-DEM10B.tif 
で結合していますが、ワイルドカードを受け付けないみたいで、どうやってもうまくいきませんでした。ファイルを一つ一つ指定すればできるみたいでしたが、4000以上あるファイルを手で打ち込むのは不可能なので、別の方法を行いました。
結合する方法はgdalbuildvrt.exe を使う方法以外に、gdal_merge.pyを使う方法があるようです。ただし、gdal_merge.pyもワイルドカードを受け付けないので、ファイルのリストを作ってそれを使う方法が次のサイトに書いてありました。
deerfoot.exblog.jp
同じ方法が、gdalbuildvrt.exeにも使えるのではと思い、Gdalのドキュメントを読むとやはり、gdalbuild.vrtでもリストファイルを使う方法がありました。
gdalbuildvrt — GDAL documentation
まず、
dir /b *.tif > list.txt 
でtifファイルのリストをlist.txtに書き出し、
gdalbuildvrt -input_file_list list.txt japan-dem10b.vrt
として一つのファイルにまとめました。

等高線のOSMファイルを作成する。

GeoTIFFからOSMファイルを作成すれば等高線部分は完成です。参考サイトには2つのやり方が書いてあって、一長一短という感じですが、両方試してみました。しかし、どちらもとっても苦労しました。
2つのやり方はphyghtmapを使う方法とgdal_contourを使う方法です。

phyghtmapを使う方法

シンプルだが等高線が所々で途切れるとのこと。
まずは、日本全体のファイルを細かく分割します。
japan-dem10b.vrtがあるフォルダに子フォルダとして、retileを作成します。コマンドプロンプト上で
gdal_retile.py -ps 9000 6000 -overlap 1 -co "COMPRESS=LZW" -co "PREDICTOR=2" -co "NUM_THREADS=ALL_CPUS" -targetDir ./retile japan-dem10b.vrt
とすれば細切れになったファイルがいっぱいできます。
次に、これをphyghtmapを使ってOSMファイルに変換するわけですが、始めはWindowsでやろうとしましたが断念。phyghtmapのサイトにはWindowsにも対応していると書いてありましたが、どうやらバージョンが古く、matplotlibの削除されたモジュールを使っているのが原因でエラーになります。matplotlibのバージョンを1.1くらいに戻さないと必要なモジュールが入ってないようですが、インストールしようとすると古すぎるのか拒否されてうまくいきません。
仕方がないので、WSLを使ってWindows上でUbuntuを動かして処理することにしました。
ここからの作業はWLS上のUbuntuコマンドプロンプト上での作業になります。
2020/5/5現在、WSLでUbuntuを導入するとバージョンは18.04になるようです。デフォルトでPython3.8が入っていました。これにPython2.7を導入しようとしましたが、今一やり方がわからず、困ってしまいましたが、phygmapのオリジナルサイトをみると、最新版は2.21でPhython3.x系に対応しているようです。
phyghtmap

そこで、参考サイトを見てバージョンだけを1.80から2.21に変更し、
wget http://katze.tfiu.de/projects/phyghtmap/phyghtmap_2.21.orig.tar.gz
でダウンロードしようとしましたが、サイトに拒否られてダウンロードできません。
仕方がないので、オリジナルサイトから直接ダウンロードし、適当なフォルダに置いておいて、そこから
tar zxvf phyghtmap_2.21.orig.tar.gz
で直接展開しました。
そして、
sudo python3 setup.py install 
でインストールできました。参考サイトでは
sudo python setup.py install 
とpython3の部分がpythonとなっていますが、これはPython2.7で行っているためと思います。Python3.xではスクリプトの実行には、
Python3 XXXX.pyとする必要があります。
Python関係の必要なモジュールをインストールする手順もすべて
sudo apt-get install python3-XXXXのようにpythonではなくpython3としないとだめのようです。一見インストールされたように見えますが、スクリプトを動かすとモジュールが無いと怒られます。必要なモジュールは、gdal-bin、python-numpy、python-matplotlibです。
これでようやくphyghtmapが動くようになったので、参考サイトに倣って、
phyghtmap --pbf --output-prefix=japan_dem10b --step=10 --line-cat=500,50 --no-zero-contour --void-range-max=-500 --start-node-id=20000000000 --start-way-id=10000000000 --max-nodes-per-tile=1000000 --write-timestamp --jobs=4 japan-dem10b*.tif
とすれば良いのですが、こうするとまた、細切れのファイルが大量にできてしまいます。参考サイトではこれを全部合わせて等高線以外のデータを合体しGaeminGPS用の地図を作っています。自分の目的はMapsforgeで使えるmap形式のファイルを作ることなのでここから先が異なります。また、ファイルは細切れでなく一つにしておきたいので、別のサイトを参考に、

    • max-nodes-per-tile=1000000

となっているところを

    • max-nodes-per-tile=0

とすると一つのファイルになります。
上野家のホームページ - PC/地図/Locus map用ベクター地図Locus Map - 資料室
時間はめちゃめちゃかかります。マシンとしては、CPUがCorei7の第八世代でメモリは16GB積んでいますが、半日では終わらないです。
参考サイトでは等高線のつなぎがおかしくなると書いてありますが、今のところおかしな部分は見つかりませんでした。詳細に確認していないので確かではないですが、--max-nodes-per-tile=0で結合したらうまくいったみたいです。

gdal_contourを使う方法

等高線は奇麗につながるが、手間がものすごく大きいとのこと。python3.xでやる方法がないので今のところ断念中。

等高線とマップデータを合わせる。

最後の仕上げです。タイトルの通りデータを合わせるだけなら大した作業ではないですが、mapsforgeでは海の処理を特殊な処理を行っているらしく、ここから先は海ですよと教えてあげないといけないらしい。そうしないと海が白く表示されてしまう。
blog.mori-soft.com
そこで海の処理を加えた形で等高線を合わせる必要がある。ここから先は別のサイトの記事を参考に作業した。
yueno.net
このサイトでは等高線付きのLocusMap用地図データを作成している。等高線についてはNASAのデータを使って20m間隔のものを作っておられるが、この等高線の部分をさっき作った国土地理院のデータから作成した10m間隔のものに変更した。

地図データの準備

地図データはOSM形式のものを使う。サーバーからなるべく最新のものをダウンロードする。ダウンロードできる地図は日本全土のものだが、作業は日本の地図を北海道、本州、四国、九州の4つに分けて行う。
そのために、osmconvertというツールを使う。Windows上で作業するには、サイトに行ってWindows用のファイルをダウンロードして実行すればOKでインストールの必要はない。ダウンロードして適当なフォルダに置いておいて、実行ファイルをコマンドプロンプトから実行する。
分割するには、参考サイトの記述に従い、参考サイトから4つのpolyファイルをダウンロードし、分割を行った。
参考サイトでは
osmconvert japan-latest.osm.pbf -o=japan-latest.o5m
として、一旦、o5m形式に変換しているが、これはこの後、余分なローマ字記述などを削除するためのものなので、そのまま使う場合はファイル形式を変換する必要はない。
分割は、例えば北海道なら
osmconvert --complex-ways japan-latest.o5m -B=..\poly\Hokkaido.poly -o=hokkaido.o5m
となるが、ファイル形式を変換しない場合。
osmconvert --complex-ways japan-latest.pbf -B=..\poly\Hokkaido.poly -o=hokkaido.pbf
でOK。
自分は、何も考えずにサイトの記述に従ってo5m形式に変換したが、その後の削除は必要ないと思ってそのままにしたので、分割してからまたpbf形式に戻すという作業をしてしまった。

海岸線のデータを用意する。

次に、海岸線のデータを用意する。これも参考サイトの記述に従った。
データはOpenStreetMap dataというサイトにあり、land-polygons-split-4326.zipファイルをダウンロードすればよい。
次にこの中にあるland_polygons.shpというファイルからogr2ogrを使って日本の部分を切り出します。
ogr2ogrはGDALをインストールしていれば入っているので、コマンドプロンプトでogr2ogrのあるディレクトリに行って、
ogr2ogr -overwrite -progress -skipfailures -clipsrc 122.560700 21.209920 153.890100 45.802450 japan.shp land-polygons-split-4326/land_polygons.shp
とすればできます。自分の場合は、d:\GPSの下に先ほどのファイルを解凍したので、その下にland-polygons-split-4326というフォルダができていて、その中に目的のファイルがあります。
ですので、コマンドプロンプト
d:
cd gps
としてd:\gpsディレクトリを持って行って先ほどのコマンドを実行しました。そうするとjapan.shpというシェイプファイルができます。
次にこれをosmファイルに変換するのですが、ここが少し苦労しました。
色々試行錯誤したので無駄なことをしているかもしれませんが、まず、参考サイトのリンクからshape2osm.pyというpython スクリプトをダウンロードして、サイトの記述通りにやってみましたが、
py -2 -m shape2osm.py -l japan_ns -o 10000000 japan.shp
とすると、shape2osm.pyなんてモジュールはないと怒られる。エクスプローラーで確認してd:\GPSにちゃんと入っているにもかかわらず。
仕方ないので、オリジナルサイト
GitHub - mvexel/shape2osm: script to convert POINT shapefiles to OSM XML files
から、ダウンロードし、実行すると、simplestxmlwriterがないと怒られる。調べるとpython2.5までは標準で実装されていたみたい。仕方ないので自分でインストールすることにした。下記のサイトからダウンロードし、
ElementTree Overview
サイトの記述に従ってインストールした。これを実行すると、今度は記述が正しくないと怒られる。確かに、オリジナルサイトの使い方では、
shape2osm.py [-h] INFILE OUTFILE
となっていて、シンプルな記述だし、インプットファイルとアウトプットファイルの順番が逆になっている。
訳が分からないので、Pycharmを起動し、参考サイトのスクリプトを読み込んで実行してみた。実行するときに、オプションで引数が入れれるので、そこに、

  • l japan_ns -o 10000000 japan.shp

として実行すると何故かうまくいった。訳が分からないがとりあえず、目的のファイルができているみたいだ。ただ、ファイル名がjapan_ns.1.osmとなっていて参考サイトの記述 japan_ns.osmと異なる。一応QGISでファイルを開いてみた、なんとなく日本列島の形になっているが海岸線が途切れているところとつながっているところが半々くらいになっている。こんなのでよいのかよくわからない。

その後、Python2とPython3を両方インストールしているWindows環境では、
py -2 -m shape2osm -l japan_ns -o 10000000 japan.shp
というように、拡張子を取るとちゃんと動作することが分かった。
したがって、python xxx.py 〇〇〇 と書いてあるのは、py -2 -m xxx 〇〇〇と読み替えると良いことが分かった。

出来たファイルはJOSMというソフトを使って確認した。
josm.openstreetmap.de

JOSMをダウンロードして、インストールします。シェープファイルを読むにはプラグインが必要なので、設定メニューから必要なプラグインを選んでインストールします。そして、先ほどのjapan.shpを読み込むと奇麗に日本の海岸線が表示される。
JOSMでは、読み込んだファイルをOSM形式でセーブする機能がある。
しかし、この機能を使ってしまうと、mapsforgeが海岸線を認識するのに必要なタグが付いていないのでうまくいかない(と思う)。やってみると、Pythonで作ったファイルとファイルサイズが異なる。
ちなみに、このJOSMというソフトはOSM形式のファイルを地図として表示してくれ、また、QGISと違って動作が軽い、ありがたいソフトなのだが、大きなファイルを読み込めない。後で出てくるJavaのメモリの問題のようだ。
できたosmファイルをまた、さっきと同じようにしてPolyファイルを使ってosmconvertで分割する。
そして、参考サイトから、北海道、本州、四国、九州それぞれに対応したxxx_s.osmファイルをダウンロードして、さっき作ったxxx_ns.osmと合体させる。
合体作業は、osmosisというのを使う。
例えば、四国なら
osmosis --read-xml file="shikoku_s.osm" --read-xml file="shikoku_ns.osm" --sort --merge --write-xml file="shikoku_sea.osm"
とすれば、四国版の海と海岸線のデータが完成する。

等高線と合体してmap形式のファイルを作成する。

ここから先は参考サイトでは、今まで作った各種ファイルを合体する作業とmap形式のファイルを作る作業を同時に実行しているので同じようにやってみた。
ここでも、osmosisを使うが、map形式のファイルを作成するのにプラグインをインストールする。
ここからの作業はまた、めちゃめちゃ苦労した。理由は、プラグインのインストールとメモリー不足。試行錯誤の連続で頭がウニになってしまったので整理して書くこともできない状態。
とりあえずやったことを書いておくことにした。日本を4つの島に分割しているのでまずはなるべくデータの小さい四国で試すことにした。

まず、用意するファイルは、OpenStreetMapのサーバーからダウンロードした日本全土の地図から上記の作業で切り出した四国のファイル。ファイル名はshikoku.osm.pbf。
それから、等高線地図から切り出した四国のファイル。ファイル名はshikoku_dem10b.osm.pbf。
そして、海と海岸線のデータの四国のファイル。ファイル名はshikoku_sea.osm
この3つをosmosisを使って合体し、なおかつmap形式のファイルへ変換する。

map writerプラグインのインストール

mapsforgeのサイトでは結構さりげなく書いてある。
github.com
osmosisをダウンロードして適当なフォルダに展開し、プラグインをダウンロードし、/.openstreetmap/osmosis/pluginsというフォルダを作ってそこに置いておく。
実はこれはLinuxでの手順だった。Windowsで行き詰ったのでWSL上のubuntuでもやってみたが、osmosisを動かすことはできたが、結局プラグインを動かすことができなかった。
一応手順というかやったことを書いておく。
WSLでubuntuを起動。参考サイトの記述に従って
wget http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz
mkdir osmosis
mv osmosis-latest.tgz osmosis
cd osmosis
tar xvfz osmosis-latest.tgz
rm osmosis-latest.tgz
とした。ただ、これだけでは不十分なようで、
sudo apt install osmosisを実行しないとダメみたいだ。インストールしたのは最新版でなくバージョン0.41にした。何故かというと、ある掲示板に最新版ではプラグインが動かないが0.41なら動くと書いてあったから。
ちなみに、
sudo apt-get install osmosisでもインストールができるが、最新版(バージョン0.48)がインストールされるうえに、pbfファイルを読み込むところでエラーで止まってしまう。上記の方法だと、プラグインを使った動作以外はうまくいくみたいだ、試したわけではないので保証の限りではないが、pbfファイルの読み込みではエラーにならなかった。しかし、map形式へ変換しようとするとプラグインが無いというエラーを吐いて停止する。
結局Windowsでやるしかないので、Windowsでやった。
Windowsでのmapfile writerプラグインのインストール方法を探すとこのサイトを見つけた。
github.com
googleで検索すると結構上位にくるのでこのサイトの方法が正しく見えるが実は間違っている。
まず、プラグインを置いておくフォルダが違うし、ダウンロードするファイルも違う。
ここの掲示板の最後に書いてあるやり方が正しい。
stackoverflow.com
プラグインも色々バージョンがあるが、実績のある0.6.0を使った、ダウンロードは下記のサイトから行った。
repo1.maven.org
ダウンロードするファイルは長ったらしい名前だが
mapsforge-map-writer-0.6.0-jar-with-dependencies.jar
というファイル。with-dependenciesがついてるやつでないとダメらしい。
ちなみにosmosisも実績のある0.40を使った。ダウンロードは下記のサイトから。
bretth.dev.openstreetmap.org

Windows用は拡張子がzipのもの。
そして、zipを解凍し、適当なフォルダに置いておく。そして、その下にlibというフォルダがあり、さらにその下にdefaultというフォルダがあるのでプラグインはこの中に入れる。
また、この作業は必ずしも必須ではないが、コマンドプロンプトからosmosisを呼び出すので、環境変数を設定して、PATHを通しておいた方が作業がやり易い。

メモリ不足との闘い

ここまでの作業で、windowsコマンドプロンプトからosmosisとmapfile writerプラグインを動かすことができるようになった。(というか正しくはコマンドを認識してエラーを吐かないだけでしたが)
さて、これで行けると思ってmapファイルを作ろうと思ったがout of memoryのエラーでストップする。
まず、メモリ不足に対する対処として、検索するとヒープメモリを増やすという対処が見つかった。やり方は、コマンドプロンプト
java -Xmx1024mとすれば1024Mbyteすなわち1Gbyteのメモリを使えるようになるという。自分のマシンにはメモリが16Gbyteあるので、これを2048mとか4096mとかにすると、そんなにメモリは増やせないよと怒られる。
かといって、1024mとすると、コマンドの一覧が表示されて、入力したコマンドが理解されていない様子。
更に検索すると、osmosisで大きなファイルを扱うときにout of memoryエラーを回避するのに、コマンドにtype=hdと加えると良いというのが見つかった。参考サイトでもそうしている。だが、やってみるとさっきよりは進むが結局out of memory を吐いて止まる。
ここで、完全に行き詰ったので、上に書いたようにLinuxを試そうと、WSLのubuntuでやってみたが、書いたようにプラグインが動かせずにこちらも挫折した。
もう、頭が真っ白になって、とりあえずその日は寝ることにしたが、寝ながらあることを思い出した。実は地図のデータを置いていたドライブの容量がかつかつになっていたのだ。
また、いろいろと検索するとjavaには32bit版と64bit版があって、32bit版だと最大メモリが1.5Gbyteくらいに制限されるらしいことも分かった。さらに、Windows環境変数をいじる方法でもjavaのヒープメモリを増やせることが分かった。
とにかく、出来ることはいろいろやってみようと、まずは、インストールされているjavaのバージョンを調べた。すると、32bit版と64bit版の両方がインストールされていた。ややこしいので、32bit版はアンインストールした。この状態でヒープメモリのサイズを調べると4Gbyteに設定されていることが分かった。四国のデータくらいなら4Gbyteあれば実行できるだろうと思ったが、念のため、地図データは空き容量の大きい別のドライブに移して、とりあえずmapファイルの作成ができるかどうかを下記のコマンドを打って実行してみた。
osmosis --read-pbf file="shikoku.osm.pbf" --mapfile-writer file="shikoku.map"
つまり、等高線のないopenstreetmapの四国のデータのみをmap形式に変換してみた。
すると、ちゃんと変換できた。よーしと思って、
osmosis --read-pbf file="shikoku.osm.pbf" --read-pbf file="shikoku_dem10b.osm.pbf" --sort --merge --read-xml file="shikoku_sea.osm" --sort --merge --mapfile-writer file="shikoku.map" tag-conf-file=tags\tags.xml map-start-zoom=10
として変換をやると、あっさりとout of memory でストップ。
ならばと、最後にtype=hdとしてみた。するとしばらくは動くが途中でやっぱりout of memory でストップ。
仕方ないので、最後の手段と思い、環境変数をいじってメモリを増やした。
www.gwtcenter.com
環境変数の設定で、システム環境変数に新規を選択し、変数名を"_JAVA_OPTIONS"、値は"-Xmx6G"として6Gbyteを割り当てた。参考サイトで5Gbyteを割り当ててもtype=hdオプションを使わないとダメだったと書いてあったので。
そして、変換してみると今度はうまくいった。できた地図をAndroid Studioエミュレータで動かすと、見事に等高線と海が表示されていた。

f:id:alasixOsaka:20200509182103j:plain
徳島市付近の地図。海は青く、等高線もある。
ちなみに、テストで変換してみたファイルを使うと海が見事に真っ白だ。
f:id:alasixOsaka:20200509182212j:plain
海が白く表示される。
等高線の違いも山の部分で確認した。
f:id:alasixOsaka:20200509182423j:plain
石鎚山付近。等高線は10m間隔。
f:id:alasixOsaka:20200509182503j:plain
石鎚山付近。等高線は20m間隔。
こうしてみると、登山に使うならやっぱり10m間隔の地図が見やすい。

本州の地図でまた苦労する。

これで終わりかと思いきや、同じやり方で本州もできると思ったが、やはり本州はでかいのか、やっぱりOut of Memoryで途中で落ちた。仕方ないので、メモリーを12Gbyteまで増やして実行したが、今度はbuffer があふれると言って途中で止まった。参考サイトでは、等高線間隔が20mでやっているので本州全体でもできるのか、Windowsだからダメなのか、理由はよくわからない。少なくとも10m間隔ではデータが大きいのは間違いないので、本州のデータを切り取って小さくして作業してみた。
一番欲しいのは近畿の地図なので、Google mapで適当に座標を割り出して、Osmosisでカットした。まずは基本のOpenStreetMapから
Osmosis read-pbf file="honshu.som.pbf" --bounding-box top=35.721237 left=134.256364 bottom=33.400212 right=137.039213 --write-pbf file="kinki.osm.pbf"
そして、等高線も
Osmosis read-pbf file="honshu_dem10b.som.pbf" --bounding-box top=35.721237 left=134.256364 bottom=33.400212 right=137.039213 --write-pbf file="kinki_dem10b.osm.pbf"
そして、海と陸のデータ
Osmosis read-xml file="honshu_sea.osm" --bounding-box top=35.721237 left=134.256364 bottom=33.400212 right=137.039213 --write-pbf file="kinki_sea.osm"
こうやって、3つのファイルを用意して、合体した。
osmosis --read-pbf file="kinki.osm.pbf" --read-xml file="kinki_dem10b.osm" --sort --merge --read-xml file="kinki_sea.osm" --sort --merge --mapfile-writer file="kinki.map" tag-conf-file=tags\tags.xml map-start-zoom=10 comment="%date% made by Yuji Ueno" type=hd
ところがアプリで確認すると海が真っ白。海と陸のデータを切り出したのが悪かったのかもしれない。
そこで、等高線以外のデータを先に合体してから、近畿の部分を切り出して、等高線と合体してみた。これもダメだった。
またまた、試行錯誤が続くが、長くなったので続きは次回に書くことにする。