ジオコーダ(Ruby)

ジオコーダー
原作者アレックス・ライスナー
初回リリース2006年2月8日 (2006年2月8日
安定版リリース
1.3.0 / 2016年1月30日 ( 2016年1月30日)
リポジトリgithub .com /alexreisner /ジオコーダー
書かれたルビー
オペレーティング·システムLinuxOS XWindows
タイプRubyライブラリ
ライセンスMITライセンス
Webサイトwww.rubygeocoder.com

Geocoder (Ruby) はRuby用のジオコーディングライブラリです。ジオコーディングは、ユーザーに位置情報を提示することでウェブページの利便性を向上させます。Rails と併用することで、 Geocoder はActiveRecordオブジェクトの距離計算に加え、座標から住所を検索したり、その逆を行ったりといったジオコーディング機能を追加します。[ 1 ]この機能は独自のデータベース関数に依存しないため、 MySQLPostgreSQLSQLiteなどのデータベースでは、あるエリア内の異なるジオコーディングオブジェクトをすぐに検索できます。[ 1 ]

互換性

ジオコーダはRuby 1.8.7、1.9.2、JRuby 1.5.3で完全にテストされています。[ 1 ]

ジオコーダはRails 3と互換性がありますが、Rails 2では機能が制限されています。[ 1 ]

インストール

Geocoder をインストールするための前提条件は、RubyRubyGemsです。

Geocoder gem は次のコマンドでインストールできます。

gem ジオコーダをインストール 

あるいは、Rails用のBundlerを使用している場合は、これをGemfileに追加することができます:[ 1 ]

gem「ジオコーダ」 

コマンドプロンプトで実行する: [ 2 ]

バンドルインストール 

Railsのプラグインとしても使えます: [ 1 ]

構成

オブジェクトで Geocoder を使用するには、プロジェクトを次のように設定する必要があります。

必須属性

アクティブレコード

ActiveRecordオブジェクトでジオコーディングを使用するには、緯度と経度の2つの追加属性が必要です。[ 1 ]テーブルに保存する際は、これらの属性は緯度経度と呼ばれますが、後述するように変更可能です。逆ジオコーディング(ユーザーの位置座標を実際の住所に変換すること)を使用する場合、モデルは住所を返すメソッドを実装する必要があります。[ 3 ]住所は単一の属性でも可能ですが、市、州、国などの複数の属性を組み合わせた文字列を返すメソッドを使用することもできます。[ 1 ]

モンゴイド

Mongoidを使用する場合、モデルには住所、緯度、経度をフィールドとして追加するだけで済みます。また、geocoded_by:メソッドを呼び出す前に、モデルにGeocoder::Model::Mongoid をインクルードする必要があります[ 1 ]

モデル行動

Railsモデルでは、ジオコーダにオブジェクトの完全なアドレスを返すメソッドを指示する必要があります。[ 1 ]

geocoded_by :full_street_address # IPアドレスも指定可能after_validation :geocode # 座標を自動取得

逆ジオコーディングでは、ジオコーダはどのメソッドが緯度と経度の座標を返すかを認識する必要があります。:address オプションが指定されていない場合は、address 属性から自動的に住所を取得します。そうでない場合は、以下の例のように location 属性から住所を取得します。[ 1 ]

reverse_geocoded_by :latitude , :longitude , :address => :location after_validation : reverse_geocode # 住所の自動取得

同じモデル上でフォワードジオコーディングとリバースジオコーディングが可能です。[ 1 ]

geocoded_by :address、reverse_geocoded_by :latitude :longitude、after_validation :geocode :reverse_geocode

モデル内で緯度と経度に異なる名前を使用するには、geocoded_byを実装する際に次の変更を行う必要がある: [ 1 ]

geocoded_by :address :latitude => :lat :longitude => :lon

さらに、addressメソッドはGoogleマップの検索に使用される任意の文字列を返すことができます。[ 1 ]以下の例はいずれも機能します。

  • 「ニューヨーク州ニューヨーク市サンプル通り123番地」
  • エッフェル塔、パリ、フランス」
  • ローリー、ノースカロライナ州、米国」

サービス

デフォルトでは、Geocoder はGoogleのジオコーディングAPIを使用して住所と座標を取得します。現在、以下の住所ジオコーディング サービスがサポートされています。

  • グーグル: :google[ 3 ]
  • ヤフー: :yahoo[ 4 ]
  • Geocoder.ca: :geocoder_ca(米国とカナダのみ)

ジオコーダの機能を示す 例をいくつか示します[ 5 ] 。

ホテル.近く( "ノースカロライナ州ローリー" )

ローリー近郊のホテルを検索します。

@restaurant . distance_to ( "エンパイアステートビル" )

@restaurantからエンパイア ステート ビルまでの 距離を計算します。

アプリケーション

  • 開発者はジオコーダを使用して、ユーザーのIPアドレスを都市の位置情報に変換することもできます。このような変換を行うことで、事前にユーザーに問い合わせることなく、ユーザーの現在地に関連するコンテンツを提供できるようになります。[ 6 ]
  • 情報内のパターンを認識するための地理空間分析に使用できます。これはデータマイニングアプリケーションで非常に役立ちます。
  • Google マップ、Yahoo マップなどのWeb ベースのGISツールには、ジオコーディング機能が含まれています。

参考文献

  1. ^ a b c d e f g h i j k l m n「ファイル: README — Rails-geocoder (0.9.11) のドキュメント」 www.rubydoc.info . 2016年1月31日閲覧
  2. ^ "alexreisner/geocoder:完全なRubyジオコーディングソリューション"。www.github.com
  3. ^ a b「Google Maps Geocoding API」 . Google Developers . 2016年2月13日閲覧。
  4. ^ 「Yahoo BOSS Geo Services」 . developer.yahoo.com . 2016年2月13日閲覧。
  5. ^ 「Ruby Geocoder」 . www.rubygeocoder.com . 2016年1月31日閲覧。
  6. ^ 「ジオコーダで場所を検索する」synbioz.com . 2016年2月7日閲覧