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.
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!
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!
Reblogged this on másquesig.
Pingback: Convierte una tabla con direcciones en una capa de puntos con gvSIG 2.x | gvSIG blog