lunes, 10 de febrero de 2014

Geofier - servicio de capas GeoJSON desde tablas alfanuméricas

Esta entrada es para anunciar el lanzamiento de Geofier, un pequeño software PHP para servidor que sirve capas GeoJSON a partir de bases de datos no espaciales (otra manera de definirlo podría ser como un componente "db to GeoJSON").

Geofier, es un software muy sencillo para resolver de una forma simple y elegante un problema habitual en muchas organizaciones: aprovechar datos espaciales que han sido almacenados como columnas LATITUD/LONGITUD o X/Y durante años y sobre los que giran aplicaciones de negocio dificil de modificar. En estos casos, Geofier se convierte en una solución genial ya que ofrece una API REST flexible que es capaz de generar dinamicamente capas GeoJSON con los datos de estas bases de datos. Estos datos ahora serían perfectamente consumibles en OpenLayers, Leaflet o QGIS, sin necesidad de exportaciones de ningún tipo, es decir, ya se podrían ver en mapas.

Para ver Geofier en funcionamiento, hay disponible una DEMO con datos públicos de una tabla de aforos de la IDE de Augas de Galicia y con una interfaz en la que se pueden llamar a los recursos de la API a través de botones: ver todos, filtrar por ID o filtrar por otro atributo. Los resultados se pueden ven en un mapa y en texto.

Geofier Demo


Al ser tan ligero y fácil de configurar es una pieza de software óptimo para incorporar en cualquier servidor.

Pero será el Jueves, 27 de marzo de 2014 en las 8as Jornadas de SIG Libre de Girona donde se presentará más en detalle este software... ¡¡Qué mejor lugar!!

jueves, 29 de noviembre de 2012

Migrando de Mapserver 5.6 a 6.2

Al pasar mi primer proyecto de UMN Mapserver 5.6 a mapserver 6.2 me encontré con los varios problemas. Lo mejor para estos casos es echar un vistazo a la guía de migración donde explican estas y otras cosas.

Ahí van los problemas que me surgieron:


Problemas con la definición de servicios OGC

msWMSDispatch(): WMS server error. WMS request not enabled. Check wms/ows_enable_request settings.

Para ello tuve que introducir lo siguiente en la sección MAP::WEB::METADATA:

"wms_enable_request"   "*"

Driver JPEG

loadOutputFormat(): General error message. OUTPUTFORMAT clause references driver GD/JPEG, but this driver isn't configured.

Tuve que poner el DRIVER "AGG/JPEG" en el .map del siguiente modo:


OUTPUTFORMAT
    NAME "jpeg"
    MIMETYPE "image/jpeg"
    DRIVER "AGG/JPEG"  ###Antes DRIVER "GD/JPEG"
    EXTENSION "jpg"
    IMAGEMODE "RGB"
    TRANSPARENT FALSE
    FORMATOPTION "QUALITY=70"
  END

Estilo de etiquetas

Como bien explican en la documentación BACKGROUNDCOLOR ha sido deprecated. El MAP arrojaba el siguiente error:

loadLabel(): Unknown identifier. Parsing error near (BACKGROUNDCOLOR):(line 182)

Fue necesario modificar el código:


NAME "my_capa"
      LABEL
        ANGLE 0.000000
        ANTIALIAS TRUE
        FONT "arial-bold"
        MAXSIZE 256
        MINSIZE 4
        SIZE 8
        TYPE TRUETYPE
        BACKGROUNDCOLOR 245 245 245
        BUFFER 0
        COLOR 204 16 16
        FORCE TRUE
        MINDISTANCE -1
        MINFEATURESIZE -1
        OFFSET 0 0
        PARTIALS TRUE
        POSITION CC
      END
      STYLE
        ANGLE 360
        OUTLINECOLOR 255 0 0
        SYMBOL 0
        WIDTH 1
      END
    END

a algo tipo:


NAME "my_capa"
  LABEL
  ANGLE 0.000000
        ANTIALIAS TRUE
        FONT "arial-bold"
        MAXSIZE 256
        MINSIZE 4
        SIZE 8
        TYPE TRUETYPE
        ## BACKGROUNDCOLOR 245 245 245
        BUFFER 0
        COLOR 204 16 16
        FORCE TRUE
        MINDISTANCE -1
        MINFEATURESIZE -1
        OFFSET 0 0
        PARTIALS TRUE
        POSITION CC
      END
  STYLE
        GEOMTRANSFORM 'labelpoly'
        COLOR 245 245 245
  END

END

Clonado en MapScript

Por un lado, tuve que añadir a "/etc/php5/cli/php.ini" las lineas:
extension_dir = "/usr/lib/php5/20090626/"
extension="php_mapscript.so"
Además ahora los métodos "clone()" han desaparecido por lo que tuve que adaptar mi código PHP de mapscript:

$orig_ms = new MapObj($INPUT_MAPFILE);
$ms = clone $orig_ms;

Problemas con Symbols

Ojo, porque parece que algunos estilos de símbolos han cambiado también y quizás es necesario cambiar el fichero symbols.sym
loadSymbol(): Unknown identifier. Parsing error near (STYLE):(line 491)
Por lo demás todo perfecto!!

lunes, 4 de junio de 2012

Problemas de memoria... :)

Para los que están familiarizados con el mensaje  "java.lang.OutOfMemoryError: Java heap space"... Por si sirve de consuelo en los SIG privativos te puedes encontrar con este otro:


