SlideShare a Scribd company logo
Let’s start
OpenStreetMap
Developing
OpenStreetMap Foundation Japan
OpenStreetMap 北陸

宇野泰行
地図タイルについて
こんな URL でタイル画像にアクセス出来ます。
http://tile.openstreetmap.org/{z}/{x}/{y}.png
z( ズームレベルは 0 ~ 18? 19? までです。 )
x,y は緯度経度ではなく、そのズームレベルでのタイルの並び順。

z=0
x=0,y=0

z=1
z=1
x=0,y=0 x=1,y=0
ズームが 1 上がる
毎に 4 分割

z=1
z=1
x=0,y=1 x=1,y=1
地図タイルの取得
x,y は緯度・経度ではないので、
緯度・経度からタイルを取得したい場合には計算しよう。
【 AS3 で計算した例】
var xf: Number = (lon + 180) / 360 * Math.pow(2, zoom);
var yf: Number = (1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 /
Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom);
var xx: Number = Math.floor(xf);
var yy: Number = Math.floor(yf);
trace("X:" + xx + " Y:" + yy);
地図タイルについて
地図タイルは OSM のデータベースに更新がある度に都度更新され
ている。
あくまでも画像なので、言語ごとにタイル画像が必要。
例えば、店舗名や道路名など、 name:ja( 日本語 ) タグを参照してあ
れば表示、無ければ name( 現地語 ) を表示。
同様にフランス語で地図表示するなら name:fr を参照して・・・
地図タイルまとめ
1 言語につき 1 画像のため、全ての言語をカバーするにはタイル
サーバーに大量の画像を保持する必要がある。よってなかなか
表示言語の切替って難しい。
→ クライアントで osm ファイルからレンダリングすれば簡単に切
り替えられそう。

多言語地図ビューアの開発
とかどうでしょう
API について
多言語地図ビューアを作るにしても OSM データを取得する必要が
ある。
OSM のデータを取得する API

データ取得 更新

速度

Overpass API

可

不可

高速

API v0.6

可

可
Overpass API について
Overpass API は JSON もしくは XML 形式で
OSM データを取得できる。
Overpass API の中でも
・ OverpassXML
・ OverpassQL
の 2 つがある。
リクエストは URL にクエリや XML をくっつけ
て GET リクエストでいいです。
Overpass API
OverpassXML はその名の通り、 XML 形式でク
エリを記述する。
Overpass turbo(http://overpass-turbo.eu/) にて
OverpassQL と相互変換することも可能
で、 OverpassQL では一部サポートされてい
ない機能もあるので XML のほうをオススメ
します。
指定した緯度経度ボックス内の地物を取得した
り、指定した緯度経度から半径○ m の地物を
取得できます。もちろんタグでフィルタリン
グできる。
Overpass API でできないこと
例)
指定した緯度経度から半径○ m で取得すること
は出来るものの、取得したデータを近い順に
並べるなどは出来ない。
指定した 2 点間の距離を取るなどは出来ない。
→ このあたりは自力で計算?
API v0.6
REST API
GET や POST ではなく、主に PUT と DELETE
リクエストを使います。 (GPX のアップロー
ドのみ POST)
PUT や DELETE がサポートされていない言語
の場合にはヘッダを偽装すれば大丈夫。
【 AS3 での偽装例】
urlRequest.requestHeaders.push(new URLRequestHeader("X-HTTP-MethodOverride", "PUT"));
API v0.6
PUT や DELETE のパラメータに XML を使う場合が非
常に多いので、あなたが使う言語での XML 操作を確
認しておきましょう。
認証はベーシック認証でいいです。

データ更新するときの基本としては
1. チェンジセット作成のリクエストを投げる
2. データアップロードのリクエストを投げる
3. チェンジセットクローズのリクエストを投げ
る
API の実行例
Overpass API, API v0.6 共に、 AS3 の例を以前ブログに
書いたのでそちらを参照して下さい。
http://jmsnews.blog38.fc2.com/blog-entry-46.html

上のブログでは Overpass API は OverpassQL になってま
すが、 OverpassXML の場合には XML を改行無しで
URL にくっつけて流せばいいだけです。
Android 用 OSM エディタ
iOS には Pushpin OSM という凄く使いやすいア
プリがあるが、 Android には vespucci ぐら
い?
Vespucci は Pushpin より多様なことが出来る反
面、使いずらい。
Pushpin は確かに使いやすいが、一部タグが入
力出来ない。そもそもキーとして入力出来な
かったり、バリューがリストになかった
り・・・
Android 用 OSM エディタ
使用言語
AIR for Android
要はフラッシュのアプリ版
地図表示ライブラリ
Modest Maps
Android 用 OSM エディタ
ということで Pushpin ライクな
Android エディタ開発してます。
日本の OSM に特化!
・ name:ja_rm, name:ja_kana を
デフォで埋める。
・郵便番号から住所へ変換など
OSM ファイルの構造
<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' upload='true' generator='JOSMImportAssistant'>
<node id='-1' action='modify' visible='true' lat='35.943302' lon='136.188187'>
<tag k='source' v='Sabae City 2012' />
<tag k='source_ref' v='http://www.city.sabae.fukui.jp/users/tutujibus/web-api/01.html' />
<tag k='attribution' v='Sabae City' />
<tag k='highway' v='bus_stop' />
新規オブジェクトの場合
<tag k='bus' v='yes' />
にはマイナスのユニーク
な ID を振っておけばサー
<tag k='public_transport' v='platform' />
バで処理してくれる
<tag k='name' v='JR 鯖江駅(1番のりば) ' />
</node>
</osm>
API v0.6 でデータ更新する
時には、 XML 操作してタ
グを追加したり、削除し
たりしよう!
JOSM プラグイン
JOSM プラグイン開発
ほしいもの
・郵便番号から住所への変換プラグイン
・ name から name:ja_kana や name:ja_rm をデ
フォ埋め機能
参考:
http://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
JOSM プラグイン
・郵便番号から住所への変換プラグイン
については HelloWorld レベルまでは
10/12 の金沢もくもくで完成。
まとめ
主に
・ JOSM プラグイン
・エディタ
・クライアント側での地図ビューア
の開発を進めています。
一緒に開発しよう!
OpenStreetMap 北陸
https://www.facebook.com/groups/OSMHokuriku/
次回の OSM もくもく勉強会 in 北陸は、
1 泊 2 日の合宿とかにしようかなと思っています。

