Category Archives: FOSS

PostGIS Day 2019

This year I was happy to attend the PostGIS Unconference organized by the good folks from Geodan and Webmapper. The idea for the event was to cover the middle ground between typical introductory activities and developer-oriented ones, targeting then mainly PostGIS power users.

The event was held at Science Park Amsterdam, hosted around 30 people and was organized in a very open way, meaning there’s an open Google Document for anyone to jump in, propose talks, express interests, etc. Super simple. The rest of the logistics of the event involved having coffee and lunch at the venue provided by Geodan, and some beers afterward sponsored by DAT.mobility.

The list of ideas exposed at the event was large, but at the end, only three “classic” talks were delivered and after lunch, the group split into different discussions/Birds of a feather to cover the following themes:

  • Serving vector tiles with PostGIS
  • Postal codes (focused in Netherlands case)
  • Cloud discussions
  • Large data storage and partitioning

Then we grouped back to provide some outcomes/conclusions and we head towards the pub (and myself to the airport back to Valencia).

The talks were related to the BoF sessions and covered the following topics:

  • Tom van Tilburg from Geodan introduced us to Clickhouse database, and how it can complement Postgres using its Foreign Data Wrapper to rely on this highly performant columnar storage for analyzing big volumes of data, basically to perform filtering and aggregation to send back to Postgres the results to be joined with master geometries and other indicators. The approach needs to craft carefully your queries to ensure you do all the processing in Clickhouse and return only the results. Anyway, I see more and more this database being mentioned as a good technological option to pay attention to.
  • Marco Slot from Microsoft exposed how Citus, an extension for enabling sharding for Postgres, can help scale the database to manage large datasets. It’s not focused on anything geospatial in particular, but he was looking for use cases where Citus can help to achieve good results. In fact at this moment apparently Citus does not support PostGIS aggregates but you can track this issue for future developments.
  • I presented the work that my colleague Yuri and I are doing to evolve the standard OpenMapTiles workflow from generating a static MBTiles asset to serve vector tiles into serving them directly from the database, leveraging the rather recent support for the MVT format just straight from PostGIS. You can find more details about the procedure on this document I used as a script for my talk and demos.

As a conclusion, it was nice to attend this unconference, to catch up with some friends from the area, and learn how relevant it is becoming for the Postgres community to respond to big data use cases.

About Antipodes Map

We’ve been pretty quiet over the last year but that doesn’t mean we’ve been unoccupied. Last summer we (Pedro and me) participated with some friends on a hackathon with a project to give to teachers from our region a tool to help them to relocate, precalculating travelling times with OSRM and some open datasets, one of them a database of schools that our government published as a spreadsheet. That gave us the chance to work and improve our knowledge on the CartoDB Platform, we used their JavaScript API to place a Leaflet map with a parametrized map where the SQL that defined the layer changed depending on user selections. The project is online¬†with some slides with further information, all in Spanish.

De Casa al Cole map

De Casa al Cole Map

After that experience, and thanks to Pedro’s friendship with Carlos Galcerán, a Cuban GIS consultant working in New Zealand, we had the opportunity to put our brains working again for another pet project. The idea is easy, have you ever wondered who is on your antipodes? Yes, three quarters of our planet are oceans so the chance to have an inhabited antipodes is not high but here in Spain, it happens that half of the Iberian Peninsula is antipodal to New Zealand. Join that with the possibility to have data about schools on both countries and well, that’s reason enough for us to start playing. Imagine a geography class on primary school, say in the north coast of Galicia, where kids can contact their antipodal school in Christchurch and practice their English, or kiwis practicing their Spanish, both learning about our cultures, favorite sports, our differences.

We started with a dataset only for Galician schools and end up digging a national registry of schools to create a full dataset of schools for the country. That and the help of Carlos and some help from the Spanish Embassy in New Zealand, gave us all the data needed to set up two tables on CartoDB, so the last piece was just a web interface to develop. With the recent release of OpenLayers 3, and having played with it a bit before, I wanted to do something more complex. We’ll leave the technical details about data and software for another post or two. The application is available at

