地質図の歴史と地質図学 - do-geo.comC3%CF%BC%C1%BF%DE%A4… · 地質図の歴史と地質図学 (キーワード)地質図の歴史 地質図学 地層境界線 断層
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
-
Upload
taro-matsuzawa -
Category
Engineering
-
view
1.102 -
download
12
description
Transcript of 地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した 地図タイルの作成
Taro Matsuzawa Georepublic Japan
FOSS4G TOKYO 2014 全体セッション2 手軽に使えるグローバル地理空間情報とFOSS4G
自己紹介• プログラマ
• 過去に某OSSの組で組長をやっていました
• 地理空間情報系の経験は約3年
• 学生時代のアルバイト(馬場さんの元部下)半年
• Georepublic Japan で二年ちょい
• ブレイクコアガチ勢
執筆とか
• Firefox 3 Hacks, Firefox Hacks Rebooted (O’REILLY JAPAN)
• C Magazine
• Software Design
• いずれもFirefoxの話
肩書• Georepublic Japan シニアエンジニア
• 日本UNIXユーザ会理事
• OSMFJメンバー
• OSGeo財団日本支部運営委員<-New
• 株式会社Coaido CTO (副業) <- New
専門家?• たまたま国土地理院の「地球地図Web提供用データ整備ツール作成 」を受注できた
• JICAの講習(10/29-30)を担当
• 同じネタを使ってFOSS4G TOKYOのハンズオンを担当(10/31)
• ベースはいずれも国土地理院の案件の知見
今日のトピック• タイルの話
• 地球地図のベクターファイルをタイルにする
• 地球地図のラスターファイルをタイルにする
• タイルを使ったデモ
• 細かいやり方はワークショップのテキストを公開するのでそっちを見て欲しい
メタデータなにそれ?• TMSもWMTSもメタデータの仕様がある
• どのようなURLでタイルにアクセスできるか?
• どのようなタイルが利用可能なのか?
• みんなもはや無視してる
• http://…/{z}/{x}/{y}.png でいいだろ
用意するもの• OSGeoLive 8.0
• ベースはこれだけでOK!
• OSGeo4W+Tilemillでも別々に入れてもOK
• batchファイルをいれる必要がある
• tms2xyz.pyというプログラムは別途紹介
ベクタから変換の ワークフロー
ogr2ogr
Tilemill
mb-util
gmlファイルをshpファイルに変換
デザインを作成して、 mbtiles形式でタイルを出力
mbtiles形式のタイルを xyzタイルに変換
mbtiles• MapBoxが作成したタイルの仕様
• SQLiteにタイルを格納するもの
• 取り出しもクエリ吐くだけでよい
• 中身のY座標はTMS準拠
• 作者が後悔してて笑える
• スマートフォンに入れてオフラインマップとかできる
• MapBox iOS SDK, MapBox Android
gmlからshpに変換• ogr2ogrを使って変換を行う
$ ogr2ogr -s_srs "+proj=latlong +datum=WGS84 +axis=neu +wktext" \
-t_srs "+proj=latlong +datum=WGS84 +axis=enu +wktext"
-f "ESRI Shapefile" coastl_lka.shp coastl_lka.gml
コツ• MapBoxにデザイン方法の解説があるのでパクりまくる
• https://www.mapbox.com/tilemill/docs/manual/carto/
• Pointの画像はMakiを利用するとよい
• https://www.mapbox.com/maki/
• zoomレベルによる振り分けは根気よくやる
• 仕様を見ながら表示するものを決める
mbutilで変換$ git clone https://github.com/mapbox/mbutil.git $ cd mbutil/ $ sudo python setup.py install
$ cd ~/work/lka $ mkdir tiles $ mb-util mbtiles/lka_bnd.mbtiles tiles/lka_bnd
ラスタから変換の ワークフロー
gdal_buildvrt gdaltraslate
QGIS
gdal2tiles.py
BILファイルからGeoTiffを作成
色付けをしたGeoTiffを作成
GeoTiffからTMSタイルを作成
tms2xyz.py TMSタイルからxyzタイルを作成
GeoTiffを作成• 地球地図で配ってるTiffファイルはgdal2tilesで処理できないのでBILファイルから処理をする
• BILファイルは分割されてるので一つにまとめる
$ gdalbuildvrt --config GDAL_CACHEMAX 2048 \ el_lka.vrt el/globalm/area/raster/el*.bil $ gdal_translate -a_srs EPSG:4326 \ --config GDAL_CACHEMAX 2048 \ el_lka.vrt el_lka.tif
gdal2tiles.pyを使って TMSタイルを作成
• -r: サンプリング方法
• -e: レジューム
• -z: ズームレベルの範囲
$ gdal2tiles.py -r near -e -v -z 0-11 \ raster/el_lka.tiff tms/el_lka
ラスタからの変換時の注意点
• gdal2tilesでたまにコケる
• フィリピンの標高データでひっかかってるのは確認
• gdalwarpで解像度を変更すれば回避可能
• というかgdal2tilesのバグ
とっても簡単var bnd_layer = L.tileLayer( './lka/tiles/lka_bnd/{z}/{x}/{y}.png'); var overlay_layers = { "Boundary": bnd_layer }; L.control.layers(base_layers, overlay_layers).addTo(map);
もっとタイル化• 標高データは上手く加工すれば地理院地図3D的なことも可能
• 標高タイルの分野は結構熱い(Cesium quantized-mesh, heightmap)
• こいつらもTMS準拠でさらにrootが異なるので注意
• 範囲が-90deg ~ 90degなのも注意
タイル化の注意• 世界中を吐き出すと大量のファイルを書き出す
• zoom=18 - 680億ファイルぐらい
• Ext4のデフォルトの限界を超える(40億ファイル)
• ファイルシステムを作るときにファイル作成数及びファイル容量を試算しておく必要がある
gdal2tilesが遅い• 地球地図の全球版のファイルを変換するとすごい時間がかかる
• Core i3+4GB Memoryのマシンで1週間以上かかる
• 遅い理由は分散処理をしてなく1つずつタイルを作るから
高速なgdal2tiles• タイルを作成するプロセスをファイル単位でoffsetを設定して分散化する
プロセス 1 2 3 4
ファイル 0.png 1.png 2.png 3.png
ファイル 4.png 5.png 6.png 7.png
ファイル 8.png 9.png 10.png 11.png