More Related Content

PPTX
前期講座09
PPTX
for関数を使った繰り返し処理によるヒストグラムの一括出力
PDF
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
PDF
PDF
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
PDF
高速な倍精度指数関数expの実装
PDF
Rの高速化
PPTX
R高速化
前期講座09
for関数を使った繰り返し処理によるヒストグラムの一括出力
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
高速な倍精度指数関数expの実装
Rの高速化
R高速化

What's hot (20)

PDF
V6でJIT・部分適用・継続
PPTX
Prosym2012
PDF
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
PPTX
20151118卒研進捗LT
PDF
Rのデータ構造とメモリ管理
PDF
条件分岐とcmovとmaxps
PDF
R3.0.0 is relased
KEY
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PPTX
巨大な表を高速に扱うData.table について
PDF
マーク&スイープ勉強会
PDF
R-hpc-1 TokyoR#11
PDF
仮想記憶の構築法
PDF
Common LispでGPGPU
PDF
llvm入門
PPT
python-geohex
PDF
Incanterの紹介
PDF
HPC Phys-20201203
PDF
研究動向から考えるx86/x64最適化手法
PDF
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
PDF
emcjp Item 42
V6でJIT・部分適用・継続
Prosym2012
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
20151118卒研進捗LT
Rのデータ構造とメモリ管理
条件分岐とcmovとmaxps
R3.0.0 is relased
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
巨大な表を高速に扱うData.table について
マーク&スイープ勉強会
R-hpc-1 TokyoR#11
仮想記憶の構築法
Common LispでGPGPU
llvm入門
python-geohex
Incanterの紹介
HPC Phys-20201203
研究動向から考えるx86/x64最適化手法
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
emcjp Item 42
Ad

Similar to 始めよう!OpenStreetMap Developing (20)

PDF
2012 07 14_osm-ws_2
PDF
2013 02 09_osc2013_hamamatsu_osm
PDF
あなたの街のAddicted Mapper
PPT
2011 08 09_open_streetmap_general
PDF
自由な地図を作るオープンストリートマップの活動
PDF
2012 07 27_osm_project10
PDF
2012 07 28_osm_ws3
PDF
OSMを使ったスマホ&Web開発入門
PDF
2012 08 11_osm_hamamatsu
PDF
2012 06 30_osm-ws_1a
PDF
オープンデータからOpenStreetMapへのデータ投入方法とOverpass API
PPTX
Xamarinで作る 「オリジナルタイル地図」アプリ
PDF
Open streetmap入門マニュアル gpsトレース_sasaki
PDF
Yolp30分クッキング 2012北海道
PDF
Html5 canvasとgoogle maps apiで遊んでみた
PDF
OpenLayersで始める地図の操作
PDF
20130613 Location Business Japan 2013 "OpenStreetMap Workshop"
PPTX
Osmマニュアル〜gpsトレース〜
PPT
2010 09 08_nagoya-cu_osm
PPTX
2019 susonohighschool osm_umap
2012 07 14_osm-ws_2
2013 02 09_osc2013_hamamatsu_osm
あなたの街のAddicted Mapper
2011 08 09_open_streetmap_general
自由な地図を作るオープンストリートマップの活動
2012 07 27_osm_project10
2012 07 28_osm_ws3
OSMを使ったスマホ&Web開発入門
2012 08 11_osm_hamamatsu
2012 06 30_osm-ws_1a
オープンデータからOpenStreetMapへのデータ投入方法とOverpass API
Xamarinで作る 「オリジナルタイル地図」アプリ
Open streetmap入門マニュアル gpsトレース_sasaki
Yolp30分クッキング 2012北海道
Html5 canvasとgoogle maps apiで遊んでみた
OpenLayersで始める地図の操作
20130613 Location Business Japan 2013 "OpenStreetMap Workshop"
Osmマニュアル〜gpsトレース〜
2010 09 08_nagoya-cu_osm
2019 susonohighschool osm_umap
Ad

始めよう!OpenStreetMap Developing

Editor's Notes