Antipodes Map

Antipodes Map

If you like the idea and know someone in New Zealand or Spain that could be interested, please spread the word. And of course, the data is available for reuse on CartoDB and the code is also on GitHub, ready to be reused on other lucky antipodal combinations, we’d love to see both data and software reused and improved!!

Mapping for the busy cartographer: today moving dots

This article describes how to make a quick map using some nice services we have at our hands. Nowadays almost everyone can create a maps using services like CartoDB, Mapbox, uMap or even¬†Google My Maps. In this case I’ll show how I used the incredible flexibility of CartoDB to combine some Postgres/PostGIS SQL with CartoCSS to animate some dots on top of OSM cartography rendered by Mapbox.

This combination is really unique and convenient, other services only allow you to upload or draw some features and decide some static styling for them. But with this combination, using old SQL you can adapt your data for different uses, with CartoCSS the power of the Mapnik rendering library is available and finally, using the awesome Torque capabilities, animation can be added to our map.


The idea of this map is to represent a crowd of cyclists running along the future bike line by the interior ring of the city of Valencia. Tomorrow Sunday 21 September there will be a march to show the interest of city bikers for this line so my idea was to make people think about how the city look like with this (still imaginary) bike lane full of cyclists, instead of cars.

Data preparation

  1. Trace a line that represents the route
  2. Transform the line to EPSG:3857
  3. Make the line denser, placing points every 25 meters using the ¬ęDensify geometries given an interval¬Ľ QGIS processing tool
  4. Convert the line to points (again with Processing) and give them these properties:
    • route it will serve to produce more routes in the future
    • lap to separate the points of the route of other points of interest outside the route
    • id to order the rendering of the points


After uploading the dataset to my CartoDB account I’ve created a new visualization that will have these layers:

  1. A blurred line with the route
  2. A point marking the meeting place to start the activity, just in front of the city hall.
  3. The animated points moving over the route


Load the layer paseo and customise the SQL. The SQL is quite self-explanatory, first we filter the points over the line and then we use the ST_MakeLine aggregated function to rebuild our original line.

WITH route AS (
  FROM paseo
  WHERE route = 1 AND lap>0
  ORDER BY id)
  1 cartodb_id,
  ST_MakeLine(the_geom_webmercator) as the_geom_webmercator
FROM route

The styling of this layer is a simple CartoCSS rule with the only trick of a heavy blur filter.

    line-color: #A53ED5;
    line-width: 8;
    line-opacity: 0.7;
    line-comp-op: lighten;
    image-filters: agg-stack-blur(10,10);

Moving dots

This is the most important part of the map, of course. I have a path of points ordered and what I want is to show a more or less crowded ring of people moving. To do it, I’ve created a UNION¬†of ten SELECTs¬†to¬†the¬†table offsetting the id over the full range of id’s. To acieve¬†that I’ve used this long SQL:

