¡Busca tu dirección o población en gvSIG mediante Scripting!

En un post anterior comentamos la utilidad de utilizar la librería “geopy” para la geocodificación de direcciones mediante Scripting en gvSIG 2, su uso básico y utilización.

Con el siguiente script vamos a realizar una búsqueda de esta dirección o población y haremos que gvSIG haga un centro de la vista en ese punto que nos devuelve la  petición.

geopy

Como primer paso deberemos instalar la librería GeoPy en nuestro equipo si no lo habíamos hecho. Para ello deberemos descargar el fichero “geopy-1.7.1-patched-for-gvSIG-2.1.0.zip” y descomprimirlo en la carpeta:

gvSIG/plugins/org.gvsig.scripting.app.extension/lib/

que encontraremos en el home de nuestro usuario (en dicha carpeta lib deberemos tener finalmente las carpetas geopy y simplejson). Si tenemos ya arrancado gvSIG deberemos cerrarlo y volverlo a arrancar.

Según el sistema operativo podemos encontrar dicha carpeta gvSIG en:

  • Linux: /home/MI_USUARIO
  • Windows: C:\Document and Settings\MI_USUARIO o C:\Users\MI_USUARIO

Recordamos que esta librería tiene la potencia del buscador de direcciones de Google, ya que utiliza su motor. También tiene sus defectos como confusiones en direcciones por parte del buscador o la necesidad de una conexión online.

¡Busca cualquier dirección con gvSIG!capture27

Una vez tengamos las librerías instaladas arrancaremos gvSIG, iremos al Scripting Composer (menú Herramientas->Scripting->Scripting Composer), crearemos un nuevo script (File->New), con el nombre que queramos (por ejemplo ‘Buscador de direcciones’), y añadiremos el siguiente código en él:

from gvsig import *
from geopy.geocoders import get_geocoder_for_service
from commonsdialog import *
from geom import *

def main(*args):

    # Google v3: de direccion a coordenadas
    address = inputbox("Search Address", "Search Address",1)
    geolocator = get_geocoder_for_service("googlev3")
    location = geolocator().geocode(address)

    print"Direccion: ", (location.address), "Coordenadas: ", ((location.latitude, location.longitude))

    geomPoint = createPoint(location.longitude, location.latitude,)
    centerView(currentView(), geomPoint.buffer(0.0005))

def centerView(view, geom):
    view.getMap().getViewPort().setEnvelope(geom.getEnvelope())

Después iremos a una Vista en gvSIG, que deberá estar en coordenadas geográficas en WGS84 (EPSG: 4326) para que funcione correctamente, ya que son las que nos devuelve la librería.

En la vista, con las capas insertadas, abriremos el lanzador de scripts (menú Herramientas->Scripting->Scripting Launcher), y ejecutaremos el script que acabamos de crear (con doble click sobre él). Una vez ejecutado el script pedirá mediante un cuadro de texto la dirección o población a buscar, para después realizar la petición y hacer un centrado a este lugar en la Vista.

¡Esperamos que os sea útil esta herramienta!

This entry was posted in development, gvSIG Desktop, scripting, spanish. Bookmark the permalink.

2 Responses to ¡Busca tu dirección o población en gvSIG mediante Scripting!

  1. Pingback: Convierte una tabla con direcciones en una capa de puntos con gvSIG 2.x | gvSIG blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s