Thursday, December 08, 2016

Cloud PostGIS overview

Since not long ago I have been wondering about investigating a little bit the different cloud  PostgreSQL/PostGIS database providers (DBaaS) on the Internet.

Besides the interest for self-learning (say necesity), I was interested in the possibility of sharing test datasets for teaching/practicing purposes aimed at the students attending the geodatabase subject of the universitary master in information systems (MUSIGT) of the Public University of Navarre (UPNa).

My previous experience with HEROKU had been interesting but also limited to the provision of PostgreSQL instances, that is, without the PostGIS extension which can only be activated on the paying production plans, something off the limits of the current prospection.

In the past months I've been identifying several web pages that could be candidates to be considered and among them I found this entry in the OSGEO wiki which is specifically dedicated to this subject.

Among the different providers the one I have reviewed first is the Amazon RDS for PostgreSQL. All the Amazon's tech appeal in the form of a 12 month free trying period (if you don't overcome the level of service limits) will you let to test this service along others from the AWS platform... The thing is that I was not willing to acquire any type of commitment, not now nor after 12 months, and so, not without a bit of pity, I declined the proposal.

Next, I had a look to aiven, whose motto your database in the cloud, is pretty clarifying of where they are putting the focus on and of their specialization area. It looks good, with a variety of database paradigms represented by products as PosgreSQL (popular extensions included, among them PostGIS), Redis, InfluxDB, Apache Kafka, etc... deployed on the main platform service providers around the world (Google, Azure, DigitalOcean, UpCloud y Amazon AWS).

In this case there is not any free plan but you can take advantage of a 10$ bonus that you could spent in the more affordable plan called Hobbyist (1CPU, 1GB, 8GB storage, with a fee of aprox. 0.026 $/h, 19$ monthly estimate). Despite you don't have to give your credit card to have the test drive, I've left it aside by the moment for the already stated reasons.

There is another one that looks great: AcuGIS. I have nothing to say apart from the fact that I remains now in a high position of my task list. Maybe next time.

Last to be mentioned in this post and the one that I´ve been testing is QGIS Cloud.

QGIS Cloud

The name might suggest some kind of direct relation with the QGIS project but as far as I know this is an independent solution from the second. Leaving apart this little detail I must say that this is a solution that works and I have not found any problems during the test.

This provider offers a means of publishing your maps (QGIS made maps) through a web mapping application in the cloud. It also includes a data hosting service with PostgreSQL/PostGIS (preinstalled) databases (note that all the data used in the published maps should be first uploaded to this storage). The key aspect of this solution relies on the way all the map and data managament is done, based on the use of a QGIS plugin (that is, I think, the main explanation for the name of this product).

Once we have signed in the products page, and after installing the plugin we will be able to upload our maps and data through the plugin.

QGIS Cloud plugin for QGIS
As shown in the image, once logged we will be able to see the list of your DB instances, create new instances, know the used storage from the total available, upload  local data, manage maps, etc. Signing-in, installation and use are all quite easy and very clearly explained in the Quickstart page.

Along your data you will also have an instance of a OSM database ready to use in your maps.

At this moment two plans are offered: Free and Pro. With the Free plan you will be able to publish an unlimited number of maps (that will be publicly accessible to the world). Regarding to data storage: up to 5 PostGIS 2.0 DB instances, with a maximum total capacity of 50 MB and up to 10 concurrent DB connections. That is, a good set of features that are enough for experimental purposes.

QGIS Cloud as DBaaS

Perhaps we are not interested in the map publishing capacity and we would only like to use this service as a Cloud DB Service provider. This is perfectly possible. The only thing you will need to know is the DB connection details and use them from your favorite tool or application as you can read in this FAQ: PgAdmin, psql, QGIS... or any software that is able to connect to a PostgreSQL server.

We can find out the connection details from plugin's panel which shows the list of our database instances when you force the tooltip to appear (holding the mouse over each database name in the list).

It's worth to mention that when accessing from PgAdmin you  will have to specify the database name in the maintenance database parameter. It is also important to note thar in all cases SSL is required in the connection configuration. Have a look to this FAQ with examples.

Finally, I would like to say that I will not dare to evaluate the service's quality level as I can't manage all the aspects involved: the possible limitations of the Free plan or my own internet access. But I am sure that it will fulfill my current requirements.