WITH route AS (
    SELECT * FROM paseo WHERE lap>0 AND route = 1
laps AS (
        cartodb_id, the_geom_webmercator,
    FROM route r1
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 25 THEN id - 25 ELSE id - 25 + 254 END id
    FROM route r2
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 50 THEN id - 50 ELSE id - 50 + 254 END id
    FROM route r3
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 75 THEN id - 75 ELSE id - 75 + 254 END id
    FROM route r4
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 100 THEN id - 100 ELSE id - 100 + 254 END id
    FROM route r5
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 125 THEN id - 125 ELSE id - 125 + 254 END id
    FROM route r6
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 150 THEN id - 150 ELSE id - 150 + 254 END id
    FROM route r7
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 175 THEN id - 175 ELSE id - 175 + 254 END id
    FROM route r8
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 200 THEN id - 200 ELSE id - 200 + 254 END id
    FROM route r9
        cartodb_id, the_geom_webmercator,
        CASE WHEN id  > 225 THEN id - 225 ELSE id - 225 + 254 END id
    FROM route r10
    cartodb_id, the_geom_webmercator,
    ((random()*10-10) + id) id
FROM laps

The first with subquery filters the points of the path for this route that feed the next subquery: 10 unions with an id offset separation of 25 points. This subquery is passed to the main query that finally randomizes the id by +-5 positions, that is the order, so the moving dots are not regular, giving a more interesting (anarchic?) effect.

Using the wizard, the main aspects of the Torque animation are set up. It’s important to use a proper resolution, duration and frame count to adjust the rendering to a nice motion. Afterwards some last touches to the CSS to adjust the compositing operation and specially the trails, leaving just one more rendering of a similar point, instead of the default bigger and more transparent feature.

Map {

  comp-op: minus;
  marker-fill-opacity: 1;
  marker-line-color: #FFFFFF;
  marker-line-width: 0.5;
  marker-line-opacity: 1;
  marker-type: ellipse;
  marker-width: 6;
  marker-fill: #41006D;
#paseo[frame-offset=2] {

Meeting point

To add a feature to the map to render the meeting point, I manually added a¬†new feature to the layer using the CartoDB editor. This feature will have the property lap=0 so it won’t be on the other layers. The SQL for this layer is just a

SELECT * FROM paseo WHERE route = 1 and lap = 0

And the CartoCSS is quite simple with the only important trick to use an external SVG. I’ve used directly the town-hall marker from the Mapbox Maki repository.

  marker-fill-opacity: 0.9;
  marker-line-color: #FFF;
  marker-line-width: 1.5;
  marker-line-opacity: 1;
  marker-placement: point;
  marker-type: ellipse;
  marker-width: 40;
  marker-fill: #3B007F;
  marker-allow-overlap: true;

  marker-file: url(;

Fixed info window

On this layer I’ve also¬†configured an¬†infowindow so when you click on the town hall icon you get some data about the schedule for the event.

Base map

I started using the Nokia day grey base map offered by CartoDB, but after a couple of iterations on the design, I thought it could be great to use a pale purple base map so I went to Mapbox web and quickly crafted a variation of their Mapbox Streets base layer.

Other components

Finally, using the new nice CartoDB layout capabilities I’ve added a simple title for the mobile version of the rendering and a couple of texts and an image (uploaded to imgur) for the logo of the group promoting this activity.


Well that’s all. You can check¬†the visualization here. The job took like 4¬†to 5¬†hours. I finished the first animated version in 2/3 hours but you know, devil is in details and designing is always about iterations and refinement. Anyway I’m quite satisfied on the result and I think it serves for its purpose. Definitely I’ll have the opportunity to review and refine this process, as I imagine more routes and bike marches will happen in Valencia where bikers are winning the battle ūüôā

What do you think about this visualization. What do you like and what do you hate?¬†Improvements? I’d love to hear your thoughts and comments to make better maps.

Update: almost same effect without crazy UNION

This morning Pedro-Juan asked my, why so many UNIONs? why not using just one long CASE?. After accepting the challenge I did something with CASEs but then realized that I wast just looping over a smaller set of id values, so I could use the modulo function. So the long UNION SQL could be reduced to this easy and simple SQL:

    cartodb_id, the_geom_webmercator, 
    ((random()*10-10) + id%3) id
FROM paseo WHERE lap>0 AND route = 1

Wow, that’s so concise compared with the huge SQL above!! Using this id%3 I forced all the values to be just 1,2,3 but with the afterwards random the moving effect is achieved.

The CartoCSS would need also some changes to¬†allow to “fill” the rendering over all the animation time. Check the differences with the above code, specially the number of offsets added:

Map {

  comp-op: minus;
  marker-fill-opacity: 1;
  marker-line-color: #FFFFFF;
  marker-line-width: 0.5;
  marker-line-opacity: 1;
  marker-type: ellipse;
  marker-width: 6;
  marker-fill: #41006D;
#paseo[frame-offset=4] {}
#paseo[frame-offset=8] {}
#paseo[frame-offset=12] {}
#paseo[frame-offset=14] {}
#paseo[frame-offset=16] {}
#paseo[frame-offset=18] {}
#paseo[frame-offset=20] {}
#paseo[frame-offset=22] {}

The resultant visualization can be accessed here. Which one do you like more? Do you think it’s worth the simplicity over the (in my opinion) slightly worse effect?

C√≥mo instalar la toolbox de LAStools en QGIS

El conjunto de herramientas LAStools para procesar datos LiDAR est√°n disponibles en el software propiertario ArcGIS desde abril de 2012, pero no ha sido hasta el FOSS4G13 de Nottingham que no han estado disponibles para QGIS. Las herramientas han sido testadas en QGIS 1.8.0-Lisboa y 2.0.1-Dufour. En esta entrada os ense√Īamos el modo de installar LAStools en QGIS y, b√°sicamente, es la traducci√≥n y adaptaci√≥n del manual de instalaci√≥n que se encuentra en el blog de Martin Isenburg aka rapidlasso.

Nos centraremos en instalar las herramientas en la versión de QGIS 2.0.1-Dufour, por lo que lo primero que necesitamos es descargar e installar dicha versión. A partir de entonces, seguiremos las siguientes instrucciones:

  1. Si tienes abierto QGIS, ciérralo

  2. Borra la carpeta donde est√° contenido el plugin de LiDAR en sextante. La ruta para los usuarios de Windows es:

    "C:\Program Files\QGIS Dufour\apps\qgis\python\plugins\processing\lidar"

    La ruta para los usuarios de GNU/Linux es

  3. Copia la carpeta lidar que est√° en este archivo comprimido en el lugar de la carpeta borrada.

    Nota: Los usuarios de QGIS 1.8.0-Lisboa tienen que sustituir la carpeta lidar dentro de:

    "C:\Program Files\QGIS Dufour\apps\qgis\python\plugins\sextante\lidar"

    o si utilizas GNU/Linux, dentro de:


    por la que se encuentra en este otro archivo comprimido.

  4. Descarga la versión más reciente de las LAStools que se encuentra en

  5. Extrae la carpeta lastools. Si est√°s usando Windows, procura no estraerlo en ninguna ruta con espacios, si est√°s en GNU/Linux tendr√°s que compilar las herramientas.

  6. Inicia QGIS, y si encuentras alg√ļn error cuando se carge el script de Python, repite los pasos de 1 a 3 con m√°s cuidado ūüėČ

  7. Habilita el toolbox que se encuentra bajo el men√ļ procesing como se muestra en la siguiente figura:


  8. Cambia el toolbox de Simplified Interface a Advanced Interface, im√°genes de la izquierda y derecha respectivamente:

  9. Abre el submen√ļ Options and configurations de la pesta√Īa Processing como se muestra a continuaci√≥n:

  10. Activa la casilla Activate que se encuentra en Providers -> Tools for LiDAR data como se muestra en la siguiente figura, e introduce la ruta de la carpeta donde estén alojadas las LAStools en LAStools folder:

  11. Ahora deberías ver el conjunto de herramientas Tools for LiDAR data en el toolbox y todas las LAStools como en esta figura:

  12. Inicia cualquier comando mediante un doble click y rellena las opciones. En la siguiente figura se muestra la interfaz de lasinfo.

Tened en cuenta que, al distrubuirse el código de manera libre sólo de unas pocas herramientas, los usuarios de GNU/Linux tendrán menos funcionalidades disponibles. No así los usuarios de Windows, cuyas herramientas se distribuyen como shareware.

Martin Isenburg agradece a Victor Olaya por crear todo el entorno de sextante para crear nuevos plugins y por los ejemplos de c√≥mo crear m√≥dulos. Al igual que √©l, yo tambi√©n agradezo a Victor todo el trabajo porque tambi√©n estoy trasteando con la creaci√≥n de m√≥dulos dentro de sextante ūüėõ

Herramientas Libres para trabajar con datos LiDAR

En los √ļltimos a√Īos ha proliferado el uso del LiDAR como t√©cnica topogr√°fica. B√°sicamente, consiste en un tel√©metro l√°ser que mide el tiempo que tarda una pulso l√°ser en ir y volver despu√©s de haber rebotado en un objeto. De este modo consigue hallar la distancia entre el instrumento y el objeto. Es decir, es sencillamente un distanci√≥metro, pero con la particularidad de que puede llegar a medir unos 100000 puntos por segundo (100 MHz). Si, adem√°s, incorporamos a los equipos de medici√≥n un GPS que nos d√© la posici√≥n y un sistema inercial que nos de la orientaci√≥n si estamos en movimiento, podemos dar coordenadas globales, normalmente en el sistema WGS84, a todos los puntos medidos. Por tanto, tendremos lo que se denominan nubes de puntos de los cuales conoceremos su posici√≥n en un sistema de referencia global, adem√°s de otras caracter√≠sticas relativas al objeto, como la intensidad o diferentes ecos de retornos, o referentes a la medici√≥n como √°ngulo de emisi√≥n del pulso, tiempo o distancia relativa al sensor.

Las compa√Ī√≠as que desarrollan instrumentaci√≥n LiDAR, ya sean tel√©metros aerotransportados, dando lugar a lo que se denomina en ingl√©s Airborne Laser Scanning (ALS), o tel√©metros terrestes, Terrestrial Laser Scanning (TLS), tambi√©n desarrollan su propio software destinado a:

  1. Extraer los datos del equipo de medida y ofrecer los datos en alg√ļn
    formato propio o, al menos, conocido.
  2. En algunos casos, hacer post-proceso de dichos datos y obtener productos
    cartogr√°ficos finales.

Sin embargo, como en el ecosistema de los GIS, existe un software privativo que monopoliza casi todo el mercado del software para realizar los trabajos de post-proceso. No voy a dar el nombre de ninguno de estos paquetes porque el objetivo de esta entrada es justamente la contraria, exponer las posibilidades existentes para utilizar software libre a la hora de trabajar con datos LiDAR.

Lamentablemente, para extraer los datos de la mayoría de los equipos actuales no hay alternativas y necesitamos utilizar obligatoriamente software privativo. Comprar la licencia no es el verdadero problema, porque si tenemos dinero para comprar un equipo que cuesta varias decenas de miles de euros es que también podemos comprar al menos una licencia por un par de miles. Lo peor es lo que verdaderamente implica el software privativo, es decir, que no eres libre de hacer lo que quieras con producto adquirido. Sin embargo, si alguien quiere hacerse un telémetro láser, puede utilizar el módulo para la captura de datos de las librerías PCL, ya que soporta algunos dispositivos conocidos. Pero sobre la librería PCL y otras más hablaremos más datelladamente en otra entrada. Además, en la mayoría de los casos, cuando podamos acceder a datos LiDAR, estos estarán ya en un fomato conocido. Lo lógico es que obtengamos los datos en el formato LAS que es el formato estándar que define la ASPRS (American Society for Photogrammetry and Remote Sensing).

Hay varias librer√≠as libres para la lectura y escritura de archivos en este formato LAS. La decana de ellas es LASlib. Est√° desarrollada y mantenida por Martin Isenburg y est√° escrita en C++. Est√° licenciada bajo LGPL, por lo que se puede utilizar en otros paquetes, aunque sean privativos. Al descargar estas librer√≠as y compilarlas genera unas herramientas llamadas LAStools que sirven para la gesti√≥n de archivos LAS (las2las, lasmerge), para creaci√≥n de LAS a partir de archivos de texto (txt2las) o archivos de texto a partir de LAS (las2txt), para dar informaci√≥n sobre archivos (lasinfo, lasprecision, lasdiff) o para crear un √≠ndice espacial de los puntos dentro de los archivos (lasindex). En las √ļltimas versiones, tambi√©n se crea la herramienta laszip que sirve para comprimir archivo LAS. El formato de salida es LAZ y el archivo de comprimido ocupa SOLO entre el 7% y 20% del tama√Īo del archivo original. A todo esto hay que a√Īadir que con la librer√≠a LASlib tambi√©n se distribuye otra librer√≠a para leer y escribir formatos LAZ, tambi√©n en C++ y tambi√©n con licencia LGPL. Para los usuarios de windows, adem√°s, est√°n disponibles otras herramientas precompiladas, de las cuales no voy a dar detalles porque no son libres, sino que son shareware.

De la librería LASlib se hizo un fork y nació la librería libLAS, que está bajo el auspicio de OSGeo. También escrita en C++ pero incorporan bindings para una gran cantidad de lenguajes de programación. También incorpora herramientas para la gestión de archivos en formato LAS y texto, que se llaman de igual manera que las LAStools, aunque la utilización de los comandos pueda variar. Las diferencias que existen actualmente entre ambas librerías se pueden encontrar aquí.

La librer√≠a SPDLib es bastante reciente. Tanto es as√≠ que empez√≥ a desarrollarse en el verano de 2011. El formato est√°ndar que utiliza para trabajar con datos LiDAR se denomina precisamente SPD (Sorted Pulse Data) y est√° basado en el formato HDF. Es un formato de datos ordenados e indexado que est√° optimizado para el acceso r√°pido a los datos y en el que es posible trabajar con toda la se√Īal del pulso de retorno, en ingl√©s full waveform, no s√≥lo con ecos discretos, como hace las librer√≠as anteriores. Y precisamente √©sta es una de sus grandes virtudes. Por lo dem√°s, est√° en consonancia con las librer√≠as ya vistas. Est√° desarrollada en C++, con bindings para python e IDL, y con licencia GPL. Al compilar se crean una serie de herramientas para la gesti√≥n, manipulaci√≥n e informaci√≥n de archivos SPD, as√≠ como una herramienta imprescindible para transformar entre formatos LAS y SPD. Otra de las ventajas que presenta es que incorpora utilidades para generar modelos digitales en cualquier formato soportado por gdal, y para aplicaciones forestales. ¬°Todas ellas libres! Sin embargo, al ser desarrollada principalmente por una sola persona y ser tan reciente, uno de los problemas que presenta es la escasa y, en algunos casos, inexacta documentaci√≥n.

Sin duda, existen más librerías capaces de trabajar con datos LiDAR pero con otros propósitos distintos a los que hemos cubierto aquí. Las intentaremos tratar en otras entradas. Manteneos atentos.

PD: Mientras escribo estas líneas me llega un tuit en el que hablan de otra libreria
en python para leer y escribir datos LiDAR en formatos LAS. Se llaman laspy ūüôā

OpenLayers Cookbook

OpenLayers CookBook

I’ve been honoured to help Antonio to produce this book as a technical reviewer so I owe him at least a short note here (well in fact I promised him to do it!). Having the opportunity to review the book itself has been a great pleasure and an enriching experience, always with the help (and patience) of the Packt people over eight weeks of work. There are some good reviews of the book¬†here¬†and¬†here¬†so I won’t repeat what’s so well described there, take a look on them to see the contents covered and their (good) feedback on the book.

If you know some HTML and JavaScript and really want to get introduced on how to build geospatial web applications, I vividly encourage you to get this book and go beyond the basics with meaningful recipes that step by step, showcase the most important parts of the OpenLayers API.

In my experience, one can start from scratch with the examples¬†but there are many concepts that is better to understand well, like the difference between formats, protocols and strategies (that I finally understood back in 2009, thanks to this¬†great presentation by Tim Schaub). That and more is well covered through examples, really easy to follow and reproduce.¬†Thus I think it’s a good investment to take a book and let someone to tell you how the thing works, isn’t it?

Ah, and as Alper has written on his review:

Please buy the book to support writer instead of downloading the illegal copies. This will courage more people to write this kind of books to support Open Source projects like OpenLayers.

Instalando MapProxy en windows, paso a paso

La semana pasada tuve el placer de formar parte de los formadores de los voluntarios de EUROSHA, un grupo de 25 j√≥venes destinados a levantar cartograf√≠a en diversos pa√≠ses de √Āfrica, como parte de las actividades del HOT. Uno de los problemas a los que se enfrentan estos voluntarios es una conexi√≥n a internet no muy fiable.

Es perfectamente posible editar datos de OSM offline (guardando los datos a fichero, editando, y resolviendo conflictos de versiones a posteriori), pero lo que no se puede hacer es consultar cartografía de fondo para comparar. Había que hacer algo al respecto. Y la solución fue instalar MapProxy, que permite tomar imágenes ráster de varias fuentes y servirlas como WMS, en local. En un portátil con linux (y python, python-pil y python-pip), instalarlo y probar la configuración por defecto fue una cuestión de minutos.

Ahora bien, los ordenadores que el HOT va a desplegar en √Āfrica van con windows, principalmente por no disponer del tiempo suficiente para hacer una instalaci√≥n completa con las herramientas adecuadas para la situaci√≥n. Improvisemos pues, e instalemos MapProxy tal y como sugiere el manual

We advise you to install MapProxy into a virtual Python environment.

Bueno, pues no hagáis esto. Al instalar python desde cero, lo más probable es que os encontréis con problemas a la hora de instalar las librerías necesarias, en concreto PIL (Python Imaging Library). La manera sencilla de instalar Python para hacer funcionar MapProxy encima es OSGeo4W. Así que descargamos el instalador, elegimos una instalación avanzada, y nos aseguramos de que al menos los paquetes para python y python-pil se van a instalar:

El siguiente paso es descargarse y ejecutarlo dentro de una shell de OSGeo4W como administrador:

En esa misma consola, ejecutamos un easy_install mapproxy, y justo después un easy_install pyproj:

En este punto, los ejecutables de MapProxy ya est√°n instalados. Lo podemos comprobar ejecutando mapproxy-util:

Ahora bien, MapProxy es in√ļtil sin un fichero de configuraci√≥n que le diga qu√© servicios tiene que cachear. As√≠ que hacemos copia-pega de una configuraci√≥n de MapProxy para OpenStreetMap, guardamos el fichero resultante como (por ejemplo) C:\OSGeo4W\mapproxy.yaml, y lanzamos mapproxy-util:

¡Et voilà! Nuestro MapProxy está funcionando y respondiendo a peticiones desde localhost:8080, cacheando tiles de OSM para convertirlas en un servicio WMS:

El resto de opciones se pueden consultar en el manual de MapProxy, pero hay unas cuantas cosas a tener en cuenta:

  • MapProxy siempre debe ejecutarse dentro del entorno de OSGeo4W.
  • … lo que quiere decir que si queremos que se ejecute autom√°ticamente, se puede hacer un .bat haciendo copia-pega de C:\OSGeo4W\osgeo4w.bat, y modificando el comando que se lanza en la √ļltima l√≠nea de ese script.
  • La utilidad para inicializar o refrescar la cach√©, mapproxy-seed.exe, ha de ejecutarse tambi√©n dentro del entorno de OSGeo4W.
  • Los datos cacheados se almacenan en el directorio que se especifique en el fichero de configuraci√≥n, y es relativo a la ruta donde se lanza mapproxy.

¬°Hazme un mapa de Espa√Īa! … ¬°y bien r√°pido!

Ostras como se ponen los jefes de vez en cuando y claro, cuando vas y estiras del hilo te enteras que sobre el supuesto mapa de Espa√Īa van a pintar con chorricientos colores y necesitan que se vea bien a cualquier escala y que tenga el entramado de las calles, pero tambi√©n salgan las provincias y puedan hacer zoom y pintar sobre las provincias… ¬Ņno os suena?, jop√© que suerte, a mi me pasa a menudo…

As√≠ que en esta entrada vamos a intentar dar una soluci√≥n planteando un mapa desaturado para poder pintar en colorines sobre √©l, el mapa tendr√° or√≠genes de datos f√°ciles de conseguir – y libres – y utilizar√° un stack de software libre para construirlo… as√≠ que tendr√©is un mapa r√°pido [ish], f√°cil y bonito [ish]…

Continue reading

VI Jornadas de SIG Libre de Girona, Marzo 2012

Siempre supone un motivo de ALEGR√ćA -as√≠, en may√ļsculas- lanzar el anuncio de la celebraci√≥n de las Jornadas de SIG Libre de Girona. Y resulta un motivo de alegr√≠a y de felicidad por dos motivos b√°sicos el primero de los cuales, es porqu√© se trata de un evento, el de las jornadas de SIG Libre, que nos apetece organizar, un proyecto al que queremos sin condici√≥n alguna. En segundo lugar, porqu√© significa que continuamos en la brecha, muy a pesar de la crisis que amenaza y atenaza al sector en los √ļltimos tiempos. As√≠ que es natural que nos sintamos doblemente orgullosos de las jornadas de Girona que, como ya viene siendo costumbre, contin√ļan ejerciendo su funci√≥n de escaparate y de altavoz de las soluciones libres para SIG.

Como en cada nueva edición, os presentamos un programa de ponencias plenarias que esperamos sinceramente que os resulten de interés. Las charlas plenarias de las Jornadas, intentan abarcar temas y aspectos que si bien, en ocasiones no son meramente geográficos, sí pueden conectar con la naturaleza de los SIG y de los datos geográficos de un modo u otro. Se trata de ampliar puntos de vista, de desplazar ligeramente el foco sobre temas que van más allá de los SIG, que son tangenciales o extrapolables a nuestro sector o campo de aplicación, con el ánimo de ampliar el abanico de visiones acerca de todo aquello que sea libre.

As√≠ pues, es tiempo de reencontrarse, de compartir y de continuar aprendiendo, de reconocer viejos gestos y caras conocidas, y descubrir nuevas experiencias, proyectos, y oportunidades de colaboraci√≥n y de negocio. Y es que las Jornadas, en esencia, son esto, un escenario en el cual mostrar el “c√≥mo” y compartir el “qu√©”. Son tiempos complicados, y es tiempo para la innovaci√≥n y la inversi√≥n en las soluciones libres, tiempo para realizar la apuesta definitiva.

Un a√Īo m√°s, una edici√≥n m√°s, os emplazamos a que visit√©is Girona y que particip√©is de forma activa en la mejora constante de este evento. Est√°is en casa, y os esperamos:

Comité Organizador Local.

OSM + ImpOSM + TileMill

Hac√≠a tiempo que no le dedicaba un ratillo a los temas geofrikis, no por falta de ganas, sino porque soy disperso, muy muy muy disperso, pero se cruz√≥ la posibilidad de mezclar cartograf√≠a y juegos de rol y …

Allí que medio liando a otro, que no hace falta que le líe nadie, llamado @RealIvanSanchez, preparamos una versión online del mapa de Cunia, la ciudad sin alma del juego de rol Rol Negro de la editorial Ediciones Sombra.

Y por aqu√≠ os voy a comentar el stack que usamos para la haza√Īa…

Continue reading