SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
地球地図を利用した 
地図タイルの作成 
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
アカウント 
• github: https://github.com/smellman/ 
• Twitter: @smellman 
• Facebook: 名前で探せば出てくる
面倒なので 
組長と呼ばれてます
専門家? 
• たまたま国土地理院の「地球地図Web提供用デー 
タ整備ツール作成 」を受注できた 
• JICAの講習(10/29-30)を担当 
• 同じネタを使ってFOSS4G TOKYOのハンズ 
オンを担当(10/31) 
• ベースはいずれも国土地理院の案件の知見
今日のトピック 
• タイルの話 
• 地球地図のベクターファイルをタイルにする 
• 地球地図のラスターファイルをタイルにする 
• タイルを使ったデモ 
• 細かいやり方はワークショップのテキストを公 
開するのでそっちを見て欲しい
ポイント 
• 今回の話は地球地図を使っているけど、地球地 
図以外でも使える話 
• タイルを作る勉強用の素材としても地球地図は 
使える 
• タイル仕様をdisる
タイルの話
ややこしいタイル 
• 有名な仕様が二つある 
• TMS, WMTS 
• TMSとWMTSは原点が違う 
• TMSは左下(数学的) 
• WMTSは右上(コンピュータ的)
世界は雑 
• TMSもWMTSも面倒 
• TMSのY座標を逆にすればよくね? 
• Y coordinate flipped 
• OpenStreetMap
メタデータなにそれ? 
• TMSもWMTSもメタデータの仕様がある 
• どのようなURLでタイルにアクセスできるか? 
• どのようなタイルが利用可能なのか? 
• みんなもはや無視してる 
• http://…/{z}/{x}/{y}.png でいいだろ
無視した事案 
• OpenStreetMap 
• メタデータ見たことない 
• 国土地理院 
• 仕様に見当たらない
本当に欲しいもの
XMLっぽく言うと 
我々が必要だったのは 
WSDLでもSOAPでも 
なくXML-RPCだった 
だろ?
そもそもJSONで?
タイルも二の舞いになってはいけない
xyzタイル 
• y coordinate flipped TMS と WMTS がだいた 
い同じタイルを出している 
• 便宜上xyzタイルと呼ぶ 
• 今回作るのはこいつ
もういいよこれで 
http://portal.cyberjapan.jp/help/development/siyou.html
悪巧み 
• xyz tileをRFC化 
• 4/1にリリースして世界を混乱させよう
_人人人人人人人人_ 
> タイル三兄弟 < 
‾Y^Y^Y^Y^Y^Y^Y‾
タイルを作る
用意するもの 
• OSGeoLive 8.0 
• ベースはこれだけでOK! 
• OSGeo4W+Tilemillでも別々に入れてもOK 
• batchファイルをいれる必要がある 
• tms2xyz.pyというプログラムは別途紹介
ダウンロード 
• https://iscgm.org/gmd/
ベクタから変換の 
ワークフロー 
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
Tilemillでデザイン 
• Tilemillでshpのレイヤーを追加 
• CartoCSSを駆使してデザインをする 
• デザインセンスが問われる
コツ 
• MapBoxにデザイン方法の解説があるのでパクりまくる 
• https://www.mapbox.com/tilemill/docs/manual/ 
carto/ 
• Pointの画像はMakiを利用するとよい 
• https://www.mapbox.com/maki/ 
• zoomレベルによる振り分けは根気よくやる 
• 仕様を見ながら表示するものを決める
Tilemillの編集例
Tilemillの編集例
仕様の読み方
mbtilesを出力
mbtilesを出力
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
できたもの 
work/lka/tiles/lka_bnd/9/370/242.png
ラスタから変換の 
ワークフロー 
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
QGISで開く
スタイル付けをする
色付けしたGeoTiff
gdal2tiles.pyを使って 
TMSタイルを作成 
• -r: サンプリング方法 
• -e: レジューム 
• -z: ズームレベルの範囲 
$ gdal2tiles.py -r near -e -v -z 0-11  
raster/el_lka.tiff tms/el_lka
tms2xyz.pyを使って 
xyzタイルを作成 
• https://github.com/smellman/ 
creating_tiles_with_global_map_support_files
ラスタからの変換時の注意点 
• gdal2tilesでたまにコケる 
• フィリピンの標高データでひっかかってるのは 
確認 
• gdalwarpで解像度を変更すれば回避可能 
• というかgdal2tilesのバグ
デモ
Leafletで表示
とっても簡単 
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);
おまけ
とある質問 
• JICAの研修生から質問 
• 「なぜコマンドラインのような面倒なものを使 
うのか?ArcGIS使えばいいのではないか」
使った事ないので 
知らない
なぜFOSSで? 
• コマンドの方が楽(身も蓋もない話) 
• コマンドを使えば繰り返し処理が楽 
• OSの壁があまりない(今回のはWindows, Linux, 
Macで動く)
タイル化の良いとこ 
• file urlを使えばローカルで動かせる(PC環境) 
• mbtilesを使えば持ち運びはもっと楽 
• スマートフォンに地図をいれて調査に出るとか 
簡単に可能
もっとタイル化 
• 標高データは上手く加工すれば地理院地図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
人類のためにgdal2tiles作り 
なおした方がいい気がする 
(TMSしか吐かないし!)
以上