Monday, December 05, 2016

PostGIS en la nuble

Hace tiempo que tenía apuntado investigar un poco sobre proveedores de servicios de bases de datos (DBaaS) PostgreSQL/PostGIS en la nube (o en el aire según cuño del filósofo Javier Echeverría Ezponda a quien reciéntemente tuvimos la oportunidad de disfrutar en el ciclo Diálogos mano a mano con el investigador de la Universidad Púbica de Navarra Humberto Bustince Sola).

Aparte del interés (necesidad) por aprender una solución de este tipo me serviría  para colgar juegos de datos de prueba para los alumnos de la asignatura de bases de datos geográficas (máster MUSIGT de la Universidad Pública de Navarra).

Mi experiencia previa con HEROKU había sido interesante pero se limitaba a la provisión de instancias de PostgreSQL, es decir, sin poder disfrutar de la extensión PostGIS al estar ésta última únicamente disponible en los planes (suscripciones) de producción, es decir, de pago, fuera del alcance de la prospección.

Llevo un tiempo identificando una serie de páginas que podrían ser interesantes entre las que cabe destacar la página de la wiki de OSGEO específicamente dedicada a este tema y que recoge las principales opciones existentes.

El primero de los dos proveedores que he revisado es Amazon RDS para PostgreSQL. Todo el tech appeal de Amazon en forma de una prueba gratuita de 12 meses (siempre que no se superen ciertos niveles de servicio) en la que poder probar este servicio y otros de la plataforma AWS... Como no me apetecía adquirir ningún compromiso, aunque éste fuese a 12 meses vista, con cierta pena, he declinado el ofrecimiento.
El siguiente proveedor que he estado consultando es aiven, cuyo lema your database in the cloud, es bastante clarificador de su enfoque y especialziación. Pinta muy bien, ofrece distintos servicios de bases de datos de los distintos paradigmas existentes, tales como PostgreSQL (incluidas las extensiones más populares, entre ellas PostGIS), Redis, InfluxDB, Apache Kafka, etc.., desplegados sobre distintos proveedores de servicios (Google, Azure, DigitalOcean, UpCloud y Amazon AWS).

En este caso no hay suscripción gratuita o de prueba pero sí un bono de 10$ de prueba que podríamos aplicar al plan más económico Hobbyist (1CPU, 1GB, 8GB de almacenamiento, con una tarifa rondando los 0.026 $/h, estimado mensual de 19$). Aunque para probar no piden "Visa", lo aparco.

Otro que también pinta muy bien es AcuGIS que por el momento pasa a engordar mi lista de tareas pendientes.

El último que voy a mencionar en este post y que he probado es QGIS Cloud. Así es, el nombre despista un poco, y la verdad que se podría decir que parece un poco oportunista...

QGIS Cloud

... y aun a riesgo de equivocarme yo diría que efectivamente lo es ya que no encuentro ninguna relación entre este proveedor y el proyecto QGIS. Dejando este detalle a un lado es una solución que funciona y he podido probar sin ningún problema.

El sistema ofrece un mecanismo para almacenar datos en la nube, así como para publicar mapas online que utilizan dichos datos (todos los datos de nuestros mapas que no sean servicios remotos deberemos subirlos al almacén PostGIS). La particularidad del sistema radica en el modo que se gestionan las operaciones, que no es de otra manera que a través de un plugin de QGIS (y entiendo que de ahí viene el nombre).

Una vez nos hayamos registrado en su página web y hayamos instalado el plugin en QGIS podremos subir nuestros mapas y datos mediante el plugin.

Plugin QGIS Cloud para QGIS
Como puede apreciarse en la imagen, una vez nos hemos autenticado podemos ver las BBDD que tenemos creadas, el espacio consumido, crear nuevas instancias de BD, subir datos, gestionar mapas, etc. El proceso de alta e instalación y uso es muy sencillo y está perfectamente explicado en el Quickstart. Mientras escribía este post he visto que hay un pequeño tutorial reciente en mappingGIS que explica lo mismo de manera más somera.

Actualmente se ofrecen dos planes Free y Pro. El plan Free permite la publicación ilimitada de mapas (públicos). En lo relativo a almacenamiento de datos: hasta 5 instancias de bases de datos PostGIS 2.0, con un espacio máximo total de 50MB y un número máximo de 10 conexiones concurrentes por base de datos. Lo cual, sobra decirlo, lo hace muy interesante para experimentar.

