この記事は最終更新日から1年以上が経過しています。住所(地名)→緯度/経度の変換はジオコーディング(Geocoding)と呼ばれる。Geocoding)やアドレスマッチングと呼ばれる。緯度はlatitude(lat)、経度はlongitude(lng)で各Web/APIドキュメントをみるとよく出てくる。住所はaddressとかlocationと表現されることが多い。ジオコーディングをプログラミングから使うときはRuby実装が有名。APIをキックしている。利用制限などを回避するため、オンプレミスでジオコーディング対応したくなるが難しい問題が立ちはだかる。同じ緯度経度としたいが、名寄せ(データクレンジング)して同一視させるのは大変。逆ジオコーディングでは、緯度経度の表記は基本的にブレないので名寄せをほぼ意識しなくて済む。ある地点から半径XXXメートル以内のXXXの関連施設を検索したいといった場合には、2点間の緯度経度から距離を計算して関連施設の属性とともにフィルタリングして取得するクエリを発行することで実現する。マーカーピンをたてたり、吹き出しを作ったり、エリアに色を塗ったり...こちらについては各サービスごとのAPIを覚えてJSで作業させる。地球は丸いので、2点間の緯度経度から三角関数で単純に距離を出してはダメらしい。Qiita緯度経度から距離の計算はヒュベニの公式というのを用いて簡単に計算できるらしい。難しそうな数式が並ぶ..。http://yamadarake.jp/trdi/report000001.html通常のアプリであれば、Postgre拡張のPostGISにあるdistance関数などで計算させることが多そう。以下は「PostGISを使って検索してみる」ということで様々なクエリが記載されてたhttps://sites.google.com/site/pcchatnetoiles/home/postgis/postgis-2ルーティング実際の道路や高低差を意識した経路選択の話。アルゴリズム的には最短経路問題になる。詳しくジオコーディング地名や建物名(例:東京タワー)から緯度・経度を検索すること。GoogleのGeocodingやYahoo!のジオコーダAPIが有名。Mapというものががある。GoogleやYahoo!が提供してくれるAPIは、情報が豊富でリッチな機能があり簡単に使えると非常に人気だが、利用回数などの制限がネック。各サービス特徴メモザックリ読むだけで流れと注意点がわかる。API無料API2500回/24時間まで5回/1秒までGoogleマップを使わずGeocodingだけ用いるのは規約的にNG。https://developers.google.com/maps/documentation/geocoding/?hl=ja#Limits【】Yahoo!ジオコーダAPI無料API50,000回/1日までアプリケーションの登録は10個まで可能。午前0:00に利用回数がリセットされる。http://developer.yahoo.co.jp/appendix/rate.htmlOSM(OpenStreetMap)ユーザ編集型の地図データのこと。Wikipediaのようにユーザ自身がGPSログをアップロードしたりベクトルデータを編集可能。ForesquareというWebサービスのバックエンドで使われているみたいです。EC2/Ubuntu14.04)OSSなので自サーバが構築できる利用できるAPI以下にまとめられていた。自前サーバを構築もできるが、公開用のサーバがありアクセスが出来る。OSMのデータにはOverpassというAPIを用いてアクセスするらしい。Qiitahttp://qiita.com/taku/items/f3c6ed375a2461551d7c利用制限1日に合計おおよそ1,000,000リクエスト。他のユーザに迷惑をかけないように、ということらしい。地図をズームしたり、マーカーを立てるなど基本操作は出来る。定期的にマッピングパーティを行っているルーティング緯度経度からの距離計算では、実際の建物や道路を無視しているので現実的には精度が低い。そのため、道路や建物の地図情報を元に経路を計算することが必要。Service)有名ドコロにOSRMがある。Map)のデータを利用している。以前、インストール作業を以下にまとめた。Qiita利用APIOSRMのWeb/APIは以下のWikiに。https://github.com/Project-OSRM/osrm-backend/wiki/Server-api中を見ると大体やりたいことは網羅している。...>OSRMのデータ構造インストール時に作成するデータの説明は以下のWiki参照。https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRMグラフ情報については以下以下のWiki参照。https://github.com/Project-OSRM/osrm-backend/wiki/Graph-representation道路交通情報OSRMは道路工事や道路渋滞の情報が考慮されていないので、現実には精度が低下する(はず)。車での情報しか存在しなかったため、徒歩を含めたその他の交通期間での移動時間は考慮出来ていない。System)が有名。基礎知識は以下を参考に。System)のことで、地理的情報を視覚的に表示させる技術の総称とのこと。http://www.gsi.go.jp/GIS/whatisgis.htmlこのページが簡単でわかりやすい。様々な地理的データ構造を持つフォーマットで、最近GithubやGoogleでも利用できるようになっているデファクトスタンダードな存在。以下は簡単にGeoJSONについて説明してくれている。http://blog.qaramell.com/?p=8191GeoJSONを用いれば、緯度経度だけではなく店舗の営業時間や地理情報も設定できるらしいので、地図に独自の情報を付けて付加価値を高めるサービスを作るときは必要になってくるとのこと。Shape(シェープ)ファイル「図形情報と属性情報をもった地図データファイル」が集まったデータファイル。http://www.pasco.co.jp/recommend/word/word028/GIS業界の標準フォーマットらしいので、国などでDLすると大体このフォーマットになっている。ShapeファイルからGeoJSONへの変換は調べるとよく出てくる。PostGIS他にもPostgreSQLにはPostGISという拡張モジュールがあり、これで距離系のデータが上手く扱える。いうと緯度経度を保持するデータ型があり、そこから上手く距離を計算したクエリがかける。PostGISのクエリでできることは下記でざっくりつかめる。http://lets.postgresql.jp/documents/tutorial/PostGIS/1/Oracleも11gリリース2からジオメトリ型データというのを使えるとのこと。https://www.infoscoop.org/blogjp/2015/01/21/tutorial_for_geodb/ビジュアライズ地図情報をD3.jsを用いて描画する先人も。Data〜その1地図を描画するまとめ基本的にGoogleのGeocodingを使えば問題なし。利用制限に引っかかったらYahooo!のジオコーダAPIを使いましょう。住所(地名)→緯度/経度の変換は**ジオコーディング(Geocoding)**と呼ばれる。Geocoding)**や**アドレスマッチング**と呼ばれる。緯度は```latitude(lat)```、経度は```longitude(lng)```で各Web/APIドキュメントをみるとよく出てくる。住所は```address```とか```location```と表現されることが多い。ジオコーディングをプログラミングから使うときは```Ruby```実装が有名。API```をキックしている。利用制限などを回避するため、オンプレミスでジオコーディング対応したくなるが難しい問題が立ちはだかる。同じ緯度経度としたいが、名寄せ(データクレンジング)して同一視させるのは大変。」は名寄せについて参考になるhttps://codeiq.jp/magazine/2014/05/8400/**名寄せしなくて良い場合**住所の完全一致前提でシステム要件的に許容できれば国交省のデータを使うのがてっとり早いhttp://qiita.com/laqiiz/items/842fe2a32e80bac92364**その他**一方、逆ジオコーディングでは、緯度経度の表記は基本的にブレないので名寄せをほぼ意識しなくて済む。ある地点から半径XXXメートル以内のXXXの関連施設を検索したいといった場合には、2点間の緯度経度から距離を計算して関連施設の属性とともにフィルタリングして取得するクエリを発行することで実現する。マーカーピンをたてたり、吹き出しを作ったり、エリアに色を塗ったり...こちらについては各サービスごとのAPIを覚えてJSで作業させる。地球は丸いので、2点間の緯度経度から三角関数で単純に距離を出してはダメらしい。Qiita](http://qiita.com/yellow_73/items/e9006d69262739c59984)緯度経度から距離の計算はヒュベニの公式というのを用いて簡単に計算できるらしい。難しそうな数式が並ぶ..。http://yamadarake.jp/trdi/report000001.html通常のアプリであれば、Postgre拡張のPostGISにある```distance```関数などで計算させることが多そう。ルーティング実際の道路や高低差を意識した経路選択の話。アルゴリズム的には最短経路問題になる。ジオコーディング地名や建物名(例:東京タワー)から緯度・経度を検索すること。Googleの[Geocoding](http://www.geocoding.jp/)やYahoo!の[ジオコーダAPI](http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html)が有名。Map```というものががある。GoogleやYahoo!が提供してくれるAPIは、情報が豊富でリッチな機能があり簡単に使えると非常に人気だが、利用回数などの制限がネック。各サービス特徴メモザックリ読むだけで流れと注意点がわかる。API**無料API**2500回/24時間まで5回/1秒までGoogleマップを使わずGeocodingだけ用いるのは規約的にNG。アプリケーションの登録は10個まで可能。午前0:00に利用回数がリセットされる。OSM(OpenStreetMap)ユーザ編集型の地図データのこと。Wikipediaのようにユーザ自身がGPSログをアップロードしたりベクトルデータを編集可能。ForesquareというWebサービスのバックエンドで使われているみたいです。利用できるAPI以下にまとめられていた。自前サーバを構築もできるが、公開用のサーバがありアクセスが出来る。OSMのデータにはOverpassというAPIを用いてアクセスするらしい。利用制限1日に合計おおよそ1,000,000リクエスト。他のユーザに迷惑をかけないように、ということらしい。地図をズームしたり、マーカーを立てるなど基本操作は出来る。ルーティング緯度経度からの距離計算では、実際の建物や道路を無視しているので現実的には精度が低い。そのため、道路や建物の地図情報を元に経路を計算することが必要。Service)有名ドコロにOSRMがある。Map)のデータを利用している。以前、インストール作業を以下にまとめた。利用APIOSRMのWeb/APIは以下のWikiに。https://github.com/Project-OSRM/osrm-backend/wiki/Server-api中を見ると大体やりたいことは網羅している。OSRMのデータ構造インストール時に作成するデータの説明は以下のWiki参照。https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRMグラフ情報については以下以下のWiki参照。道路交通情報OSRMは道路工事や道路渋滞の情報が考慮されていないので、現実には精度が低下する(はず)。車での情報しか存在しなかったため、徒歩を含めたその他の交通期間での移動時間は考慮出来ていない。System)が有名。基礎知識は以下を参考に。System)のことで、地理的情報を視覚的に表示させる技術の総称とのこと。http://www.gsi.go.jp/GIS/whatisgis.htmlこのページが簡単でわかりやすい。様々な地理的データ構造を持つフォーマットで、最近GithubやGoogleでも利用できるようになっているデファクトスタンダードな存在。以下は簡単にGeoJSONについて説明してくれている。http://blog.qaramell.com/?p=8191GeoJSONを用いれば、緯度経度だけではなく店舗の営業時間や地理情報も設定できるらしいので、地図に独自の情報を付けて付加価値を高めるサービスを作るときは必要になってくるとのこと。Shape(シェープ)ファイル「図形情報と属性情報をもった地図データファイル」が集まったデータファイル。http://www.pasco.co.jp/recommend/word/word028/GIS業界の標準フォーマットらしいので、国などでDLすると大体このフォーマットになっている。ShapeファイルからGeoJSONへの変換は調べるとよく出てくる。style="font-size:1em;"></i>PostGIS他にもPostgreSQLにはPostGISという拡張モジュールがあり、これで距離系のデータが上手く扱える。いうと緯度経度を保持するデータ型があり、そこから上手く距離を計算したクエリがかける。PostGISのクエリでできることは下記でざっくりつかめる。http://lets.postgresql.jp/documents/tutorial/PostGIS/1/Oracleも11gリリース2からジオメトリ型データというのを使えるとのこと。style="font-size:1em;"></i>ビジュアライズ地図情報をD3.jsを用いて描画する先人も。まとめ基本的にGoogleのGeocodingを使えば問題なし。利用制限に引っかかったらYahooo!のジオコーダAPIを使いましょう。送信いただいたご意見への返信は行っておりません。お問い合わせください。