miércoles, 10 de febrero de 2010

Extrusion - Video Tutorial

En este videotutorial se muestra cómo extruir una capa de polígonos en relación a un campo "ALTURA" que pertenece a la misma capa. Esta operación también podría aplicarse dando una altura fija a los polígonos extruidos.

La extrusión de geometrías se puede utilizar en muchos ámbitos, siendo una ayuda importante a la hora de categorizar los datos por parte del usuario. Para extruir polilíneas o puntos el proceso es muy parecido.

Esta vez el sistema operativo utilizado es MacOSX-SnowLeopard, con la versión para Mac con Sextante y navTable que sacó Agustín Díez de gvsigmac.blogspot.com




Y en nuestro próximo capítulo de esta serie de tutoriales veremos cómo georreferenciar modelos geométricos (3ds, obj, ive) en nuestra vista 3D.

lunes, 1 de febrero de 2010

Tutorial - exageración vertical en gvSIG3D

Cuando creamos una nueva vista en gvSIG3D, aparece un parámetro llamado exageración vertical que podemos modificar en ese mismo momento o a posteriori. La exageración vertical no es más que un factor de escala que se aplica sobre los datos de un modelo digital de terreno. Cuando este factor es igual a 1, obtenemos una representación fiel a los datos, sin embargo si el valor es mayor que 1, lo que hacemos es multiplicar este factor por cada dato para exagerar las elevaciones. Del mismo modo si aplicamos un valor menor que 1, lo que estamos haciendo es reducir las elevaciones.

Normalmente, este factor de escala se utiliza para crear vistas más espectulares de las zonas montañosas. Sin embargo, este factor también se puede utilizar para ajustar los valores de nuestros datos y obtener una representación fiel a la realidad. Veamos un ejemplo de como realizar esta operación.

Disponemos de un archivo .tif en escala de grises que representa una zona montañosa del norte de España. Al añadirlo como capa de elevación con una exageración vertical de 1.0 obtenemos el siguiente resultado:

Como se puede apreciar en la imagen, a pesar de poner un factor de escala igual a 1.0, las elevaciones que estamos visualizando no se corresponden con la realidad. Esto es debido a que al cargar un fichero tif como elevacion, gvSIG3D espera que cada unidad del gradiente de gris corresponda a una unidad en metros. Sin embargo, cuando cargamos datos de un archivo no siempre sabemos en que unidades están o que respresenta cada valor de gris, como sucede en este caso.

Para solucionar este problema, lo que vamos a realizar es tomar ciertos puntos de altura conocida como referencia y ajustar el valor de exageración vertical. En nuestro caso, hemos cargado una capa vectorial con datos de las poblaciones de España. En la siguiente imagen, vemos que hay varias ciudades que se situan sobre nuestra capa de datos de elevación:


Utilizando la herramienta Información de gvSIG podemos averiguar que valores tiene la capa raster que hemos utilizado como datos de elevación. Para ello, seleccionamos la herramienta Información y nuestra capa de elevaciones. Posteriormente pinchamos con el cursor sobre el punto de interés conocido, en nuestro caso la ciudad de Artigas. Inmediatamente, se nos mostrará una ventana con la información del raster en dicho punto:


El valor que se utiliza para representar la altura es el Band_Value. Como vemos en la tabla,el raster nos esta dando un valor de 1126 para la ciudad de Artigas, cuando en la realidad la ciudad se situa a tan solo 201m. Llegado este momento, solo tenemos que realizar una simple operación para calcular el factor de escala que debemos aplicar:

exageración vertical(0.1785) = altura_real(201) / Band_value(1126)

Por tanto, debemos aplicar una exageración vertical de 0.1785 a nuestra capa y obtendremos el resultado deseado:


martes, 26 de enero de 2010

Docking Skin - Video Tutorial

Hi all,

First of all is to say that we have decided to write some posts in english and some posts in spanish. We apologize for possible errors when writting in english.

One of the integration problems of the 3D extension in gvSIG was the windowing system. The 3D graphics windows are usually dependents on the operative system. So in Java/Swing and using JInternalFrame for the user interface, is not possible to merge correctly the system dependent windows and the Swing painted windows.

There exists various solutions:
  • GLJPanel: This is the adopted solution in JDialogSkin. JOGL (The java api used to create 3D windows), allows us to create a JPanel that merges correctly with swing and also allows to draw OpenGL. The problem is that under linux the performance of the system is really slow, and only is useful in parts where the view doesn't changes so much. The maximize buttons are not available in some platforms.
  • Docking System based on Swing: A docking windowing system fits all the application views inside a main window. Usually this systems allows the personalization of the views and even undock some windows. The gvSIG Docking skin is based on Infonode Docking Windows [1].
