gvSIG Association has received the NASA World Wind Europa Challenge award

ww2

The gvSIG Association received one of the Europa Challenge” awards, given by the NASA and the European Commission last Friday, during the “FOSS4G Europe” in Como, Italy.

The “Europa Challenge” award has an international character where besides the Spanish representatives from the gvSIG Association, projects from United States, Italy, United Kingdom, Hungary and India.

These awards are given to development projects of computer applications that use the NASA World Wind software, a virtual globe similar to Google Earth in open source, and are framed at the standards use to share and access to geographical information, defined by the INSPIRE European Directive.

The award was given by Patrick Hogan finally, the NASA World Wind project manager. Besides, the meeting served to stablish the bases of a collaboration agreement between NASA and the gvSIG Association.

The project presented by the gvSIG Association allows the integration of the virtual globe developed by the NASA in gvSIG, an open source geographical information system that has become a referent as technology for information analysis from the territorial point of view, in an international level, after it’s 10th anniversary. Trough gvSIG, thousands of users around the world manage their spatial information without any license use limitation.

This award is a recognition to the probably most successful open source project born in the European Union. It’s a recognition to the gvSIG Association and the community work, that has started up a development model based on the collaboration, solidarity and shared knowledge successfully.

Thank you very much to everybody who make gvSIG bigger day by day!

Here you have the presentation and videos:

 

Posted in english, events, gvSIG Desktop, press office | Tagged , , , , | 3 Comments

La Asociación gvSIG recibe el premio NASA World Wind Europa Challenge

ww2

La Asociación gvSIG recibió el pasado viernes uno de los galardonesEuropa Challenge” otorgados por la NASA y la Comisión Europea durante las jornadas del “FOSS4G Europa” en Como, Italia. Un galardón con carácter internacional en el que además de la representación española de la Asociación gvSIG, participaron proyectos de Estados Unidos, Italia, Gran Bretaña, Hungría e India.

Estos premios se otorgan a proyectos de desarrollo de aplicaciones informáticas que utilicen el software de la NASA World Wind, un globo virtual similar a Google Earth en software libre, y se enmarquen en el uso de estándares para compartir y acceder a información geográfica que define la Directiva Europea INSPIRE.

La entrega del premio fue realizada por Patrick Hogan, el director del proyecto NASA World Wind. Además, el encuentro sirvió para establecer las bases de un acuerdo de colaboración entre la NASA y la Asociación gvSIG.

El proyecto presentado por la Asociación gvSIG permite la integración del globo virtual desarrollado por la NASA en gvSIG, un sistema de información geográfico en software libre que tras una década de existencia se ha convertido en un referente a nivel internacional como tecnología para el análisis de información desde el punto de vista territorial. Mediante gvSIG miles de usuarios de todo el mundo gestionan su información espacial sin limitaciones de uso por licencia.

Este galardón supone un reconocimiento al que probablemente sea el proyecto de software libre más exitoso nacido en la Unión Europea. Un reconocimiento al trabajo de la Asociación gvSIG y de toda la comunidad que han conseguido poner en marcha con éxito un modelo de desarrollado basado en la colaboración, la solidaridad y el conocimiento compartido.

¡Gracias a todos los que hacéis que día a día gvSIG sea más grande!

Os dejamos con la presentación y vídeos que muestran el trabajo realizado:

 

Posted in events, gvSIG Desktop, press office, spanish | Tagged , , , , | 4 Comments

Talleres 7as Jornadas gvSIG LAC: desarrollo con gvSIG 2.2

Hola a todos,
Como sabréis están ya casi aquí las “7as Jornadas gvSIG de Latinoamérica y Caribe”, que este año se celebran en  la Facultad de Geografía de la Universidad Autónoma del Estado de México. En estas jornadas entre varios talleres y exposiciones habrá un “Taller de desarrollo con gvSIG 2.2”.

¿ A quien va dirigido el “Taller de desarrollo con gvSIG 2.2” ?

A desarrolladores que deseen iniciarse en el desarrollo de plugins para gvSIG 2.2, y realizar personalizaciones de la aplicación o aportar a esta nuevas funcionalidades.

¿Qué deben conocer y llevar los asistentes?