Pagar por licencias y por el soporte no te libra de que productos ESRI  den errores de "Out of memory" y  te quedes sin poder manejar tu información... :-]
Con otro riesgo, si usas sus formatos privativos recomendados, no los podrás recuperar con ningún otro software...



ACTUALIZACIÓN:
Y también tienen el equivalente a "Error grave de la aplicación", en este caso, "ArcGIS Desktop jas encountered a serious application error":


martes, 22 de mayo de 2012

Problemas al visualizar un WMS de mapserver en monitores grandes

Tras crear un servicio con "UMN Mapserver" todo parecía funcionar bien, pero en determinados ordenadores (concretamente en pantallas grandes) no se veían las capas del servicio.

Analizando lo que devolvía el servicio en esos casos resultó que:
 
msWMSLoadGetMapParams(): WMS server error. Image size out of range, WIDTH and HEIGHT must be between 1 and 2048 pixels.

Y la solución la encontré rápidamente en las listas de correo del proyecto y en la documentación de MAP.

Simplemente sobreescribir la variable MAXSIZE en el .map ya que por defecto está fijada en 2048.

ACTUALIZACIÓN: Ojo, porque el parametro MAXSIZE es ignorado si se utiliza mapscript para generar el fichero ".map" al menos en la versión 5.4.x. Esto obliga a volver a introducirlo a mano o actualizar a versiones superiores.

domingo, 11 de septiembre de 2011

Pasar Shapefiles a KML

Pasar Shapefiles a KML en Galicia con Software libre es muy fácil. No es necesario un shp2kml ni usar ningún SIG de escritorio.

Hay que tener GDAL/OGR instalado y ejecutar lo siguiente:

ogr2ogr -f "KML" -t_srs "epsg:900913" -s_srs "epsg:23029"  result.kml input.shp
Pero, si lanza el siguiente error:
ERROR 6: Unable to load PROJ.4 library (libproj.so), creation of OGRCoordinateTransformation failed.
Failed to create coordinate transformation between the following coordinate systems.  
This may be because they are not transformable, or 
because projection services (PROJ.4 DLL/.so) could not be loaded.
En mi caso era que tenía varios paquetes con PROJ, pero tuve que instalar:
 sudo apt-get install proj
Con esto ya pude transformar de forma masiva SHPs a KML.

jueves, 28 de abril de 2011

Las Jornadas de SIG Libre de Girona

¡Este año han sido las quintas!

Una cita imprescindible a la que los geo-libres no deberíamos perdernos. No tengo más que elogios y agradecimientos a los amigos de Girona.

Además de la calidad de las ponencias, el ambiente, la magnífica organización, los asistentes, pasilleos, etc. este año nos han regalado un super video:

Jornadas de SIG Libre. Marzo, Girona from SIGTE - Universitat de Girona on Vimeo.



Espero poder estar en el 2012 y seguir disfrutando de estas Jornadas por sexto año consecutivo.

gvSIG-1.11 una versión especial

La versión gvSIG-1.11 es una release especial de gvSIG. Pero a nivel de usuario no hay grandes funcionalidades nuevas, ni se aprecian cambios en la interfaz... Entonces, ¿por qué es una versión de gvSIG especial respecto a todas las que ha habido hasta ahora?

A mi modo de ver, esta versión gvSIG-1.11 está marcada por el comienzo de una fase, sobre todo en la apertura de la parte de comunidad técnica.

Los que llevamos siguiendo el proyecto desde cerca desde hace años vemos una gran progresión y logros que se van sucediendo de manera sucesiva e incremental. En este momento, tras ir incrementando la masa de usuarios, de empresas desarrollando actividad alrededor del producto, y llevar a cabo actividades como seminarios de desarrollo, llega el paso de que se está formando una comunidad de desarrollo.

La participación a nivel técnico de gente externa tiene pros y contras. Por un lado, la fuerza del desarrollo en comunidad es una de las potencialidades más importantes del FLOSS. Sin embargo, su coordinación y su encaje dentro de una estructura profesional como la que tiene el proyecto gvSIG es un reto. Un reto al que no tienen que enfrentarse otros proyectos menos profesionalizados. En gvSIG se está haciendo un gran esfuerzo para definir procesos que permitar mejorar los procedimientos de colaboración, cómo reportar bugs, enviar features request, mensajes técnicos en las listas de desarrollo, aceptación y revisión de parches, reglas para hacer oficial desarrollos externos, etc.

Los pasos en la democratización y participación de la comunidad son innumerables. Un ejemplo, es el Comité de Dirección Técnica (TSC) que cuenta con un nuevo impulso con un gran repunte de participación y nuevos miembros. La potenciación del inglés es otra apuesta por seguir fomentando la participación de más colaboradores internacionales y se han tomado también medidas para mejorar este aspecto dentro del proyecto gvSIG. Además se cuenta con una CLA que protege legalmente los desarrollos que afectan al núcleo del software.

Como resultado de esta nueva etapa, por ejemplo, se han integrado numerosos parches realizados en los code-sprints como realizados en los drivers de acceso a bases de datos PostGIS. Además, otras funcionalidades desarrolladas por equipos externos al núcleo de gvSIG también están incluídas en esta distribución. Puede consultarse en los links las mejoras y nuevas funcionalidades, pero me gustaría destacar el Add-on Manager que permitirá descargar extensiones y actualizaciones cómodamente desde gvSIG.

En este post de gvSIG se habla también de esta versión 1.11 y de cómo se está materializando esta forma de trabajar en comunidad.

¡Seguiremos participando en esa línea!