QGIS Cloud como DBaaS

Es posible, como sería mi caso en este momento, que no estemos interesados en publicar mapas y que lo único que nos interese es utilizar el servicio de bases de datos en la nube. Esto es perfectamente posible. Para ello basta con conocer los detalles de la conexión a nuestras bases de datos y utilizar la herramienta que deseemos tal y como se explica en las FAQ: PgAdmin, psql, QGIS... o cualquier software capaz de conectarse a un servidor PostgreSQL.

Los datos de conexión los podremos obtener del plugin, donde se muestra el nombre de la BD en el listado, que a su vez coincide con el nombre de usuario de la conexión. La contraseña la podremos ver en el tooltip que se muestra al posicionar el cursor sobre cada BD en el listado (algo incómodo pero no imposible). El host y puerto, los tenemos también en el tooltip y en las FAQ, así como un par de pantallazos de ejemplo para conectar desde QGIS y PgAdmin (debemos explicitar la instancia de BD en la conexión). En todos los casos es requerido el uso de SSL en la conexión.

Para terminar quiero comentar que no estoy en disposición de hacer valoraciones de calidad/nivel de servicio al no poder controlar todas las variables: limitaciones del plan gratuito, la velocidad de mi acceso a internet, etc., pero creo que para los fines que me proponía servirá. Espero que también para quien haya tenido a bien tragarse este ladrillo. ;)

Sunday, April 03, 2016

Jugando con una Raspberry Pi 3

La primera maquinita que tuve era un juego de basket. Los "contrarios": cinco bombillas rojas que se movían por posiciones fijas de la pantalla. Mi jugador, otra luz roja algo más intensa. Botones: arriba, izquierda, abajo, derecha y lanzar a canasta. Todos flipábamos.

Le siguieron las Nintendo de LCD: Parachutes, Donkey Kong, Snoopy ;).

El reloj con calculadora Casio con juego de "matar números" incorporado se codiciaba bastante entre mis compañeros de clase.

MSX, MSX2, PCs dotados de "tarjetas 3D", Nintendos varias, la Wii y PS3 (con moderación ;).

Algo de Apple, pero más de Android... Rooteando hace poco creí quedarme sin movil, una cosa llevó a la otra y formateé todo, ¿está seguro?, por supuesto... ) finalmente "fui capaz" (internet gracias) de volver a dejarlo como nuevo.

Y así "hasta hoy". Andaba dudando entre comprar un dispositivo Android TV (motivado por la obsolescencia programada de la SmartTV), la verdad es que son una maravilla. Lo he podido comprobar porque alguien cercano tiene una y me ha tocado meter unas cuantas horas. Y en ésas estábamos cuando me salió al paso la Raspberry (entre esporádicos Arduinos ).

Y claro, frente a este universo de posibilidades la opción cerrada del Android TV no era rival y en un momento de debilidad me lancé a por un Kit de iniciación que adquirí en http://www.raspipc.es (todo correcto). ¡Y con la buena suerte de que el modelo 3 acababa de salir del al mercado!

Como puede verse en la siguiente imagen, tenemos toda una computadora por 35 € (a eso hay que añadirle los cables HDMI, alimentador, y la caja, si queremos ya que es posible que ya tengamos de todo y podamos reciclar). Excepcional la iniciativa de la fundación Raspberry tanto: proyectos educacionales, publicaciones, distribuciones de software, precio, etc, etc.

En lo que ocupa una tarjeta de crédito tenemos 4 x USB, 1 x LAN, un jack de vídeo compuesto y audio, conexión HDMI, conexión para alimentación Micro USB y un slot para una tarjeta Micro SD (y el resto de hardware que se describe en la imagen...). Ah! y Wifi y Bluetooth incorporados.

La Raspberry "será" aquello que decidamos meterle en la Micro SD. Las opciones que tenemos se podrían clasificar en dos:
  • Sistemas Home Theater en distribuciones de Linux "out of the box" con el software de código abierto (impresionante) Kodi.
  • Sistemas operativos Linux "convencionales", como el Raspbian (Debian for Raspberry) que estoy utilizando en este momento para escribir esta entrada.
