Archivo de la etiqueta: Geocoder

Geocodificación en Ruby con Geocoder

  

La geolocalización y la geocodificación hoy cumplen un papel fundamental en la composición de nuestras aplicaciones. Determinar el pais, la ciudad, el lenguaje, etc sin duda que agregar un gran valor a la hora de personalizar aplicaciones para nuestros visitantes.

Comencemos!

Para esta entrada utilizaré:
– Fedora 16
– Ruby 1.8.7
– Rubygems 1.8.11
– Geocoder 1.1.0
– json_pure 1.6.4

La versión de Ruby 1.8.7 y Rubygems 1.8.11 es la trae por defecto el repositorio de Fedora 16.

sudo yum install ruby rubygems

Ahora instalamos Geocoder y su dependencia json_pure

sudo gem install geocoder json_pure

Podemos forzar las versiones que desamos instalar de la siguiente forma

sudo gem install -v=1.1.0 geocoder

Ya está listo nuestro Ruby con sus gemas necesarias, Geocoder nos instala un script para realizar peticiones por terminal, este lo podemos utilizar de la siguiente forma

$ geocode "Quilicura, Santiago"

# Resultado:
# Latitude:         -33.3613271
# Longitude:        -70.7287415
# Full address:     Quilicura, Santiago Metropolitan Region, Chile
# City:             Quilicura
# State/province:   Santiago Metropolitan Region
# Postal code:      
# Country:          Chile
# Google map:       http://maps.google.com/maps?q=-33.3613271,-70.7287415

Ya funcionando podemos crear nuestros primero ejemplos, entonces creamos un archivo .rb

vim ej_geocoder1.rb

Con el siguiente contenido

# Importamos nuestras gemas, recuerden que en versiones de ruby 1.8 se debe importar siempre la gema 'rubygems'.
require 'rubygems'
require 'geocoder'

# Realizamos una busqueda, esto nos devolvera un lista de coincidencias y con [0] decimos que queremos la primera.
local = Geocoder.search("Quilicura, Santiago, Chile")[0]

# Imprimimos las coordenadas de la direccion buscada
puts local.coordinates

Ejecutamos

ruby ej_geocoder1.rb

Geocoder.search devuelve un objeto con lo siguientes atributos:
address
address_components
address_components_of_type(type)
city
coordinates
country
country_code
formatted_address
geometry
postal_code
state
state_code
types

Entonces siguiendo el ejemplo anterior podemos obtener el pais de nuestra busqueda de la siguiente forma

local.country

También con Geocoder podemos obtener la dirección de una ip o de unas coordenadas de la siguiente forma

vim ej_geocoder2.rb
# Importamos nuestras gemas necesarias
require 'rubygems'
require 'geocoder'

# Ingresamos la ip que queremos buscar y la primera coincidencia con el valor [0]
ip = Geocoder.search("200.113.190.187")[0]
puts ip.address
puts ip.coordinates

# Obtenemos la direccion a traves de unas coordenadas
ip = Geocoder.search("-33,-70")[0]
puts ip.address

Ejecutamos

ruby ej_geocoder2.rb

Geocoder se provee de buscadores como Google, Yahoo, Bing, GeocoderCa, etc para realizar sus busquedas. Esto podemo configurarlo en:

/usr/lib/ruby/gems/1.8/gems/geocoder-1.1.0/lib/geocoder/configuration.rb

en la propiedad [:lookup, :google] , recuerden que la url puede variar según las versiones instaladas.

Más información en la página oficial en RubyGeocoder

Gracias por su visita!