Your SlideShare is downloading. ×
始めよう!OpenStreetMap Developing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

始めよう!OpenStreetMap Developing

1,230
views

Published on

2013/10/12のもくもく勉強会 in 金沢の内容まとめです。

2013/10/12のもくもく勉強会 in 金沢の内容まとめです。

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,230
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • {}
  • Transcript

    • 1. Let’s start OpenStreetMap Developing OpenStreetMap Foundation Japan OpenStreetMap 北陸 宇野泰行
    • 2. 地図タイルについて こんな 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
    • 3. 地図タイルの取得 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);
    • 4. 地図タイルについて 地図タイルは OSM のデータベースに更新がある度に都度更新され ている。 あくまでも画像なので、言語ごとにタイル画像が必要。 例えば、店舗名や道路名など、 name:ja( 日本語 ) タグを参照してあ れば表示、無ければ name( 現地語 ) を表示。 同様にフランス語で地図表示するなら name:fr を参照して・・・
    • 5. 地図タイルまとめ 1 言語につき 1 画像のため、全ての言語をカバーするにはタイル サーバーに大量の画像を保持する必要がある。よってなかなか 表示言語の切替って難しい。 → クライアントで osm ファイルからレンダリングすれば簡単に切 り替えられそう。 多言語地図ビューアの開発 とかどうでしょう
    • 6. API について 多言語地図ビューアを作るにしても OSM データを取得する必要が ある。 OSM のデータを取得する API データ取得 更新 速度 Overpass API 可 不可 高速 API v0.6 可 可
    • 7. Overpass API について Overpass API は JSON もしくは XML 形式で OSM データを取得できる。 Overpass API の中でも ・ OverpassXML ・ OverpassQL の 2 つがある。 リクエストは URL にクエリや XML をくっつけ て GET リクエストでいいです。
    • 8. Overpass API OverpassXML はその名の通り、 XML 形式でク エリを記述する。 Overpass turbo(http://overpass-turbo.eu/) にて OverpassQL と相互変換することも可能 で、 OverpassQL では一部サポートされてい ない機能もあるので XML のほうをオススメ します。 指定した緯度経度ボックス内の地物を取得した り、指定した緯度経度から半径○ m の地物を 取得できます。もちろんタグでフィルタリン グできる。
    • 9. Overpass API でできないこと 例) 指定した緯度経度から半径○ m で取得すること は出来るものの、取得したデータを近い順に 並べるなどは出来ない。 指定した 2 点間の距離を取るなどは出来ない。 → このあたりは自力で計算?
    • 10. API v0.6 REST API GET や POST ではなく、主に PUT と DELETE リクエストを使います。 (GPX のアップロー ドのみ POST) PUT や DELETE がサポートされていない言語 の場合にはヘッダを偽装すれば大丈夫。 【 AS3 での偽装例】 urlRequest.requestHeaders.push(new URLRequestHeader("X-HTTP-MethodOverride", "PUT"));
    • 11. API v0.6 PUT や DELETE のパラメータに XML を使う場合が非 常に多いので、あなたが使う言語での XML 操作を確 認しておきましょう。 認証はベーシック認証でいいです。 データ更新するときの基本としては 1. チェンジセット作成のリクエストを投げる 2. データアップロードのリクエストを投げる 3. チェンジセットクローズのリクエストを投げ る
    • 12. API の実行例 Overpass API, API v0.6 共に、 AS3 の例を以前ブログに 書いたのでそちらを参照して下さい。 http://jmsnews.blog38.fc2.com/blog-entry-46.html 上のブログでは Overpass API は OverpassQL になってま すが、 OverpassXML の場合には XML を改行無しで URL にくっつけて流せばいいだけです。
    • 13. Android 用 OSM エディタ iOS には Pushpin OSM という凄く使いやすいア プリがあるが、 Android には vespucci ぐら い? Vespucci は Pushpin より多様なことが出来る反 面、使いずらい。 Pushpin は確かに使いやすいが、一部タグが入 力出来ない。そもそもキーとして入力出来な かったり、バリューがリストになかった り・・・
    • 14. Android 用 OSM エディタ 使用言語 AIR for Android 要はフラッシュのアプリ版 地図表示ライブラリ Modest Maps
    • 15. Android 用 OSM エディタ ということで Pushpin ライクな Android エディタ開発してます。 日本の OSM に特化! ・ name:ja_rm, name:ja_kana を デフォで埋める。 ・郵便番号から住所へ変換など
    • 16. 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 操作してタ グを追加したり、削除し たりしよう!
    • 17. JOSM プラグイン JOSM プラグイン開発 ほしいもの ・郵便番号から住所への変換プラグイン ・ name から name:ja_kana や name:ja_rm をデ フォ埋め機能 参考: http://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
    • 18. JOSM プラグイン ・郵便番号から住所への変換プラグイン については HelloWorld レベルまでは 10/12 の金沢もくもくで完成。
    • 19. まとめ 主に ・ JOSM プラグイン ・エディタ ・クライアント側での地図ビューア の開発を進めています。 一緒に開発しよう!
    • 20. OpenStreetMap 北陸 https://www.facebook.com/groups/OSMHokuriku/ 次回の OSM もくもく勉強会 in 北陸は、 1 泊 2 日の合宿とかにしようかなと思っています。