Automatically creating map series with gvSIG EIEL printing module

gvSIG Association has developed for the Deputación Provincial de Pontevedra a new gvSIG extension for generating printable map series in a professional way.

In coordination with Cartolab (*), Prodevelop SL has developed this new gvSIG extension that lets you automatically create series of maps. These are either sent directly to an available printer or stored as PDF files.

After choosing some simple creation options, a new special layer (or grid) is added to your view, where each rectangle represents the extent of the map which will be printed in each single map sheet. This grid can be modified with an ad-hoc fast-editing tool to add, remove and drag the grid's frames:

Then you can tune the map layout in the traditional way, while you preview each sheet with the help of a floating dialog:

Finally, you can choose to send all the sheets to your printer or store them as PDF files in your hard drive:

This extension will work with the upcoming gvSIG 1.12. Visit its web page here for full documentation and downloads.


(*) The gvSIG Map Sheets extension (gvSIG EIEL printing module) has been funded by the Deputación de Pontevedra in association with Dirección Xeral de Sostibilidade e Paisaxe de la Consellería de Medio Ambiente, Transporte e Infraestruturas de la Xunta de Galicia to the gvSIG Association.

Mapping the 1957 flood in Valencia with gvSIG

After georeferencing with gvSIG this image from Las Provincias newspaper archives website, and using the transparency options, we can see the areas affected by the historical 1957 flood which triggered the development of the new riverbed which bypasses the city to the south.

(Click on image to enlarge)

Google Summer of Code 2011: Final evaluation

After 4 months of work Google Summer of Code has finished. I'm really happy with the final results. Fernando finally finished all the tasks scheduled and the first tests I've made with the code he has written look promising. After all there's some work left for both of us. While he is going to contribute gvSIG Desktop with the GPX provider and some patches to the GPE library. I'm going to integrate all his work for the next release of gvSIG Mini, so it will be able to load local vector data; a great feature in my opinion.

All the documentation written during this summer can be found at the project wiki. The source code at the Subversion repository. And these are some preview snapshots of the project:

Regarding my own impressions about this summer I have to say I'm really satisfied with the experience. My personal motivation since the beginning was continue working for gvSIG Mini and try to join others to work also for it, so that goal has been fully acomplished. On the other hand, being a mentor there's also a path to learn. During this summer I've learned to teach others in topics that were unknown for them, to manage and track their tasks. I've learned also a bit of Kanban and of course I've coded a lot.

Apart from this, the very real motivation was to give my father the GSoC t-shirt :P

In the end a great experience I hope I could repeat following years.

Preparando el FOSS4G

FOSS4GQueda poco más de una semana para que empiece el combo de eventos geoespaciales del año, en decir, por primera vez se concatenan el congreso anual de OpenStreetMap, conocido como The State of The Map, y el FOSS4G, el congreso nacional de la Fundación OSGeo.

Este año acudiré yo en representación de Prodevelop. En el primer evento no tendremos participación activa al menos a priori porque en estos eventos uno nunca sabe del todo qué se va a encontrar, y en el segundo caso sí que daré tres charlas. En medio además participaré en el encuentro de partners de OpenGeo, presentando a Prodevelop y en general viendo qué tienen pensado en OpenGeo para su OpenGeo Suite para los próximos meses.

El FOSS4G es desde luego mi evento geoespacial favorito por su dimensión, cantidad y calidad de contenidos, por los talleres, por volver a ver a gente con la que no se tiene la oportunidad de conversar en persona en todo el año, y en general por concentrar una alta cantidad de conocimiento y diversión en un muy corto espacio de tiempo. Como se suele decir, viene a ser como hacer un master en poco más de cinco días.

Respecto a las charlas en concreto contaremos:

  • Desarrollos en gvSIG Desktop para acceder a datos raster almacenados en la base de datos Postgres
  • Desarrollo del soporte en gvSIG mini para almacenar, gestionar y visualizar cantidades elevadas de puntos de interés
  • Integración de orígenes heterogéneos de puntos de interés en OpenLayers, concretamente datos provenientes de redes sociales y servicios que exponen APIs con parametrización geográfica.

Queda bastante (todo) por preparar así que se me viene una semanita intensa, de seguro el viaje va a ser muy cansado, pero así y todo la experiencia es siempre reconfortante profesional y personalmente así que de seguro tendré cosas que contar durante el evento (supongo que le daré duro al twitter) y a la vuelta por estos lares.

