1: 2015-10-05 (月) 03:52:54 yuji | 2: 2015-10-13 (火) 01:12:03 yuji Attached file: del.txt, Attached file: japan.poly, Attached file: japan_map.png |
||
---|---|---|---|
Line 19: | Line 19: | ||
まず元になるOpenStreetMapの日本地図を, | まず元になるOpenStreetMapの日本地図を, | ||
wget http://download.geofabrik.de/asia/japan.osm.pbf | wget http://download.geofabrik.de/asia/japan.osm.pbf | ||
- | とかしてDownload。[[japan.polyファイル>http://download.geofabrik.de/asia/japan.html]]もDownloadしておく。(polyファイルは,大きなエリアの地図データからある部分を切り出す時に,切り出すエリアを指定するファイル。) | + | とかしてDownload。&ref(japan.poly);もDownloadしておく。polyファイルは,大きなエリアの地図データからある部分を切り出す時に,切り出すエリアを指定するファイル。日本全体の地図データは大きなファイルになってしまって,ツールを使っての処理も大変時間がかかってしまうので,幾つかに分けたほうが良いかも。Locusでの日本地図は4個に分けています。 |
表示する時なんかで不要な英語タグなんかもいらないんで,ついでに削除しておく。~ | 表示する時なんかで不要な英語タグなんかもいらないんで,ついでに削除しておく。~ | ||
- | .pbfファイルはバイナリデータに圧縮したファイルなんで,[[osmconvertツール>http://wiki.openstreetmap.org/wiki/Osmconvert]]を使ってテキストファイルに変換する。 | + | .pbfファイルはバイナリデータに圧縮したファイルなんで,[[osmconvertツール>http://wiki.openstreetmap.org/wiki/Osmconvert]]を使ってosmfilterで編集出来るように.o5mファイルに変換する。 |
> osmconvert japan.osm.pbf -B=japan.poly -o=japan.o5m | > osmconvert japan.osm.pbf -B=japan.poly -o=japan.o5m | ||
- | そして,いらないタグ(電線とか)を[[osmfilterツール>http://wiki.openstreetmap.org/wiki/Osmfilter]]を使って削除する。del.txtにいらないタグを入れておく。 | + | そして,いらないタグ(電線とか)を[[osmfilterツール>http://wiki.openstreetmap.org/wiki/Osmfilter]]を使って削除する。&ref(del.txt);にいらないタグを入れておく。 |
> osmfilter japan.o5m --parameter-file=del.txt > japan_temp.o5m | > osmfilter japan.o5m --parameter-file=del.txt > japan_temp.o5m | ||
- | さらに, | + | さらに,.osmに戻して,perlでいらない部分を削除してみる。 |
> osmconvert japan_temp.o5m -o=japan_temp.osm | > osmconvert japan_temp.o5m -o=japan_temp.osm | ||
> perl -p -e 's/\(.+?\)//g;' japan_temp.osm > japan.osm | > perl -p -e 's/\(.+?\)//g;' japan_temp.osm > japan.osm | ||
- | こんなようにして,英語とかを削除した。 | + | こんなようにして,(英語)とかを削除した。 |
- | これで,ベクター日本地図のjapan.osmが出来た。.osmファイルはテキストファイルで,日本全体だと20G以上になります。 | + | これで,ベクター日本地図のjapan.osmが出来た。.osmファイルはテキストファイル(xml)で,日本全体だと20G以上になります。 |
*** SRTMのデータから等高線地図を作成 [#w49cf595] | *** SRTMのデータから等高線地図を作成 [#w49cf595] | ||
Line 41: | Line 41: | ||
そこで,日本のベクター等高線地図を作ることにした。 | そこで,日本のベクター等高線地図を作ることにした。 | ||
+ | 日本の等高線データを得るには, | ||
+ | - 国土地理院~ | ||
+ | [[国土地理院>http://www.gsi.go.jp/kiban/index.html]]から正確な等高線データ(5mまたは10mメッシュ)をダウンロード出来る。~ | ||
+ | ファイルフォーマットは,JPGIS(GML)ということだが・・・~ | ||
+ | - SRTM~ | ||
Shuttle Radar Topography Mission(SRTM)と呼ばれるスペースシャトルに積み込んだレーダを使って全世界の詳細な立体地形データを作成すること目的としたミッションがあって,その成果が利用できるみたい。~ | Shuttle Radar Topography Mission(SRTM)と呼ばれるスペースシャトルに積み込んだレーダを使って全世界の詳細な立体地形データを作成すること目的としたミッションがあって,その成果が利用できるみたい。~ | ||
[[SRTM3 Version3>http://e4ftl01.cr.usgs.gov/SRTM/SRTMGL3.003/2000.02.11/]]~ | [[SRTM3 Version3>http://e4ftl01.cr.usgs.gov/SRTM/SRTMGL3.003/2000.02.11/]]~ | ||
ここからデータ(.hgt.zip)をダウンロード出来る。~ | ここからデータ(.hgt.zip)をダウンロード出来る。~ | ||
- | SRTMのデータからOpenStreetMapのフォーマットに変換してくれるツールがあるみたいなんで,それを使用して等高線地図を作ってみた。 | + | |
+ | SRTMのデータからOpenStreetMapのフォーマットに変換してくれる以下のようなツールがあるみたいなんで,それを使用して等高線地図を作ってみた。(国土地理院のデータの方が正確らしいが・・・) | ||
[[srtm2osm>http://wiki.openstreetmap.org/wiki/Srtm2Osm#Download]]~ | [[srtm2osm>http://wiki.openstreetmap.org/wiki/Srtm2Osm#Download]]~ | ||
- | まず見つけたツールがsrtm2osm。OpenStreetMapのwikiに使い方が書かれていた。.netのアプリなんでWindows用。(monoを使ってLinuxでも動かせるようだが・・・)~ | + | まず見つけたツールがsrtm2osm。~ |
- | srtm2osmのオプションの-bounds1に日本の左下の緯度・経度と右上の緯度・経度を指定すれば,SRTMデータが有るサーバからデータをダウンロードして.osmファイルを作成してくれる。~ | + | OpenStreetMapのwikiに使い方が書かれていた。.netのアプリなんでWindows用。(monoを使ってLinuxでも動かせるようだが・・・)~ |
+ | srtm2osmのオプションの-bounds1に日本の左下の緯度・経度と右上の緯度・経度を指定すれば,SRTMデータが有るサーバからデータをダウンロードして,等高線データを作成して,それを.osmファイルとして作成してくれる。~ | ||
ただ日本全国になると129個のファイル(データがある分)の.osmファイルが出来てしまって,これを1つの.osmにマージしないといけないのだが,うまくマージ(osmosisを使った)が出来ない。~ | ただ日本全国になると129個のファイル(データがある分)の.osmファイルが出来てしまって,これを1つの.osmにマージしないといけないのだが,うまくマージ(osmosisを使った)が出来ない。~ | ||
[[Phyghtmap>http://katze.tfiu.de/projects/phyghtmap/index.html]]~ | [[Phyghtmap>http://katze.tfiu.de/projects/phyghtmap/index.html]]~ | ||
- | 次に見つけたのがPhyghtmap。Pythonで動くので,WindowsでもLinuxでも使える。このツールでもやはり129個のデータをダウンロードするのはsrtm2osmと同様だが,.osmに変換する時にオプションにmax-nodes-per-tile=0を使うと,1個の.osmにマージして出力してくれた :-D | + | 次に見つけたのがPhyghtmap。~ |
+ | Pythonで動くので,WindowsでもLinuxでも使える。このツールでもやはり129個のデータをダウンロードするのはsrtm2osmと同様だが,.osmに変換する時にオプションに--max-nodes-per-tile=0を使うと,1個の.osmにマージして出力してくれた :-D | ||
> phyghtmap --polygon=japan.poly --output-prefix=japan_srtm --srtm=3 --step=20 --line-cat=500,100 --start-node-id=20000000000 --start-way-id=10000000000 --write-timestamp --max-nodes-per-tile=0 | > phyghtmap --polygon=japan.poly --output-prefix=japan_srtm --srtm=3 --step=20 --line-cat=500,100 --start-node-id=20000000000 --start-way-id=10000000000 --write-timestamp --max-nodes-per-tile=0 | ||
- | step=20で20mの等高線に,line-cat=500,100で500m/100m毎に少し太線にするようにした。write-timestampオプションを指定しないと,後でosmosisでマージしてLocus map用のベクター地図.mapファイルを作成する時にtimestampが無いってエラーを出してうまくいかない。~ | + | --step=20で20mの等高線に,--line-cat=500,100で500m/100m毎に少し太線にするようにした。--write-timestampオプションを指定しないと,後でosmosisでマージしてLocus map用のベクター地図.mapファイルを作成する時にtimestampが無いってエラーを出してうまくいかない。~ |
これで,なんとか20mでの日本の等高線地図japan_srtm.mapを作成できた。~ | これで,なんとか20mでの日本の等高線地図japan_srtm.mapを作成できた。~ | ||
ただ出来上がった等高線地図には,おかしな等高線がたくさん出来ている。ダウンロードしたSRTMの.hgtファイルを確認したら,ところどころデータがおかしいのが原因。~ | ただ出来上がった等高線地図には,おかしな等高線がたくさん出来ている。ダウンロードしたSRTMの.hgtファイルを確認したら,ところどころデータがおかしいのが原因。~ | ||
- | srtm2osmでダウンロードした.hgtファイルのデータは大丈夫みたいなので(つまり http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/ にあるデータはダメで,http://e4ftl01.cr.usgs.gov/SRTM/SRTMGL3.003/2000.02.11/ のだと大丈夫ってこと。) ,あらためて.hgtファイルをこれに入れ替えて,phyghtmapで.osmファイルを作成する。~ | + | srtm2osmでダウンロードした.hgtファイルのデータは大丈夫みたいなので(つまり http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/ にあるデータはダメで,http://e4ftl01.cr.usgs.gov/SRTM/SRTMGL3.003/2000.02.11/ のだと大丈夫ってこと。) ,srtm2osmでダウンロードした.hgtファイルに入れ替えて,phyghtmapを再度使って.osmファイルを作成する。~ |
ダウンロードした.hgtファイルをLocus/data/srtm/ フォルダーに入れておいて,Locus mapで地形を表示する設定にすると,起伏なんかが明暗表示されて見やすくなります。 | ダウンロードした.hgtファイルをLocus/data/srtm/ フォルダーに入れておいて,Locus mapで地形を表示する設定にすると,起伏なんかが明暗表示されて見やすくなります。 | ||
*** 日本の地図と等高線をマージして完成 [#g8a11fa9] | *** 日本の地図と等高線をマージして完成 [#g8a11fa9] | ||
- | 上で作成したベクター日本地図とベクター等高線地図を1つのファイルにマージします。~ | + | 上で作成したベクター日本地図とベクター等高線地図を1つのファイルにマージしながら,ベクターマップの.mapフォーマットに変換します。~ |
- | ツールはOpenStreetMapのwikiに書かれている[[osmosis>http://wiki.openstreetmap.org/wiki/JA:Osmosis]]を使いました。 | + | ツールはOpenStreetMapのwikiに書かれている[[osmosis>http://wiki.openstreetmap.org/wiki/JA:Osmosis]]と[[mapsforge writer plugin(mapsforge-map-writer-*.jar)>https://github.com/mapsforge/mapsforge]]を使いました。Locusのベクターマップのフォーマットは,mapsforgeライブラリをサポートしているからです。他にもGarminのベクターマップの.imgファイルもそのまま使えます。 |
- | osmosisはjavaアプリケーションですが,日本全体を処理する場合はRAMがたくさんあるPC出ないと,そのままではメモリ不足で停止しちゃいます。(5Gでも足りない)~ | + | osmosisはjavaアプリケーションですが,日本全体を処理する場合はRAMがたくさんあるPC出ないと,そのままではメモリ不足で停止しちゃいます。(5Gを割り当てても足りない)~ |
- | type=hdを使うと速度は遅くなりますが,メモリ不足はなんとか回避できます。 | + | type=hdを使うと速度はかなり遅くなりますが,メモリ不足はなんとか回避できます。 |
> osmosis --read-xml file="japan_osm" --sort -- read-xml file="japan_strm.osm" --sort --merge --mapfile-writer file="japan.map" type=hd tag-conf-file=tags.xml zoom-interval-conf=10,9,11,14,12,21 map-start-zoom=10 | > osmosis --read-xml file="japan_osm" --sort -- read-xml file="japan_strm.osm" --sort --merge --mapfile-writer file="japan.map" type=hd tag-conf-file=tags.xml zoom-interval-conf=10,9,11,14,12,21 map-start-zoom=10 | ||
Line 75: | Line 83: | ||
とにかく時間がかかります。マージするだけでも大体27時間ぐらいかかった :-o | とにかく時間がかかります。マージするだけでも大体27時間ぐらいかかった :-o | ||
- | 出来た日本のベクターマップは,[[こちら>https://onedrive.live.com/redir?resid=9D5AE460143634BB%21936]] | + | こうやって出来た日本のベクターマップjapan.mapを,Locus/mapsVector/japanフォルダーにコピーして,Locusで使用することが出来た。~ |
+ | #ref(japan_map.png) | ||
+ | |||
+ | 作成した日本のベクターマップは,[[こちら(2015/10/06時点)>https://onedrive.live.com/redir?resid=9D5AE460143634BB%21936]] |