Contenu connexe

Tendances

QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)
IWASAKI NOBUSUKE
 

Tendances (20)

Qgis raster 3.16
Qgis raster 3.16Qgis raster 3.16
Qgis raster 3.16
 
CS立体図を用いた地形判読(FOSS4G 2017 Tokyoハンズオン)
CS立体図を用いた地形判読(FOSS4G 2017 Tokyoハンズオン)CS立体図を用いた地形判読(FOSS4G 2017 Tokyoハンズオン)
CS立体図を用いた地形判読(FOSS4G 2017 Tokyoハンズオン)
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析
 
QGIS training 2/3
QGIS training 2/3QGIS training 2/3
QGIS training 2/3
 
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
 
CS立体図を自作して公開してみた
CS立体図を自作して公開してみたCS立体図を自作して公開してみた
CS立体図を自作して公開してみた
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
超初心者向けハンズオン講座 「ゼロから始めるQGIS」
超初心者向けハンズオン講座 「ゼロから始めるQGIS」超初心者向けハンズオン講座 「ゼロから始めるQGIS」
超初心者向けハンズオン講座 「ゼロから始めるQGIS」
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)
 
Cesiumを用いた3次元リアルタイムデータの可視化について
Cesiumを用いた3次元リアルタイムデータの可視化についてCesiumを用いた3次元リアルタイムデータの可視化について
Cesiumを用いた3次元リアルタイムデータの可視化について
 
ニコニコ生放送の配信基盤改善
ニコニコ生放送の配信基盤改善ニコニコ生放送の配信基盤改善
ニコニコ生放送の配信基盤改善
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
【FOSS4G 2016 Hokkaido】Cesiumマニアックス
【FOSS4G 2016 Hokkaido】Cesiumマニアックス【FOSS4G 2016 Hokkaido】Cesiumマニアックス
【FOSS4G 2016 Hokkaido】Cesiumマニアックス
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
QGIS初級編 さわってみようQGIS (for ver. 2.8.2 at FOSS4G 2015 Hokkaido)
QGIS初級編 さわってみようQGIS (for ver. 2.8.2 at FOSS4G 2015 Hokkaido)QGIS初級編 さわってみようQGIS (for ver. 2.8.2 at FOSS4G 2015 Hokkaido)
QGIS初級編 さわってみようQGIS (for ver. 2.8.2 at FOSS4G 2015 Hokkaido)
 
大規模サービスにおける価値開発の“これまで”と“将来”~新たな“じゃらんnet”のチャレンジに関して~
大規模サービスにおける価値開発の“これまで”と“将来”~新たな“じゃらんnet”のチャレンジに関して~大規模サービスにおける価値開発の“これまで”と“将来”~新たな“じゃらんnet”のチャレンジに関して~
大規模サービスにおける価値開発の“これまで”と“将来”~新たな“じゃらんnet”のチャレンジに関して~
 

Similaire à 地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2

とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
mecha mogera
 

Similaire à 地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2 (20)

Foss4g2009tokyo Yachi Mapion
Foss4g2009tokyo Yachi MapionFoss4g2009tokyo Yachi Mapion
Foss4g2009tokyo Yachi Mapion
 
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08
 