Se trata de un taller de desarrollo con gvSIG. Si no controlas java, o no estas familiarizado con el IDE que vayas a utilizar podrás asistir al taller pero no podrás seguir las partes prácticas aunque podrás asistir igualmente y seguir la exposición.

Qué necesitarás conocer:

  • Java
  • El IDE de que vayas a usar, Eclipse o NetBeans 8.
  • Subversion, al menos lo suficiente para configurar tu IDE y descargar proyectos
  • Si tienes conocimientos de Maven te sera mas fácil de seguir el taller, si no, no pasa nada contaremos lo mínimo para poder trabajar.
  • La aplicación gvSIG desktop desde el punto de vista del usuario. Si no se conocen los conceptos de proyecto, vista, capa, proyección… que maneja la aplicación puede ser complejo entender cómo podemos desarrollar con gvSIG.

Qué necesitarás llevar en el caso de seguir el taller con vuestro propio portátil/laptop:

  • Un JDK 1.6 o 1.7 instalado y configurado.
  • El IDE que vayas a usar instalado y configurado.
  • En caso de que el IDE lo necesite, los plugins de acceso a Subversion necesarios.
  • En caso de que el IDE lo necesite, los plugins de para trabajar con Maven (m2e para Eclipse por ejemplo).
  • Un gvSIG 2.2 ya instalado y funcionando.

Una pequeña nota sobre el IDE a usar: El desarrollo con gvSIG 2.2.0 no esta ligado a un IDE en particular. Cuanto mejor sea la integración del IDE con Maven mas cómodo resultará el desarrollo con gvSIG. Los desarrolladores del proyecto gvSIG usan Eclipse y NetBeans (>=8), y con los dos se puede seguir el taller. Eso si, no es un taller de Eclipse o NetBeans, se espera que el desarrollador este familiarizado con el IDE que lleve y sepa como funciona este.

Respecto al Sistema Operativo, debería poder seguirse tanto desde Linux como desde Windows.

El taller lo impartiré usando NetBeans 8 sobre un Kubuntu de 64 bits.

¿ Qué veremos en el taller ?

Se trata de un taller de entre tres y cuatro horas. Puede parecer bastante tiempo a priori, pero no lo es tanto para una primera toma de contacto con gvSIG. En el taller tendremos:

  • Exposición rápida de la arquitectura de gvSIG a grandes bloques  exposicion
  • Repaso rápido de las principales librerías exposicion
  • Comentaremos rápidamente sobre las herramientas de desarrollo que precisaremos exposicion
  • Veremos la aplicación de ejemplo LandRegistryViewer.
    • Definición de requerimientos exposicion
    • Pequeño análisis exposicion
    • Estructura de un proyecto para gvSIG 2.2.0 exposicion
    • Descargaremos los fuentes, los compilaremos y desplegaremos el plugin sobre una instalación de gvSIG Practica
    • Comentaremos a grandes rasgos los puntos más delicados de cara a hacer modificaciones sobre el proyecto para adaptarlo a nuestras necesidades exposicion
    • Veremos de añadir funcionalidad sobre el ejemplo, añadiremos una página de preferencias y gestionaremos la persistencia de estas Practica
    • Añadiremos una página de propiedades a la vista para activar o no la posibilidad de edición de nuestra capa Practica
    • Y según como vayamos de tiempo prepararemos alguna otra cosilla práctica
Practica Parte práctica
exposicion Parte de exposición

Espero poder publicar antes de las jornadas otro pequeño artículo indicando dónde podéis descargaros algo de documentación sobre las exposiciones que se harán durante el taller así como algún repositorio de Maven ya preparando y alguna que otra utilidad que pueda hacer falta para los usuarios de Windows.

Un saludo a todos!

Recordar que los talleres son gratuitos, al igual que todas las actividades de las jornadas, y que para asistir necesitáis realizar vuestra inscripción a las jornadas mediante el siguiente enlace:

http://www.gvsig.com/es/eventos/jornadas-lac/2015/inscripcion

Post anteriores sobre talleres en las 7as Jornadas gvSIG LAC:

Posted in events, gvSIG Association, gvSIG Desktop, spanish | 6 Comments