Ya lo comenté en el blog de pero lo repito, si lees esto y vas a estar por el FOSS4G y me ves, no dudes en saludarme, aunque no seremos pocos los hispanohablantes por el congreso, escuchar un poco la lengua materna será de agradecer.

A quick GDAL utilities use case

Today I had to perform some raster data management for my colleagues and ended up with a little bit o CLI kung-fu with GDAL utilities. By the way I want to share them also as a reminder for the next time :-) I had a number of Arc/Info ASCII Grid files to convert, merge and finally transform to serve them on a WMS service.

First, convert all of them from agr to tiff (execute it all in one line)

find . -name "*.agr" -exec bash -c 
 gdal_translate -of GTiff -co "TILED=YES" $file $i.tiff ' \;

Then merge all of them (see the acutes to execute ls and expand the list of files): -o 31.tiff `ls *.tiff`;

And finally an easy transform from UTM31N (ETRS89) to Lat/Lon (ETRS89)

gdalwarp -s_srs EPSG:25831 -t_srs EPSG:4258 31.tiff 4258.tiff

I know this is pretty basic stuff, but not everybody knows how to combine good CLI programs like find to avoid some extra executions.

Google Summer of Code 2011: Mid-term evaluation

The second month passed by and with it the mid-term evaluation. I guess this has been the first time in my life I have had to evaluate someone, so I’ve read a lot about the experience of other mentors in previous years, which are the ‘minimum requirements’ to pass someone, etc. and finally, besides I knew very well both students, I decided to be as objective as I could in the evaluation.

Unfortunately, being objective, I could not pass both of them. Failing a student is always bad news but as someone said once: “a lesson lived is a lesson learned”. When failing someone it’s important for the student to know exactly the reasons, and for the mentor, think about what he/she could have done to help the student. I’ve also talked with org admins to try to find paths to avoid that situation next years.

I’m sure all of us (mentor, student and org admins) have learned something useful :) and I have to thank him for applying. Finally I hope I could mentor him in future years.

On the other hand the gvSIG Mini GPE project is going on very well. The student has finished the support of GPE events and during the second part of the program is planned to develop some Android related tasks: building UI to list features and show details of a single feature. Also we have gained a GPE developer as he is ready to send a patch to the gvSIG tracker, so I’m very happy with this situation.

As for me, I’m taking advantage of this GSoC to refactor the architecture of gvSIG Mini. I’m mavenizing the Android projects and uploading to Maven central some artifacts, so it would be easier building a workspace and manage the different gvSIG Mini based applications.

Finally I’m also trying to refactor the core of gvSIG Mini, as the Android UI and Map components were a bit coupled. That is indeed a big refactor that I'm hoping to have finished by the end of the year.

Google Summer of Code 2011: 1st month report as a mentor

I've decided to monthly write a post on my experience as a mentor during this Google Summer of Code.

This year I posted two ideas on the gvSIG Mini ideas page. The point is to make gvSIG Mini a vector data viewer of standard vector formats (GPX, KML, GML) and of non standard services that provide geo-located data such as Flickr, Foursquare, etc. Having such functionality, gvSIG Mini will become a map viewer of different sources (OSM, TMS, WMS, WMS-c) but also a vector viewer of many other sources. Of course any student could propose his own idea.

The application stage, was in my opinion successful: Five studentes applied for gvSIG Mini and I decided willing to mentor 4 of them (one not because he simply copy-paste my idea into his application form). The decision of the selected students was made by the gvSIG's board, that finally selected 2 students and both of them had a free slot to participate in the GSoC under the OSGeo umbrella.

The communty bounding period

The GSoC starts with a period where the students, can start to know the project and the community. They can introduce themselves, read documentation, plan his summer, know their mentors, etc.

During this period I proposed "my students" to introduce themselves to the community and to stay in touch with it during the summer.

Also we talk about the goals of this summer. gvSIG Mini is a great project to work for if you are a student because is not a huge project like others, this is not gvSIG Desktop or Drupal or whatever gigantic project. Either this is not a very complicated project, this is not the Linux Kernel :P. But in the other hand it fills all the requisites for a GSoC project. It's a free software project, with a community behind, actively maintained and very atractive for mobile developers.

So having this said, my idea for the GSoC is not to have a lot of work done (of course they'll have to code hard :P) but to have "usable" work done. I mean I want code that can be integrated into gvSIG Mini with less effort. I told this to them because I know how frustrating is to write code that is not integrated in a software, or used by no one, instead of that, to write code that can be used by thousand of users will suppose an extra of motivation.

Finally at the end of this period I had a meeting with each of them to discuss the scope of their projects. I gave them the big picture, drawing some component diagrams and thinking in use cases. I decided to make a Kanban table for each project, I divided the work in small tasks of 1/2 days that could be affordable by them; each task is analyzed by me, developed by them and finally validated by me and finished.

Of course I encouraged them to use the wiki and the SVN, so I can take a look to their progress remotely. To ask any problem to me (by Skype or mail) or to the mailing lists. And we agree to have a weekly meeting to review their progress.

First coding month

The first coding month is being quite different for both students.

While one of them is having a great time: He's writing usable code (even by gvSIG Desktop), he's having problems and asking to me and to the developers list, he's carrying out all the tasks at the time and getting involved too fast into the project. He's "giving me a lot of work" but that's great and he feels motivated.

The other is having too many problems: delayed tasks, no code at the SVN, weekly meetings also delayed. And that's, in my opinion, due to the lack of time and programming skills. This week I've encouraged him to ask doubts and finish some of the initial (trivial) tasks on the Kanban. I've also reduced his amount of work and clearly defined the scope of his project to give him an extra of motivation.

Well, it's a month left to the mid-term evaluation and I will love to pass both of the students, that will mean that they are doing a great job and gvSIG Mini is growing. Let's see what happens :)

e-Narcissism reaches new heights

I thought that tweeting "I'm having lunch @ somewhere" was as narcissist as one can get, but I was totally wrong:

Resultado de las elecciones en formato XML

El diario El País ha publicado los resultados de las elecciones municipales y autonómicas del 22 de mayo de 2011 en formato XML, de modo que la URL de cada archivo XML utiliza los códigos INE de cada municipio. Por ejemplo, el código INE de Sevilla es 41091, por tanto la URL del XML con los resultados de Sevilla es:

El 01 es el código asociado a Andalucía. Este es el aspecto del archivo XML:

Por otro lado en la web del IGN se puede descargar un shapefile de centroides o polígonos de cada municipio y una de los atributos de cada elemento es precisamente el código INE.

A couple remarks on gvSIG Mobile at the Italian gvSIG conference

A lot of info about the recent 4th Italian gvSIG conference (Quarte Giornate italiane di gvSIG) held in Udine can be found here, here and here.

I'm going to add a couple notes about things that came up during this event regarding gvSIG Mobile.

Field-oriented features

I had the pleasure of meeting Giuliano Gallerini who works for Leica Geosystems in Italy. According to him, gvSIG Mobile looks too much like a simplified version of gvSIG desktop and does not include some very interesting features that make sense only when you are doing some field work with a hand-held device. These are the two examples he seemed to be especially interested in, which obviously need the help of some additional hardware, for example, this one.

Shifted acquisition of points

The acquired points are shifted by a certain value (entered by the user when the operation starts) in order to overcome some physical obstacle:

Simple triangulation

In this case, the user has to measure the three sides of a triangle, where one of the vertices is unreachable. There are two possible values for the third vertex. The good one is the one that lies behind the obstacle:

SQLite and Spatialite

Alessandro Furieri presented Spatialite and asked when gvSIG will support it. I mentioned a funny pure Java version of SQLite and he replied he knew it but it was very slow and did not recommend it at all. I have just found a second pure Java version of it.

I still believe these pure Java libraries can be useful in a mobile application for a number of resons:

  • We are currently seeing a boom in the mobile industry. Every few months we have new platforms (new hardware, new operating systems or both). Java applications need in the first place a JVM. If a third-party library has a native component which needs to be compiled for each platform, we're losing portability, which is Java's advantage.
  • This pure Java library is probably slower than the one with the native component, but I think the future in mobile mapping applications is not about handling huge amounts of geopraphical data, but smartly handling a relatively small amount of data, which should be feasible also with a relatively slow version of SQLite.
  • I still have not seen a pure Java version of Spatialite, but I think the spatial metadata needed in a Spatialite database file can be created by using SQLite after studying a bit the Spatualite documentation.
Distribuir contenido