Currently most applications are designed in the same way, OpenOffice manage multiple documents but you can only work with the active in a specific window.

This first video tutorial is centered in how docking skin works. No layers are added but three different views are created and managed in different modes.






[1] http://www.infonode.net/index.html?idw

martes, 19 de enero de 2010

Arreglado el bug en las capas de elevación

En la entrada anterior, comentamos que se habia detectado un error en el recortado de capas de elevación de forma que los datos se extendian hasta rellenar las cuadrículas que forman la malla del terreno. Como se puede apreciar en las siguientes imágenes, hemos detectado el error y lo hemos solucionado:

En la imagen superior, vemos el resultado de cargar un tif con datos de elvación de la zona norte de España proporcioado por Agustín con datos de cobertura proporcionados por el servicio WMS de PNOA.

En la siguiente imagen podemos apreciar los mismos datos sin la capa de cobertura.

Al parecer, al generar los archivos de la cache teniamos activada la opción setAdjustToExtent de la clase BufferFactory, de manera que cuando se solicitaba un "tile" o extension que no estaba totalmente cubierta por la capa cargada, se estiraban los datos de dicha zona para cubrir el "tile" completamente.

Una vez solucionado este pequeño error, encontramos dos nuevos fallos. Primero, detectamos que se ignoraba el valor por defecto para aquellas zonas donde no se dispone de datos, que se indica mediante el método setNoDataToFill. Este error detectado en la libreria libRaster, ya ha sido notificado y se ha corregido en la el trunk de gvSIG. También hemos solucionado la excepción que se producia al calcular el área de interés de algunos de los "tiles" de manera que nunca llegaba a cargar los datos. Finalmente, hemos modificado la longitud de las faldas o bordes de los "tiles" para evitar que se vean agujeros durante la carga de datos.

Muchas gracias a Agustín Diez por reportarnos el error. Esperamos poder solucionar pronto el resto de bugs reportados y subir un nuevo build de la extensión 3D en breve.

jueves, 14 de enero de 2010

La comunidad prueba gvSIG3D en MacOSX

Desde que publicamos el build de gvSIG3D y concretamente la versión de MacOSX, hemos tenido ya algunos usuarios interesados y probando esta nueva versión.

Agustín Diez, fue uno de los primeros usuarios que comenzó probando la versión de Mac, y ya nos ha reportado algún Bug que otro!. Esto era precisamente lo que queríamos, que la gente nos reportara todos los problemas que encontrara, ya que así podemos mejorar cuánto antes esta versión.

En esta entrada se van a comentar algunos términos de carácter algo técnico. En entradas posteriores explicaremos cuál es la técnica usada para la representación 3D y explicaremos en detalle esos términos.

Concretamente el bug que ha encontrado es al cargar una capa de elevación desde fichero, se da el caso que no recortamos correctamente los "tiles", extendiendo los datos raster a toda la extensión que se pide. En esta imagen que nos ha remitido Agustín se puede ver el error.

La imagen muestra una vista 2D con la capa de elevación (inferior izquierda), la vista 3D de gvsig (superior izquierda) y a la derecha una captura tomada con grass y los mismos datos.

Además también se puede apreciar que, debido a que la exageración vertical está por defecto a 5 unidades, se observan los cortes entre los "tiles" y la falda que se genera para ellos para evitar agujeros, aún así no es lo suficientemente larga para evitar que se vea el fondo.

Ya estamos trabajando en solucionar ese problema y esperamos sacar un nuevo build que solucione el problema para todas las plataformas.

martes, 12 de enero de 2010

Nuevo blog y nuevo build

Tras el éxito en las 5as jornadas de gvSIG nos complace anunciar la publicación de este nuevo blog "no oficial" acompañado de un nuevo build de gvSIG 3D [1]!!

A parte de las mejoras realizadas para las jornadas, este build presenta una particularidad muy importante: al instalarlo se sobreescriben las librerías raster que estaban dando problemas en windows Vista/ windows 7. Además para macOSX se ofrece la aplicación completa en forma de dmg.

Es decir cuando instales la extensión 3D podrás ejecutar gvSIG en estos sistemas operativos y teniendo acceso a las utilidades raster.

En entradas posteriores iremos comentando ampliamente los nuevos desarrollos introducidos en la extensión, por ahora, y a modo de resumen podemos enunciar las siguientes características:

  • Nueva versión del núcleo integrada(osgVP-2.2.0)
  • Mejoras en el manejo de memoria.
  • Nuevo sistema de simbología.
  • Diferentes modos de visualización, incluyendo estéreo y pantalla completa.


Nuestro objetivo es que este build sirva para recoger impresiones de usuarios y desarrolladores, y también como campo de pruebas de estabilidad de cara a la integración con gvSIG 2.0.