Kof110912osgeojpfoss4gpresentation
Kof110912osgeojpfoss4gpresentationKof110912osgeojpfoss4gpresentation
Kof110912osgeojpfoss4gpresentation
 
ISUCON夏期講習2015_2 実践編
ISUCON夏期講習2015_2 実践編ISUCON夏期講習2015_2 実践編
ISUCON夏期講習2015_2 実践編
 
Modulemaking
ModulemakingModulemaking
Modulemaking
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
 
20150317 firefox os勉強会
20150317 firefox os勉強会20150317 firefox os勉強会
20150317 firefox os勉強会
 
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会
 
Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法
 
NoOps Japanサイトの紹介
 NoOps Japanサイトの紹介 NoOps Japanサイトの紹介
NoOps Japanサイトの紹介
 
FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
XOOPS Cube 2012
XOOPS Cube 2012XOOPS Cube 2012
XOOPS Cube 2012
 
WEB TOUCH MEETING #52
WEB TOUCH MEETING #52WEB TOUCH MEETING #52
WEB TOUCH MEETING #52
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 

Plus de Taro Matsuzawa

スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
Taro Matsuzawa
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
Taro Matsuzawa
 
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござるベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
Taro Matsuzawa
 
Mozilla コアハッカー育成計画(PDF)
Mozilla コアハッカー育成計画(PDF)Mozilla コアハッカー育成計画(PDF)
Mozilla コアハッカー育成計画(PDF)
Taro Matsuzawa
 
Mozilla コアハッカー育成計画
Mozilla コアハッカー育成計画Mozilla コアハッカー育成計画
Mozilla コアハッカー育成計画
Taro Matsuzawa
 

Plus de Taro Matsuzawa (16)

タイルの話
タイルの話タイルの話
タイルの話
 
Couchbase hackaton pomo
Couchbase hackaton pomoCouchbase hackaton pomo
Couchbase hackaton pomo
 
11月のささみ: pgRoutingって何?
11月のささみ: pgRoutingって何?11月のささみ: pgRoutingって何?
11月のささみ: pgRoutingって何?
 
OSMを使ったスマホ&Web開発入門
OSMを使ったスマホ&Web開発入門OSMを使ったスマホ&Web開発入門
OSMを使ったスマホ&Web開発入門
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
AFNetworking使ってみた
AFNetworking使ってみたAFNetworking使ってみた
AFNetworking使ってみた
 
スマホ開発者も使えるWireshark
スマホ開発者も使えるWiresharkスマホ開発者も使えるWireshark
スマホ開発者も使えるWireshark
 
来年のLLeventのお知らせ @ OSC2011 Tokyo/Fall
来年のLLeventのお知らせ @ OSC2011 Tokyo/Fall来年のLLeventのお知らせ @ OSC2011 Tokyo/Fall
来年のLLeventのお知らせ @ OSC2011 Tokyo/Fall
 
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
 
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござるベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
ベトナムにRoRを教えに行ったら大変なお土産をもらったでござる
 
デバッガを使おう@ブラウザ勉強会#1
デバッガを使おう@ブラウザ勉強会#1デバッガを使おう@ブラウザ勉強会#1
デバッガを使おう@ブラウザ勉強会#1
 
(元)コミュニティメンバーから見たMozilla / Firefoxの歴史と展望@Browser Workshop
(元)コミュニティメンバーから見たMozilla / Firefoxの歴史と展望@Browser Workshop(元)コミュニティメンバーから見たMozilla / Firefoxの歴史と展望@Browser Workshop
(元)コミュニティメンバーから見たMozilla / Firefoxの歴史と展望@Browser Workshop
 
デコメを送る
デコメを送るデコメを送る
デコメを送る
 
Mozilla コアハッカー育成計画(PDF)
Mozilla コアハッカー育成計画(PDF)Mozilla コアハッカー育成計画(PDF)
Mozilla コアハッカー育成計画(PDF)
 
Mozilla コアハッカー育成計画
Mozilla コアハッカー育成計画Mozilla コアハッカー育成計画
Mozilla コアハッカー育成計画
 

地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2