Snapping at the new editing extension in gvSIG 2.2

The gvSIG Desktop 2.2 version has a new editing extension with several improvements and new tools respecting the previous version (like the extend line to object or trim line by object tools).

One of the changes made at this new extension is the reference to object or snapping option. Like in the previous versions, it’s still available to elements of the same layer as well as to other vector layers that we have at the View. It makes the digitalization of new elements easy.

The difference between this version and the previous one is the location of the configuration options. It was at the “Editing properties” option of the active layer before, ann now, at the new editing extension it’s available in the following place:

Snapping type and tolerance for every view that we create 

At this window, the type of snapping can be configured (end point, closest point…), and the tolerance in pixels that allows us to approach or move away from the different points of the line with the mouse, and to be recognized.

If the “Snap tolerance” is 4 pixels, two elements which are the same distance or closer than 4 pixels will be joined in a common coordinate.

Now this tool is available at the gvSIG preferences (Show->Settings menu, “Snapping” option)

Here we can activate or deactivate snapping for every view in our project, and define the priority of every type, the order that we prefer it’s detected.

snapping-en1

Layers to be used for snapping and tolerance in a concrete view

At this window the vector layers of our view can be selected to be used for snapping. The tolerance for that view can be selected too (the tolerance by default will be the selected at the Settings menu, and here we can change it only for that view).

Another configuration possibility is to select the maximum number of features to keep in memory, in order to accelerate the snapping in editing mode. It’s the maximum number of entities that we want to have in memory in our computer.

This option is at the View properties now (View->Properties menu, Snapping tab).

snapping-en2

Posted in english, gvSIG Desktop | Tagged , | 1 Comment

Referencia a objetos (snapping) en la nueva edición de gvSIG 2.2

En la versión 2.2 de gvSIG Desktop se incluyó una nueva extensión de edición, con bastantes mejoras y nuevas herramientas respecto a la anterior (como por ejemplo alargar línea hasta un objeto o recortar línea por un objeto).

Uno de los cambios realizados en esta nueva extensión es la opción de referencia a objetos o snapping. Al igual que en las versiones anteriores, sigue estando disponible, tanto a elementos de la misma capa que se está editando, como a otras capas vectoriales que tengamos en la Vista. Esto nos facilita la digitalización de nuevos elementos.

La diferencia respecto a la versión anterior es la ubicación de las opciones de configuración de la herramienta. Antes estaban disponibles en las “Propiedades de edición”, en el menú contextual sobre la capa en edición activa. Con la nueva edición, se ha dividido en dos partes, y su nueva ubicación es la siguiente:

Tipo de snapping y tolerancia para todas las vistas que creemos

En esta ventana se puede configurar a qué tipo se haría el snapping (punto final, punto medio, punto cercano…), y la tolerancia en píxeles que nos permite acercarnos más o menos a los distintos puntos con el ratón y que sean reconocidos.

Si la tolerancia es por ejemplo de 4 píxeles, dos elementos que se encuentren a una distancia igual o menor a 4 píxeles se unirán en una coordenada común.

Esta herramienta se encuentra ahora en las preferencias de gvSIG (menú Mostrar->Configuración, opción “Snapping”)

Aquí podremos activar o desactivar la referencia a objetos para todas las vistas, y definir también la prioridad que tendría cada tipo, qué preferimos que detecte antes o después.

snapping1

Capas sobre las que se hará el snapping y tolerancia en una vista concreta

En esta ventana se podrán seleccionar las capas vectoriales de la vista en la que estamos, sobre las que se hará el snapping. También se puede configurar la tolerancia para dicha vista (por defecto será la que tenemos en las preferencias, y aquí podremos cambiarla solo para esa vista).

Otra posibilidad de configuración es, para cada capa, el número máximo de entidades que puede tener en memoria, para acelerar los snappings en edición. Es el número máximo de geometrías con el que se quiere trabajar en memoria.

Esta opción se encuentra ahora en las propiedades de la Vista (menú Vista/Propiedades, pestaña Snapping).

snapping2

Posted in gvSIG Desktop, spanish | Tagged , | 4 Comments

Towards a new icon set in gvSIG

icons_gvsig