Todo ello disponible en la web de la Raspberry.


Cosas que he hecho hasta el momento

Instalarle "de todo"

He probado varios sistemas operativos. Para ello es recomendable tener más de una tarjeta Micro SD conforme vamos decidiendo con qué sistema nos quedaremos.

Sistemas Media Center: tanto OSMC como OpenElec. Finalmente (hasta que cambie) he optado por el segundo, instalándolo en una vieja tarjeta Micro SD de 1GB que tenía por casa. Como ya he comentado, en ambos casos es Kodi el software que les da vida y que merece comentario a parte (quizá en otra entrada).

Sistemas operativos de propósito general:
  • Raspbian Jessie: basado en Debian Jessie, es la distribución oficial de la fundación Raspberry. Viene cargada de software de propósito general (Libre office) y orientado al aprendizaje de lenguajes de programación para todos los niveles. Muy interesante para los más pequeños: Scratch (del que ya somos conocedores en la familia) y Sonic Pi. Es el que estoy usando en este momento.
  • Ubuntu mate: pues eso, muy chulo pero con algunos problemillas para instalar ciertos paquetes de software.
  • Raspex: ultra ligero y ultra rápido. Finalmente lo descarté porque tuve algunos problemillas tratando de instalar Kodi. No obstante me puse en contacto con el desarrollador independiente que lo distribuye y en menos de una semana ha sacado una nueva versión remozada y con Kodi preinstalado, ;): http://raspex.exton.se. Creo que le daré otra oportunidad.
  • Raspbian Jessie Lite: versión super reducida, sin "ventanas", para el día que espero que pueda hacer algún pinito en el área de la domótica.

Media Center

Con OpenElec/Kodi, conectado a la tele por HDMI y alimentado mediante un cable USB conectado a la misma tele!!! Ah! y manejado con el mando a distancia del televisor! Y pegado a la espalda de la tele con un "velcro" adhesivo, ;).

El tema de Kodi da para bastante más, así que lo dejaremos para otro día.

Computadora de escritorio


Con Raspbian. Monitor HDMI, teclado y ratón USB... y listo. Y como muestra, esta entrada del blog.

Como soy forofo de Firefox he instalado sin problema Iceweasel que es la adaptación de Firefox para las distribuciones Debian.

He configurado e instalado alguna cosilla más (apt-get y a funcionar).


Lo dejamos aquí, por el momento, seguiremos informando (o no). Espero que os haya gustado. Cualquier comentario o idea será muy bien recibido.

PD: aquí os dejo este enlace para seguir flipando https://www.raspberrypi.org/blog/the-little-computer-that-could.

Saturday, March 07, 2015

Business Analytics con componente espacial

De manera general, en el mundo de la minería y análisis de datos (Business Intelligence, Business Analytics) se suele trabajar con colecciones de “individuos” sobre los que se tienen distintas observaciones (o variables). Por ejemplo, en un sistema de salud los individuos serían los pacientes y las variables todos los datos que sobre cada paciente sean relevantes para su historia clínica o más en especial la prevención o tratamiento de una determinada enfermedad. Con este tipo de técnicas de BI se pueden realizar clasificaciones (clusters), simulaciones, predecir una determinada variable (recaída en una determinada enfermedad, etc.) y tomar decisiones (prevención, etc.).

Análisis espacial
Cuando introducimos en el análisis la componente “espacial”, el “hecho” espacial, la localización de un fenómeno, pasa a convertirse en el “individuo” de la colección, ya que dicha localización es el elemento que permite que las distintas variables que se tengan sobre ella converjan sobre un mismo punto que permite relacionarlas.

Para ello, en primer lugar, se debe definir un “terreno de juego” común y conocido para todas las variables que se desean relacionar (correspondiente a un determinado territorio, puede ser toda la superficie de la tierra).

Es decir, toda la información deberá estar referida al mismo Sistema de Referencia Espacial (SRS). Un sistema de referencia muy conocido y aplicable a estos análisis cuando se trabaja a nivel global es el WGS 84 (EPSG:4326), dado que nos ofrece cobertura global y tiene una precisión suficiente que suele ser suficiente en este ámbito.

