More Related Content
Similar to 地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2 (20)
More from Taro Matsuzawa (16)
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
- 2. 自己紹介
• プログラマ
• 過去に某OSSの組で組長をやっていました
• 地理空間情報系の経験は約3年
• 学生時代のアルバイト(馬場さんの元部下)半年
• Georepublic Japan で二年ちょい
• ブレイクコアガチ勢
- 3. 執筆とか
• Firefox 3 Hacks, Firefox Hacks
Rebooted (O’REILLY JAPAN)
• C Magazine
• Software Design
• いずれもFirefoxの話
- 4. 肩書
• Georepublic Japan シニアエンジニア
• 日本UNIXユーザ会理事
• OSMFJメンバー
• OSGeo財団日本支部運営委員<-New
• 株式会社Coaido CTO (副業) <- New
- 5. アカウント
• github: https://github.com/smellman/
• Twitter: @smellman
• Facebook: 名前で探せば出てくる
- 8. 今日のトピック
• タイルの話
• 地球地図のベクターファイルをタイルにする
• 地球地図のラスターファイルをタイルにする
• タイルを使ったデモ
• 細かいやり方はワークショップのテキストを公
開するのでそっちを見て欲しい
- 19. xyzタイル
• y coordinate flipped TMS と WMTS がだいた
い同じタイルを出している
• 便宜上xyzタイルと呼ぶ
• 今回作るのはこいつ
- 21. 悪巧み
• xyz tileをRFC化
• 4/1にリリースして世界を混乱させよう
- 24. 用意するもの
• OSGeoLive 8.0
• ベースはこれだけでOK!
• OSGeo4W+Tilemillでも別々に入れてもOK
• batchファイルをいれる必要がある
• tms2xyz.pyというプログラムは別途紹介
- 26. ベクタから変換の
ワークフロー
ogr2ogr
Tilemill
mb-util
gmlファイルをshpファイルに変換
デザインを作成して、
mbtiles形式でタイルを出力
mbtiles形式のタイルを
xyzタイルに変換
- 27. mbtiles
• MapBoxが作成したタイルの仕様
• SQLiteにタイルを格納するもの
• 取り出しもクエリ吐くだけでよい
• 中身のY座標はTMS準拠
• 作者が後悔してて笑える
• スマートフォンに入れてオフラインマップとかできる
• MapBox iOS SDK, MapBox Android
- 28. 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
- 30. コツ
• MapBoxにデザイン方法の解説があるのでパクりまくる
• https://www.mapbox.com/tilemill/docs/manual/
carto/
• Pointの画像はMakiを利用するとよい
• https://www.mapbox.com/maki/
• zoomレベルによる振り分けは根気よくやる
• 仕様を見ながら表示するものを決める
- 36. 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
- 38. ラスタから変換の
ワークフロー
gdal_buildvrt
gdaltraslate
QGIS
gdal2tiles.py
BILファイルからGeoTiffを作成
色付けをしたGeoTiffを作成
GeoTiffからTMSタイルを作成
tms2xyz.py TMSタイルからxyzタイルを作成
- 39. 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
- 48. とっても簡単
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);
- 55. タイル化の良いとこ
• file urlを使えばローカルで動かせる(PC環境)
• mbtilesを使えば持ち運びはもっと楽
• スマートフォンに地図をいれて調査に出るとか
簡単に可能