Some time ago a collaborator, Mario Fèvre, from TreCC company, started a new project to generate a new icon set for gvSIG with the aim to have a friendlier interface.  

This project not only consist in designing that new icon set, but creating a style guide or manual, that allow developers to design the future icons to be included in gvSIG in a normalized way.

An excellent work that you can see now, and of course giving your opinion. 

Here you have the link to the first version of this style guide that contains the groups of icons that have been created already: Style guide (PDF in Spanish)

It’s planned to continue with the design of the icons related to Tables, Layouts and Charts.

From our part, gvSIG will have the possibility to select the different icon sets, and the user will be able to use the current one or other sets like the presented one in this post. 

We want to thank Mario for his work and congratulate him for the professionalism.

 

Posted in community, english, gvSIG Desktop, technical collaborations | Leave a comment

Clipping polylines and creating intersections using Scripting on gvSIG

There’s a useful geoprocess to clip simple lines and create a separation at the intersections with other lines. This geoprocess is run on the whole layer, checking the intersections between all the polylines. We can need it to calculate intersection, lengths, selections…

We would run the script when we have a file with polylines similar to this image:

2015-06-29 14_28_40-gvSIG 2.2.0.2308 RC1 _ Sin título

Una única entidad seleccionada.

We would get a results like this one, a layer with clipped lines:

2015-06-29 14_32_30-gvSIG 2.2.0.2308 RC1 _ Sin título

Varias entidades seleccionadas divisiones de la anterior. Todas las polilíneas están partidas de igual modo.

This geoprocess is similar to the ‘v.clean-break’ tool of GRASS.

The source code of the script is this one, you only will have to change the path to the output file.

import gvsig
import os
from geom import *

def main():
    clean_break(gvsig.currentLayer(), "C:/temp/")

def clean_break(layer, path):
    output = crearCapa_cleanBreak(layer, path)

    features = layer.features()
    for f in features:
        geom = f.geometry()
        values = f.getValues()
        numVertex = geom.getNumVertices()

        for i in range(0,int(numVertex) - 1):
            ver1 = geom.getVertex(i)
            ver2 = geom.getVertex(i+1)
            listVertex = []
            listVertex.append((ver1, 0))
            listVertex.append((ver2, ver2.distance(ver1)))
            lineGoingDivided = createGeometry(2)
            lineGoingDivided.addVertex(ver1)
            lineGoingDivided.addVertex(ver2)
            for n in layer.features(): #getSelection():#.features():
                    geomN = n.geometry()
                    numVertexN = geomN.getNumVertices()
                    for ni in range(0,int(numVertexN) - 1):
                        ver1n = geomN.getVertex(ni)
                        ver2n = geomN.getVertex(ni+1)
                        lineGoingCross = createGeometry(2)
                        lineGoingCross.addVertex(ver1n)
                        lineGoingCross.addVertex(ver2n)
                        if lineGoingCross == lineGoingDivided:
                            pass
                        if lineGoingCross.crosses(lineGoingDivided):
                            point = lineGoingCross.intersection(lineGoingDivided)
                            if str(point)== "MultiPoint2D":
                                print "Error: Interseccion multipunto"
                                #nGeometries = point.getGeometries()
                                #for nG in nGeometries:
                                #    if lineGoingDivided.crosses(nG) and n.crosses(nG):
                                #        listVertex.append((nG, nG.distance(ver1)))
                            elif point.type == 1: #de tipo punto
                                #print "Normal insertion"
                                listVertex.append((point, point.distance(ver1)))
                            else:
                                print "Error Pass, geometry type: ", point.type
                                pass

            sortedVertex = list(sorted(list(set(listVertex)), key=lambda vertex: vertex[1]))

            # "Creacion de menores"
            if len(sortedVertex) >= 2:
                for l in range(0, len(sortedVertex)-1):
                    tramo = createGeometry(2)
                    tramo.addVertex(sortedVertex[l][0])
                    tramo.addVertex(sortedVertex[l+1][0])
                    values["GEOMETRY"] = tramo
                    output.append(values)

    output.commit()
    gvsig.currentView().addLayer(output)
    return output

