Scripting en gvSIG: Librería PyGeoj, leer/editar/crear geojson

geojson-jackson-q
La semana pasada vi un post sobre una nueva librería en Python para acceder de forma muy sencilla a los archivos geojson, tanto para leer como para editar. El artículo se llama “PyGeoj – A simple Python Geojson file reader and writer” y su autor/creador es  Karim Bahgat, podéis ver más sobre su trabajo en el repositorio de GitHub karimbahgat/PyGeoj

La librería nos permite leer archivos con el formato geojson como si se tratara de un shapefile. Podemos recorrer sus entidades con un for/bucle o acceder a sus propiedades y atributos con un diccionario. Muy similar a como se hace en el módulo de Scripting en gvSIG 2.

import pygeoj
testfile = pygeoj.load(filepath="testfile.geojson")
for feature in testfile:
    print feature.properties

 

Así que decidí probar si podía importar esta librería a gvSIG 2.

Si queréis probarla primero desde Python, los pasos serían similares solo que la carpeta donde deberíais guardar las librerías es “C:/PythonXX/Lib/site-packages”. En los repositorios de cada librería lo explican mejor.

 

Instalando librerías en gvSIG:

simplejson

Después de una primera prueba, al intentar importar el módulo de PyGeoj me aparecía un error sobre que faltaba el módulo de json. Recordemos que el módulo de Scripting utiliza Jython, y no se encuentra disponible.

Una solución es instalar primero la librería simplejson. Esta librería nos permitirá leer archivos json, y es lo que necesitará PyGeoj para funcionar.

  • Para instalarla, debemos de entrar en el repositorio simplejson y a la derecha aparecerá “Download zip”.
  • De la carpeta que nos descargue, nos interesa la carpeta que se encuentra dentro de ésta, también llamada /simplejson/
  • Copiamos esta carpeta y la pegamos en el directorio donde gvSIG guarda las librerías y scripts del usuario. En Windows es: C:\Users\[user]\gvSIG\plugins\org.gvsig.scripting.app.extension\ y aquí dentro de la carpeta \lib\
  • Ahora ya podremos realizar ‘import simplejson’ en nuestros scripts

 

pygeoj

Pero seguimos, ahora vamos con la librería PyGeoj. Encontré algunos problemas de compatibilidad pero son fáciles de solucionar modificando tan solo dos lineas de código:

UPDATE 05/08/2014: Después de hablar con el creador de la librería ha modificado su código y es compatible directamente al descargarlo.

  • Repetimos los pasos anteriores, pero ahora entrando al repositorio de karimbahgat/Pygeoj
  • Ya está. Ahora ya podemos realizar un import pygeoj dentro de gvSIG.

Que nos funcionan ambas librerías podemos comprobarlo en la consola de Jython. Si realizamos un import pygeoj, no debería de aparecer ningún problema.

pygeoj01

Scripting

Vamos a hacer un pequeño ejemplo para leer un archivo geojson. Yo he utilizado para hacer la prueba bars.geojson

Este pequeño script cargará un archivo geojson, nos mostrará la información de las entidades y las coordenadas de su geometría:

import pygeoj

def main(*args):
    #Cargamos el geojson
    testfile = pygeoj.load("E://bars.geojson")

    #Accedemos a las entidades
    for feature in testfile:
        #Accedemos a sus propiedades
        print feature.properties
        #y a sus coordenadas
        print feature.geometry.coordinates

Y el resultado debería de ser algo así:

pygeoj02Con esto ya podríamos tener acceso a toda la información de un archivo geojson de una forma fácil y muy rápida.

Para acceder a sus atributos funciona de manera similar al getValues() de gvSIG:

    for feature in testfile:
        values = feature.properties
        print values["name"], feature.geometry.coordinates

Imprimirá:
Running script pygeoj_01.
The Exchange [-77.039882, 38.898321]
Blackfin [-77.038193, 38.901345]
Churchkey [-77.03195, 38.907826]

Y para modificar los valores del geojson, tan solo tenéis que modificar el valor del diccionario values[“name”] = “New bar” y guardar el geojson con testfile.save(ruta)

 

Para finalizar

Como podéis imaginar esto nos abre nuevas puertas para utilizar el módulo de scripting. Podremos leer, editar y grabar archivos geojson y trabajar con ellos de forma muy sencilla con muy poco código. Podremos importar datos, analizar coordenadas, crear capas nuevas, exportar a geojson y muchas más cosas que se nos ocurran.

En el repositorio de Github podréis encontrar más información sobre cómo utilizar la librería. Y agradecer a su creador el facilitar este tipo de librerías, por crearlas y ponerlas a disposición de todos nosotros.

1 comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: