Blog

Playing around with Leaflet and POIProxy

I've been some time following Leaflet and this weekend I've decided to write some code on it. So as Leaflet has no tiled GeoJSON layer I've coded a layer to load points from POIProxy, draw them over the map and show a popup.



Of course it can be improved, at the moment only loads points at zoom level 16, the layers are exclusive to avoid overload and there are several bugs… but as a proof of concept, it's not bad :P

About Leaflet, I like several things. Its API is simple and lightweight and that's the point, it's incredibly fast on mobile devices. Apart from this, there are several interesting layers such as CartoDB that look promising :)

By the way I've uploaded a POIProxy demo that runs on desktop and mobile :) and the code is at my Github

¡Aventura Oceánica vuelve a la carga!

Kike y José Carlos vuelven a subirse al Bahari para retomar la Aventura Oceánica, tras un año de parón tras partir el mástil poco después de cruzar el cabo de hornos. El sábado pasado salieron de Valparaíso (Chile) hacia la Isla de Pascua. Desde Prodevelop les deseamos toda la suerte para que sigan con su impresionante viaje alrededor del mundo, esta vez en pleno Pacífico.

Aventura Oceánica en 2012-02-01

Puedes seguir su itinerario día a día desde su web gracias a un sencillo desarrollo que llevamos a cabo en Prodevelop hace ya más de dos años utilizando PostgreSQL/PostGIS, Spring y Java Mail en el servidor y Open Layers en la capa de presentación.

Experimental SQLite/Spatialite layer in gvSIG Mobile

Xerial is a SQLite JDBC driver developed by Taro L. Saito. It includes the necessary native libraries to access SQLite databases from a Java application and it also provides a slower pure-Java version of it which extends the number of platforms where this can be used.

I have implemented an experimental vector driver in gvSIG Mobile 0.3 to read/write Spatialite-compatible SQLite databases. Xerial is not aware of the Spatialite requirements, but it's very easy to create the right tables and fields so that other applications can recognize the resulting SQLite file as a Spatialite DB.

This short video shows the result. The steps shown are:

  1. Open a shapefile in gvSIG Mobile.
  2. Export the layer to SQLite.
  3. Open the resulting SQLite DB as a new layer.
  4. Add a polygon to the layer and save it.
  5. Use ogr2ogr to export the resulting SQLite DB to SHP. This proves that everything was OK and our file is recognized as a Spatialite DB.
  6. Open the new shapefile in gvSIG Mobile to see the changes again.

Rendering local shapefiles with HTML5

Thanks to Tom Carden's javascript functions from his shapefile-js project and the new HTML5 local file access API, it is very easy to load and render any shapefile stored in the client's device.

You can test it here.

If you don't have a shapefile close at hand, get one of these: [China], [Europe], [South America], [United States].

Comments:

  • I have only tested it on Windows 7 + Google Chrome v. 15.x and Mozilla Firefox 8. I'm curious to see if it works on smartphones.
  • Choose a line or polygon SHP file (not a very big one).

Esta es la idea: establecer área de interés arbitraria sin perder velocidad

En este ejemplo en desarrollo se trata de una tabla Oracle Spatial en la que hemos filtrado el área de interés señalada "a mano alzada" por el usuario:

Video de las JIDEE 2011

La semana pasada tuvo lugar las JIDEE 2011, también conocidas como II Jornadas de Infraestructuras de Datos Espaciales, que desde el año pasado se celebran conjuntamente entre España y Portugal.

Dicen que una imagen vale más que mil palabras. Probablemente se pueda extender, exagerando, a que un vídeo vale más que mil imágenes. Aquí dejo el video resumen de la organización, donde aparece entrevistada nuestra compañera Amelia del Rey, responsable del área geoespacial de Prodevelop.

User Scripts and Open Layers

Yesterday we have a visit to the office and we wanted to show an application on a development server on a customer facilities. They opened for us the port to access the app, but they forgot to open the TileCache web server so our OpenLayers map was full of pink tiles and we cannot open the service.

What to do? Well we didn't have the time to catch de sys admins so I figured that changing somehow the map Base Layer by any other suitable WMS layer from our national SDI, precisely our great ortophoto service (called PNOA) would be enough to not get the embarrassing pink tiles.

So I ended up writing an small User Script (my very first one) that could be easily added to the Chrome/Chromium browser using the Tampermonkey extension (similar to the Greasemonkey extension of Mozilla Firefox). The script looks for a layer called "Base" and changes its url and the layer name of the parameters object. It also does the same task on the overview map.

// ==UserScript==
// @name Dirty OL Hack
// @namespace http://www.prodevelop.es
// @description Changes the OL base map
// @include http://my-great-ol-app/path/*
// ==/UserScript==

window.addEventListener("load", function(e) {

  Ext.onReady(function(){
    map = path.to.my.map;
    l = map.getLayersByName("Base")[0]
    l.params.LAYERS = "pnoa";
    l.url = "http://www.idee.es/wms/PNOA/PNOA";
    map[map.getLayerIndex(l)] = l;

    c = map.getControlsByClass("OpenLayers.Control.OverviewMap")[0];
    c.layers[0] = l;
    c.ovmap.layers[0].url[0] = c.layers[0].url
    c.ovmap.layers[0].params.LAYERS = c.layers[0].params.LAYERS

    l.redraw();
    c.ovmap.layers[0].redraw()

  });
}, false);

The point is that this code has to run when all the Ext.JS layout and OpenLayers code has been initialized.

It has more holes than an emmental cheese for sure, but as dirty as is, it worked fine for the demo. I have no idea why it doesn't work on Firefox but works on Chrome and in Opera but who cares? :-).

Reflexiones sobre las JIIDE 2011

Hoy @visancal y yo, junto con Amelia hemos estado en las Jornadas Ibéricas de Infraestructuras de Datos Espaciales celebradas en Barcelona. Hemos tenido la oportunidad de hablar del "Nuevo Geoportal de la Diputación de Valencia: Guía Urbana" y de la "Implantación de Geoportales con soporte técnico profesionalizado en software libre".

La experiencia una vez más ha sido muy positiva. A parte de sumar una presentación más, he tenido la oportunidad de aprender más cosas a cerca de tecnologías geoespaciales e IDEs. Se ha hablado mucho de estándares, interoperabilidad, software libre, nos hemos encontrado y con compañeros de profesión y hemos compartido experiencias...

El formato de las jornadas ha sido, para mi gusto, demasiado compacto, 80 ponencias con 5 sesiones en paralelo, no daban para seguir o enterarte de todo, así que me ha dado tiempo a estar en un par de presentaciones de implantaciones de IDE y una en la que se comparaban los datos entre OSM y Cartociudad para unas determinadas zonas de la Comunidad de Madrid.

Lo que más me ha llamado la atención es lo que se ha hablado en las dos ponencias plenarias, la de la mañana y la de la tarde. Por la mañana el director del IGN (Alberto Sereno) y el del Instituto Geográfico de Catalunya (Jaume Miranda) han improvisado una ponencia (debido a la falta del ponente principal) en la que han mostrado opiniones contrarias respecto a la calidad de los datos geográficos en España, la (des)organización de los distintos organismos públicos que se encargan de la publicación de esos datos y lo más importante a cerca de la usabilidad y difusión del trabajo que se está haciendo de liberación de servicios y datos a través de las IDE.

La conclusión a la que se ha llegado es que hay un problema de usabilidad: el ciudadano no conoce las IDE, no las entiende y en definitiva no le son de utilidad. Al final, parece que todo el esfuerzo que se hace de publicación y liberación de datos geográficos acaban "muriendo" en usuarios técnicos, lo cual no es malo, pero podría ser mejor.

Por la tarde, el ponente plenario era @edparsons, responsable del contenido geográfico de Google Earth y Google Maps. No sé si ha sido casualidad pero ha tocado de pleno y ha dado en el clavo respecto a las conclusiones que se habían sacado por la mañana, el tema de la usabilidad. La conferencia ha sido muy "a la Google - don't be evil". Ha empezado predicando a cerca de la colaboración entre las IDE tradicionales y los servicios geográficos de Google: ha comparado las IDE con el servicio Google earth builder, la directiva INSPIRE con la publicación de APIs sencillos y útiles. Pero finalmente, ha habido una diapositiva y un comentario aplastante: Google Earth ha llegado a los mil millones de descargas y ponía una gráfica donde se pretendía poner de manifiesto que las IDE tienen un número muy bajo de usuarios y muy técnicos (lo que él ha llamado "people in white coat") mientras que por ejemplo Google Earth está destinado al "mass market". Ese es el punto clave que ha querido transmitir, conseguir utilizar la tecnología para hacer llegar la información geográfica al gran público.

Así pues, mientras por la mañana directores de institutos geográficos se lamentaban de que nadie les entendía y nadie "les usaba", por la tarde se hablaba de cómo un producto que expone información geográfica es usado por millones de personas de manera natural. Respecto a esto, sólo dos apuntes más: mientras que la ponencia plenaria de la mañana, se ha pasado 45 minutos del tiempo previsto (desbaratando el resto de ponencias), la de la tarde la ha clavado en 45 minutos (que era el tiempo que tenía), sin parar de hablar todo el tiempo, con avería del proyector incluida. El otro apunte es respecto a la herramienta Google earth builder, es un servicio que permite almacenar en la nube información geográfica para posteriormente publicarla con un click en Google Earth/Maps o a través de un servicio WMS, más sencillo imposible.

En definitiva, visto lo visto, parece que se habla demasiado de estándares, interoperabilidad, IDEs, que están muy bien y son necesarias, pero al final el gran caballo de batalla que es acercar la información geográfica al ciudadano de a pie es algo que está muy lejano. Sin duda es algo para reflexionar.

gvSIG Mini and POIProxy

This summer I've spent some of my time playing around with a personal project called POIProxy.

POIProxy is a service that handles requests to any public POI service providing a well defined REST API. It's able to parse JSON and XML responses and serve standard GeoJSON format, just providing a configuration file containing the URL and response format of the POI service to consume. And the best part, it's free software ;)



So, the service can be consumed by any GIS client, for example it's being used at this demo of OpenLayers social that @jacarma, @xurxosanz and @visancal developed for this year's FOSS4G. Although one of my pending tasks was giving support to gvSIG Mini to load the data provided by POIProxy, and that's what I've done this weekend.

At the moment it's just a "Proof of Concept" as I have no more time to spend on that (but I needed to see all that POIs on Android :P). So gvSIG Mini now is able to load, display the points and alphanumerical data of any layer provided by POIProxy and cache the data on disk, to speed up the data load after the first download.




As POIProxy is able to serve points from any WFS layer, now gvSIG Mini has also that capability. This is a snapshot loading the sample "world:cities" layer that comes into a standalone geoserver distribution.



Next step should be support search and reverse geocoding from POIProxy to gvSIG Mini, so we can finally replace the retired Namefinder service.

gvSIG Mini, KML and multi-layer support

These days, @fergonco and me have been refactoring gvSIG Mini. The refactor was intended to decouple the MapView from any Activity, so it can be a (more) reusable widget.

Well, that goal has been fully accomplished, so while @fergonco has been giving support to add controls to the map (in the OpenLayers way), I've been playing around with the brand new vector API and adding support to load several tiled layers to the MapView. The result seems (in my opinion) very promising, besides there's some work left to have it fully working.

Here are some snapshots of gvSIG Mini loading two raster tiled layers and several local and remote KML files (some of them from the Geoportal de la Comunitat Valenciana, developed by Prodevelop some months ago)


PNOA (TMS) + Cartociudad (WMS)



PNOA (TMS) + Cartociudad (WMS) + KMLs



OSM + Google Maps transparent layer + KMLs



OSM + Google Maps transparent layer + KMLs



I will try to have all that features available in gvSIG Mini (at least for a demo) for the 7th gvSIG conference next December.
Distribuir contenido