def crearCapa_cleanBreak(layer, path="C:/temp/"):
   nombre = "clean_break"
   numero = 0
   #TIP
   while True:
       archivo = nombre + str(numero)
       ruta = path + archivo + ".shp"
       if os.path.exists(ruta):
           numero +=1
       else: break
   #/TIP

   CRS = gvsig.currentProject().getProjectionCode()
   schema = gvsig.createSchema(layer.getSchema())
   #schema.append("GEOMETRY","GEOMETRY")
   output = gvsig.createShape ( schema, ruta, CRS=CRS,
       geometryType= LINE)
   return output

You can see how to create the script in gvSIG at the next video about how to load a script from the repository.

Posted in development, english, gvSIG Desktop, scripting | 1 Comment

Partir polilíneas y dividirlas por cada intersección mediante Scripting en gvSIG

Un geoproceso que podemos necesitar es el de partir polilíneas en líneas simples, y además, generar una división en ellas por cada intersección con otra línea. Este geoproceso se ejecuta sobre toda la capa, comprobando las posibles intersecciones entre todas las polilíneas. Lo podemos necesitar para calcular intersecciones, longitudes, selecciones, etc.

Ejecutaríamos el script teniendo un fichero lleno de polilíneas que se superponen similar al de la imagen:

2015-06-29 14_28_40-gvSIG 2.2.0.2308 RC1 _ Sin título

Una única entidad seleccionada.

Obtendríamos un resultado como el siguiente, una capa de líneas partidas:

2015-06-29 14_32_30-gvSIG 2.2.0.2308 RC1 _ Sin título

Varias entidades seleccionadas divisiones de la anterior. Todas las polilíneas están partidas de igual modo.

Este geoproceso es similar al correspondiente utilizado por GRASS de ‘v.clean-break’.

Si estás interesado en aprender a realizar estas operaciones espaciales y mucho más, apúntate ya en el MOOC de Scripting en gvSIG 2. Curso gratuito y en abierto, con mucha actividad en los foros, siendo opcional la obtención del certificado.

El código del script es el siguiente, el único valor que deberás de cambiar es el correspondiente a la ruta del fichero de salida.

import gvsig
import os
from geom import *

def main():
    clean_break(gvsig.currentLayer(), "C:/temp/")

def clean_break(layer, path):
    output = crearCapa_cleanBreak(layer, path)

    features = layer.features()
    for f in features:
        geom = f.geometry()
        values = f.getValues()
        numVertex = geom.getNumVertices()

        for i in range(0,int(numVertex) - 1):
            ver1 = geom.getVertex(i)
            ver2 = geom.getVertex(i+1)
            listVertex = []
            listVertex.append((ver1, 0))
            listVertex.append((ver2, ver2.distance(ver1)))
            lineGoingDivided = createGeometry(2)
            lineGoingDivided.addVertex(ver1)
            lineGoingDivided.addVertex(ver2)
            for n in layer.features(): #getSelection():#.features():
                    geomN = n.geometry()
                    numVertexN = geomN.getNumVertices()
                    for ni in range(0,int(numVertexN) - 1):
                        ver1n = geomN.getVertex(ni)
                        ver2n = geomN.getVertex(ni+1)
                        lineGoingCross = createGeometry(2)
                        lineGoingCross.addVertex(ver1n)
                        lineGoingCross.addVertex(ver2n)
                        if lineGoingCross == lineGoingDivided:
                            pass
                        if lineGoingCross.crosses(lineGoingDivided):
                            point = lineGoingCross.intersection(lineGoingDivided)
                            if str(point)== "MultiPoint2D":
                                print "Error: Interseccion multipunto"
                                #nGeometries = point.getGeometries()
                                #for nG in nGeometries:
                                #    if lineGoingDivided.crosses(nG) and n.crosses(nG):
                                #        listVertex.append((nG, nG.distance(ver1)))
                            elif point.type == 1: #de tipo punto
                                #print "Inserción normal"
                                listVertex.append((point, point.distance(ver1)))
                            else:
                                print "Error Pass, geometria tipo: ", point.type
                                pass

            sortedVertex = list(sorted(list(set(listVertex)), key=lambda vertex: vertex[1]))

            # "Creacion de menores"
            if len(sortedVertex) >= 2:
                for l in range(0, len(sortedVertex)-1):
                    tramo = createGeometry(2)
                    tramo.addVertex(sortedVertex[l][0])
                    tramo.addVertex(sortedVertex[l+1][0])
                    values["GEOMETRY"] = tramo
                    output.append(values)

    output.commit()
    gvsig.currentView().addLayer(output)
    return output