En segundo lugar, debemos considerar que los fenómenos que se producen sobre la superficie de la tierra y que aportan las variables pueden ser de dos tipos: discretos (el punto exacto donde se ha registrado un accidente de tráfico, por ejemplo) o continuos (por ejemplo la altura o elevación del terreno de un territorio).

Tipos de representación geográfica en GIS
Los sistemas de información geográfica (GIS) utilizan distintas aproximaciones a la hora de representar dichos fenómenos.

Así, para el primer tipo (fenómenos discretos), se utiliza la representación vectorial en la que los distintos “individuos” de una determinada variable (o capa, como en el caso del ejemplo el accidente de tráfico), se representan mediante puntos (un par de coordenadas X, Y), líneas o polígonos.

Para el segundo tipo (fenómenos continuos) se utilizan representaciones que permitan cubrir una superficie continua como por ejemplo las redes de triángulos irregulares (TINs, la base de los videojuegos actuales) o los rasters.

Un raster no es otra cosa que una malla regular de celdas (normalmente de forma cuadrada) que cubren completamente un espacio, que están referidos a un origen geográfico (debemos saber a qué punto de la realidad corresponde algún punto del raster, normalmente su esquina inferior izquierda)  y de cuyas celdas necesitamos conocer cuál es su resolución y extensión (es decir, cuál es el espacio geográfico abarcado por cada una de ellas y por todas ellas en conjunto).

Dentro de un raster, para cada celda conoceremos habitualmente:
  • Un identificador de celda: normalmente un número secuencial que empieza en 1.
  • El número de fila y el número de columna de cada celda: no es imprescindible ya que puede obtenerse si se conoce el identificador (posición) de la celda y el número de filas por celda.
  • El valor de la variable representada.

Ejemplo de ráster: modelo digital de elevaciones.

En el ejemplo anterior, correspondiente a un modelo digital de elevaciones, el espacio objetivo está dividido en celdas, y para cada una de ellas se conoce el valor de la variable altura, que es representable en un mapa asignando un color distinto a cada uno de los valores (o rangos de valores) de altura.

Es decir, cada raster nos permite recoger el valor de una variable dentro de un espacio subdividido en celdas regulares, aportando cada celda el valor de la variable que se puede atribuir al espacio que delimita dicha celda.

Como puede deducirse, la precisión de la información estará condicionada por la resolución del raster (espacio real delimitado por cada celda) ya que todo el espacio comprendido dentro de una celda ha de asumir un mismo valor para la variable.

Asimismo, dependiendo de cuál sea el SRS elegido, las celdas podrán estar definidas en unidades de medida angulares (en sistemas de coordenadas geográficas) o en unidades lineales (en sistemas de coordenadas proyectadas).

Es frecuente el uso de rasters basados en celdas cuyo extensión se define en unidades de medida angular (esto equivale a realizar una proyección Plate Carrée en el raster resultante) ya que facilitan el trabajo a nivel global. Nótese que en ese caso debe asumirse la variabilidad de la resolución de las celdas dado que la distancia lineal de un grado de longitud en el Ecuador y en los Polos no es la misma (siendo cero en los Polos).

No obstante lo anterior, los raster permiten relacionar espacialmente distintas variables de manera directa e inmediata ya que, dadas dos variables referidas al mismo espacio (espacio definido por el raster, es decir, origen, extensión y resolución) la relación espacial de ambas la obtendremos a través del número de celda al que pertenecen, esto es, podemos decir que el número de celda nos define el “individuo” (que en este caso es la porción de espacio definida por la celda) y sobre él podremos agrupar y relacionar los distintos valores de las distintas variables que se tengan sobre él.

Por tanto, un raster puede reducirse a una colección de valores numéricos y literales (datos alfanuméricos), y un conjunto de rasters puede entenderse como una matriz o tabla, en la que cada fila se corresponde a cada una de las celdas (identificada mediante un número único que facilita los procesos posteriores) del raster y en la que cada columna representa cada una de las variables obtenidas de cada uno de los raster originales.

El identificador de celda, fila y columna los podemos considerar variables aportadas por un raster base que nos define el espacio o “terreno de juego”.