def crearCapa_cleanBreak(layer, path="C:/temp/"):
   nombre = "clean_break"
   numero = 0
   #TIP
   while True:
       archivo = nombre + str(numero)
       ruta = path + archivo + ".shp"
       if os.path.exists(ruta):
           numero +=1
       else: break
   #/TIP

   CRS = gvsig.currentProject().getProjectionCode()
   schema = gvsig.createSchema(layer.getSchema())
   #schema.append("GEOMETRY","GEOMETRY")
   output = gvsig.createShape ( schema, ruta, CRS=CRS,
       geometryType= LINE)
   return output

Puedes ver cómo crear el script en gvSIG en el siguiente vídeo sobre cómo cargar un script desde el repositorio.

Posted in development, gvSIG Desktop, scripting, spanish | 2 Comments

Hacia un nuevo juego de iconos

icons_gvsig

Hace un tiempo os comentamos que un colaborador, Mario Fèvre de la empresa TreCC, ponía en marcha un nuevo proyecto para generar un nuevo juego de iconos en gvSIG con el objetivo de generar una interfaz más amigable para gvSIG.

Este proyecto no consiste únicamente en diseñar ese nuevo juego de iconos, sino en acompañarlo de un estudio a modo de manual o guía de estilo, que permita a los desarrolladores diseñar de forma normalizada los futuros iconos que se vayan incorporando al programa.

Un trabajo excelente al que ya podéis comenzar a dar un vistazo y, por supuesto, opinar sobre el mismo.

Os dejamos el enlace a la primera versión de esta guía de estilo que contiene información de los grupos de iconos ya elaborados: Guía de estilo (PDF)

En los próximos meses está previsto continuar avanzando con el diseño de los iconos relacionados con Tablas, Mapas y Gráficas.

Por nuestra parte tendremos preparado gvSIG para que el usuario pueda seleccionar entre distintos juegos de iconos, pudiendo utilizar el actual u otros juegos de iconos como el que aquí se presenta.

Aprovechamos este post para agradecer a Mario su trabajo y felicitarle por la profesionalidad del mismo.

Posted in community, development, gvSIG Desktop, spanish, technical collaborations | Tagged , | 3 Comments

Talleres 7as Jornadas gvSIG LAC: Criminología ambiental

detective_gvSIG

Como ya sabréis en las 7as Jornadas gvSIG de Latinoamérica y Caribe hay previsto realizar un buen número de actividades, todas gratuitas, y entre ellas un taller de criminología ambiental con gvSIG.

El objetivo del taller es mostrar las posibilidades del uso de gvSIG, con utilización complementaria de otros SIG libres, para realizar un análisis de distintos tipos de delito.

Este taller se enmarca dentro de la iniciativa de desarrollo de un nuevo producto -gvSIG Crime- basado en gvSIG y orientado a la criminología.

El índice de contenidos del taller es el siguiente:

  • Breve descripción de la criminología ambiental.

  • Metodología de investigación de ecología criminal por medio de Matrices Espaciales de Datos.

  • Principales peligros del análisis ecológico: falacia ecológica, COSP -change of support problem-, MAUP –modifiable areal unit problem-. Elección de retícula.

  • Preparación de la base en gvSIG

  • Uso del archivo con algoritmos SAGA y Geoda.

  • Retorno de la información a gvSIG.

  • Discusión del producto.

Recordar que los talleres son gratuitos, al igual que todas las actividades de las jornadas, y que para asistir necesitáis realizar vuestra inscripción a las jornadas mediante el siguiente enlace:

http://www.gvsig.com/es/eventos/jornadas-lac/2015/inscripcion

Post anteriores sobre talleres en las 7as Jornadas gvSIG LAC:

 

Posted in community, events, opinion, spanish, training | Tagged , , , , | 7 Comments