A partir de aquí,  se podrán aplicar técnicas de análisis tradicionales y las herramientas del ámbito del BI como pueden ser Stata o el lenguaje y herramientas de código abierto R (http://www.r-project.org) sobre dichas tablas o matrices de datos alfanuméricos.

Descripción del proceso
Se describe a continuación los pasos principales para realizar un análisis de distintas variables referidas al espacio con la aproximación raster:
  1. Deberá definirse un “terreno de juego” común, es decir un raster base que abarque todo el espacio objetivo del análisis y que tenga la resolución necesaria. Al tratarse de un espacio geográfico su origen y tamaño de cada celda deberá estar referido a un determinado SRS. Necesitaremos también una representación vectorial de dicho raster para el tratamiento de la información vectorial de la que dispongamos: por cada celda de nuestro raster tendremos un polígono que delimite su extensión que tendrá como atributos (o campos temáticos) el identificador de la celda (y opcionalmente sus coordenadas de fila y columna).
  2. Todas las fuentes de información deben estar referidas al mismo SRS que el raster base para lo cual se deberán realizar las transformaciones necesarias mediante el uso de herramientas GIS como QGIS.
  3. La información vectorial deberá rasterizarse, es decir, deberemos obtener una capa raster por cada variable de las capas vectoriales que dispongamos. Esto puede hacerse mediante análisis espacial, concretamente por intersección de las capas vectoriales y la capa raster base representada en forma vectorial. Debemos tener en cuenta que un mismo fenómeno representado vectorialmente puede solapar con varias celdas de nuestro raster base. En este caso no es preciso que el raster resultante esté en un formato GIS, basta con tener el resultado alfanumérico que nos indique cuál es el valor que le corresponde a cada celda del raster, siendo inicialmente dos los valores posibles: que en dicha celda exista intersección con la capa vectorial o que no. Estos valores pueden incrementarse con los dos distintos valores de los atributos (campos temáticos) de la capa vectorial original.
  4. La información raster que dispongamos puede requerir transformación en caso de que su resolución no sea la misma que la del raster base. En caso de que la resolución sea mayor que la del raster base se realizará un proceso de generalización. En caso de que sea menor se tendrá que asumir la resolución de la fuente original.
  5. Una vez se tenga toda la información en formato raster y referida al mismo raster base se deberá exportar a un formato alfanumérico admitido por los programas de BI / análisis estadístico.
  6. Se realiza el proceso de análisis estadístico multi-variable siguiendo las técnicas de análisis tradicionales.
  7. El resultado del análisis, se podrá representar en un mapa. Ejemplo: si como resultado del análisis se ha predicho el valor de una nueva variable, dicha variable estará referida a una celda y podrá ser representado en un mapa en forma de raster. Para ello pueden utilizarse las capacidades de ploteo de los paquetes de BI mencionados o se podría exportar la variable a un formato raster o vectorial (raster vectorizado) comprensible por un GIS.

Sunday, February 15, 2015

Inspección de datos GIS

Existen proyectos de implantación de nuevos sistemas informáticos en los que es necesario realizar una migración de datos existentes en sistemas anteriores. En estos procesos es posible que se tenga que contar también con nueva información resultante de un proyecto de actualización o mejora general del sistema.

Para ello tendremos que entender la naturaleza de los datos que tendremos que migrar o integrar en el nuevo sistema. Esto implica:
  • Conocer el medio físico del que obtendremos los nuevos datos: bases de datos, ficheros, etc.
  • Conocer el significado de la información y cómo se ha estructurado e implementado: entidades, tipos de datos y las relaciones lógicas entre las entidades.
Para ello, además de toda la documentación de la que podamos disponer, necesitaremos inspeccionar los datos, de manera que podamos asegurarnos de la validez de la documentación (si la hay) y resolver dudas concernientes a la realidad de los datos, su semántica y calidad.

Del resultado de la inspección se podrá obtener un conocimiento más preciso de los datos de partida que se traducirá en decisiones relacionadas con la estrategia de carga de los datos y con las acciones necesarias para la corrección, transformación y mejora de los datos para su correcto encaje en el nuevo sistema.

Para ello haremos uso de herramientas como clientes de consulta SQL para chequear la información existente en bases de datos, visores de hojas de cálculo, editores de texto o la herramienta que mejor se ajuste al medio en cada momento.

En el caso de un GIS (Sistema de Información Geográfica) la necesidad de inspeccionar los datos es la misma pero se han de utilizar técnicas y herramientas acordes a la naturaleza de la información que se maneja, esto es, la información geográfica.

Para ello es habitual el uso de herramientas de escritorio que permiten la consulta de diversos orígenes de datos como:

  • Bases de datos geográficas: Oracle, SQL-Server, Postgres/PostGIS son ejemplos de bases de datos relacionales con soporte a tipos de datos espaciales.
  • Ficheros con información geográfica: Shapefiles, KML/KMZ, etc.
  • Servicios interoperables OGC: WMS, WFS,  etc.

Existen una amplia variedad de herramientas comerciales y de código abierto entre las que se encuentran:

  •  QGIS: basado en C++, muy completo a día de hoy y sigue creciendo con una amplia base de desarrolladores.
  • uDig GIS: basado en java, más sencillo pero funcional y muy recomendable para adentrarse en este mundo y para ser integrado en aplicaciones basadas en java.
Además de estas herramientas específicas del ámbito GIS seguirán siendo de utilidad las mismas herramientas para la inspección de los datos desde las perspectivas "relacionales" tradicionales.

Metadatos
Por último es importante recordar la importancia que en todo sistema de información deberían tener los metadatos, que en términos sencillos son: datos relativos a los datos. Más aún en el ámbito de la información geográfica en la que parámetros como la precisión, las técnicas de recolección, la frecuencia de actualización, etc., son aspectos clave a la hora de aplicar los datos a la hora de realizar cualquier implantación de sistemas o trabajos de análisis geoespacial (ver estándares de metadatos GIS).

Saturday, February 15, 2014

Weekend productivity tools (PicPick)

Weekend arrives, this spare time period you've been waiting for during the hard-working week days...

Yes, a bit of time for yourself, you expect.... Imagine the scene: you are going to read about these interesting things you've been collecting in your reading wish-list, when one of your lovely sons or daughters comes in asking for help for their homework... Let's work again!!!

As you can suppose, today's homework is influenced by new technologies: cloud platforms for distributing and collecting information and homework, word processing tools, animated presentations... ¿daddy can you help me?

It's amazing the abilities nowadays children have developed naturally for using such tools. I must say, I've seen them prepare really attractive presentations (better than mine, uhmm.., that's not very difficult ;)). Thanks good, I still can contribute with my experience (life is life) in tools, tricks and tips!!!

In these duties we were when I came across what I think is a very helpful tool: PicPick for Windows. Important advice: I strongly recommend to decline to install other applications included in the installer.

As stated in its homepage this is an “all-in-one” design tool for everyone:  Full-featured screen capture tool, Intuitive image editor, color picker, color palette, pixel-ruler, protractor, crosshair, whiteboard and more…
PicPick's feautes in tray icon menu
As far as I have tried, I can say that it’s a lightweight and very easy to use tool, which exposes all its features through a tray icon you can access quickly. You can configure it to start automatically with your session or call it when you need it.

Its first and main feature is screen capturing which can be done directly over the screen (by means of a keyboard shortcut), fencing the desired area and sending it directly to the clipboard (you must change the configuration as by default it will capture into a paint-like tool included in PicPick), avoiding the two or three steps I was used to do before (Printscreen+Paste on Paint+Cutting&Copying…).

Color Palette and Color picker are also very useful if you have to define colors in your presentations or in developing tasks in order to configure stylesheets.

Although I haven’t tried in a real situation, the Whiteboard tool seems to be a very helpful tool when you need to explain or teach something over a running application in a computer.

PicPick is a free application for home users. The price for commercial use rounds 25$.

Let me know if this post has interested you, and if you know about a similar Opensource alternative, or at least a full freeware one, please: let us know!

Sunday, February 09, 2014

Sobre herramientas de modelado con UML y otros asuntos relacionados

La necesidad de usar UML

A lo largo de los proyectos que he venido realizando en mi actividad profesional ha surgido en mayor o menor medida la necesidad de utilizar la notación UML (Unified Modeling Language) en los siguientes escenarios (principalmente):
  • Requisitos: fundamentalmente mediante diagramas de casos de uso para la captura de requisitos funcionales, diagramas de máquinas de estados y actividad para la comprensión de procesos y flujos de trabajo.
  • Diseño funcional: diagramas de paquetes para la descomposición funcional de la solución en paquetes o módulos y diagramas de casos de uso para la especificación de la funcionalidad que debería ofrecer la solución que estábamos construyendo.
Diagrama de casos de uso
  • Diseño de la solución y de su arquitectura: siendo el más importante el diagrama de clases, también otros como los diagramas de componentes, de secuencia, etc., según las necesidades concretas de uno u otro proyecto.
Diagrama de clases

Dicha necesidad se produce en proyectos con distintos enfoques sin estar reñida con el tipo de metodología aplicada en ellos: tanto en proyectos en los que se pedía un desarrollo "en cascada" o "en V", como en proyectos en los que se han aplicado metodologías ágiles en los que no se requiere un diseño completo previo al desarrollo pero en los que sin embargo el uso de UML sigue siendo válido y necesario.

Lo que he utilizado hasta la fecha...

Eran mediados de los noventa cuando the three amigos desarrollaron (integraron) sus mejores propuestas para dar lugar a la notación UML, y además la acompañaron de una metodología de desarrollo conocida como RUP (Rational Unified Process), que precisamente toma el nombre de la empresa en la que se hicieron fuertes Rational Software.

Rational Rose, fue la herramienta de referencia en aquel entonces, debido a que tenía el sello de los padres de la criatura y que ofrecía un alto grado de calidad y completitud para soportar los distintos elementos de la notación UML así como del proceso RUP.

Mi experiencia con esta herramienta es inexistente más allá de haberla abierto un par de veces o de haber leído alguna guía o tutorial sobre la misma. Esto se debe a que quizá cuando empezamos a utilizar estas técnicas no se justificaba la adquisición de una herramienta con un precio "considerable" teniendo en cuenta el uso que se le iba a dar: sólo algunos diagramas y de manera parcial, y a priori ninguno en lo relativo a RUP.

Por otra parte disponíamos de licencias de productos de ofimática y de desarrollo de Microsoft entre los que se encontraba Microsoft Visio, tanto como parte de la familia Office como con las versiones ...for enterprise architects (en su versión 2003) incluidas en las soluciones de desarrollo de Visual Studio .NET 2003 y Visual Studio 2005.

En mi opinión MS Visio es una herramienta magnífica (ya en su versión 2003 y a día de hoy también) por su versatilidad a la hora de realizar todo tipo de diagramas y por su extensibilidad (mediante un modelo de objetos COM, hoy poco apetecible).

Además parecía que era la respuesta de Microsoft para complementar sus herramientas de desarrollo Visual Studio a través de las versiones ...for enterprise architects con sus capacidades de reingeniería inversa y generación de código (no sólo en lo relativo a UML sino también para resolver el modelado de Bases de Datos mediante modelos ER físicos obtenibles por ingeniería inversa y con la posibilidad de generar implementaciones físcas mediante scripts de DDL).

Lamentablemente parecía que ésta no iba a ser la apuesta definitiva de Microsoft tal y como se vio cuando dejaron de incluirlo en las siguientes versiones de Visual Studio (¡y ya no se podía instalar salvo que mantuviésemos las versiones de VS anteriores!) o al comprobar que no se implementaban las últimas versiones de la notación UML (esta última "pega" la pudimos paliar en cierta medida gracias a las capacidades de configuración del propio Visio).

Aún así Visio es la herramienta que más he utilizado para cubrir las necesidades que comentaba al principio cuando se trataba de documentar o realizar reingeniería de código o bases de datos.

Con Visual Studio 2010 Microsoft introdujo una nueva serie de herramientas totalmente integradas en el entorno de desarrollo que ofrecen además la sincronización entre el código y componentes de la arquitectura y sus respectivos modelos. Lamentablemente estas capacidades están sólo disponibles en la versión Ultimate, algo que hace que sea totalmente inviable económicamente salvo para mantener un par de licencias (ni siquiera para cualquier empresa/organización).

Personalmente considero que las herramientas de modelado deben estar accesibles a todo el equipo de desarrollo que las ha de utilizar en mayor o menor medida según su papel en el mismo, y por la razón que comentaba veo muy difícil que la propuesta de MS sea la herramienta en la que decida aplicar mis esfuerzos...

¿Y ahora qué?

¿Sigo tirando de Visio o buscamos alguna alternativa? En la siguiente entrada trataré de dar una respuesta a esa pregunta comentando varias alternativas de Software Libre que he analizado estos días.

¡Espero vuestros comentarios!