Visualización de Fechas fuera de CartoDroid

Cuando trabajamos con bases de datos sqlite, nos enfrentamos al problema de que no existe el tipo Date, lo que nos obliga a trabajar con otro tipo de datos para la recogida de fechas.

CartoDroid para ello lo que utiliza son campos de tipo Integer que guarda lo que se denomina Tiempo Unix (Unixepoch), el cual se define como la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970. Dada la forma de guardar los datos, que es un estándar en determinados ámbitos, suele ser sencillo una transformación a un formato legible de fecha. Sin embargo en algún otro programa no es algo inmediato.

Vamos a fijarnos en QGis como software que no soporta este tipo de datos y que solemos tomar como referencia para explotar los datos recogidos con CartoDroid.

Para poder ver en QGis los datos recogidos en Cartodroid, vamos a utilizar la “calculadora de campos” que provee dentro de la “tabla de atributos”.

Dado que no tenemos una fucnión dentro de QGis que realice la transformación de forma directa, tenemos que contruirla nosotros mismos. Para ello debemos entrar en la pestaña “Editor de funciones” de la calculadora de campos y seguimos los siguientes pasos:

    • Pinchamos Sobre “Archivo nuevo” y escribimos el nombre que le queremos dar.
    • Pegamos las siguientes lineas de código Python
"""
Define new functions using @qgsfunction. feature and parent must always be the
last args. Use args=-1 to pass a list of values as arguments
"""

from qgis.core import *
from qgis.gui import *
import time

@qgsfunction(args='auto', group='Custom')
def fromSecToDate(value1, feature, parent):
    outtime = time.gmtime(value1)
    outtime = time.strftime("%d-%m-%Y", outtime)
    return outtime
  • Pinchamos sobre el botón “Cargar”

Una vez creada la función, podemos utilizarla dentro de la calculadora. Para ello vamos a la pestaña “Expresión” y seleccionamos de la lista de funciones, dentro de la sección “Custom” la función fromSecToDate y escribimos la expresión  fromSecToDate(f_insp)

Por otra parte seleccionamos la creación de un campo nuevo y le damos nombre. Cuando “Aceptemos” se creará un campo nuevo con el nombre seleccionado con el valor de fecha legible.

Creación de .mbtiles desde repositorios online

Dado el marcado carácter offline de CartoDroid se hace necesario poder guardar la información que nos proveen distintos proveedores de cartografía (Google Maps, Bing Maps, …) y generar cartografía raster en ficheros que puedan llevarse en el propio dispositivo sin necesidad de tener conexión de datos. En el presente artículo vamos a mostrar el uso de una herramienta denominada SAS.Planet que nos permite realizar estas labores, generando ficheros compatibles con CartoDroid, y como tenemos que configurar nuestro proyecto para poder utilizarlos.

El primer paso es que nos descarguemos la aplicación desde la web del desarrollador www.sasgis.org/download/. Una vez descargado no es necesario instalarlo, ya que simplemente descomprimiendo el archivo en una carpeta del PC se puede ejecutar la aplicación.

Selección de datos a mostrar

Una vez ejecutada la aplicacion, cuya interfaz podemos ver en la captura anterior, podemos definir el mapa que queremos ver como referencia a la hora de definir la zona que queremos descargarnos. Tenemos una amplia colección de mapas online con los que trabajar, Google Maps, Bing Maps, Mapas online de ESRI, … Por otra parte la aplicacion es configurable, por lo que si conocemos algún otro servicio que no esté definido (por ejemplo los servicios de mapas de catastro), se puede configurar dentro de la herramienta para poder realizar la descarga de los datos del mismo.

Definición de la zona de descarga

Para poder descargar los datos, es necesario delimitar cual es la zona de la cual queremos extraer los datos. Para ello tenemos varias herramientas.

La mas simple es la herramienta de “Selección Rectangular” que me permite dibujar de forma sencilla un rectángulo en pantalla delimitando la zona de trabajo. En el momento de terminar la creación de la zona de trabajo se muestra la pantalla de “Administración de Selecciones”, la cual nos permite realizar las operaciones de descarga y exportación de los datos.

Descarga de datos

Previo a creación del fichero que podremos utilizar en CartoDroid, es necesaria la descarga de las imágenes a nuestro PC.

Este formulario nos permite tanto la descarga de los datos como la exportación de los mismos. Inicialmente tenemos que descargar los datos. Bien es cierto que nos podríamos saltar este paso si ya hemos descargado los datos en anteriores operaciones ya que la herramienta guarda estos datos para posteriores operaciones.

En esta pantalla debemos ir a la pestaña “Descarga” y una vez allí definimos el mapa desde el que nos vamos a descargar los datos así como los niveles de zoom para los que se van a generar las imágenes. Una vez seleccionados ambos parámetros, se nos muestra el número de mosaicos que va a descargar la herramienta y el tamaño de los mismos en píxeles.

Al dar a iniciar se nos muestra una pantalla que nos va indicando el progreso de la descarga y detalles como el peso de los ficheros generados. Esta tarea puede tardar bastante tiempo dependiendo de la zona seleccionada y los niveles de zoom a los que queremos descargar las imágenes.

Creación de fichero compatible con CartoDroid

Cuando se haya terminado la descarga de los datos es el momento de crear el fichero de trabajo compatible con CartoDroid. Para ello debemos acceder de nuevo al formulario de “Administrador de Selecciones” para ello desde el menú de selección debemos acceder a la opción “Última selección”. Una vez en la pestaña de “Exportar” podremos seleccionar los siguientes parámetros:

  • Formato – El formato del fichero de exportación. En este caso debe ser de tipo MBTiles 1.2(SQLite3) para que CartoDroid pueda utilizarlo.
  • Guardar en – Seleccionamos el nombre del fichero. Este debe acabar en .mbtiles.
  • Mapa – Podemos seleccionar el mapa a partir del que queremos generar el fichero.
  • Niveles de Zoom – Niveles de zoom con los que se generará el fichero. Podemos seleccionar varios.

Si seleccionamos un mapa o unos niveles de zoom que no tenemos descargados, la exportación creará el fichero con las teselas, pero estas estarán vacías.

Configuración y carga de los datos en CartoDroid

El siguiente paso a dar es llevar el fichero generado al dispositivo móvil, lo primero es cambiar el nombre al fichero generado, este debe de seguir la siguiente norma.

nombre_srid_version.mbtiles

Ej: valladolid_4326_2016.mbtiles

Después simplemente conectamos con un cable usb el móvil o tablet y llevamos el archivo hasta la memoria del mismo (la localización del fichero dentro del almacenamiento es irrelevante).

Debemos cambiar el fichero de configuración del proyecto a cargar para añadir este nueva capa, el fichero es un xml que se encuentra en la carpeta de dispositivo\cartodroid\config y se denomina crtdrdLayers.NOMBRE_PROYECTO.xml

En dicho fichero debemos de añadir una nueva capa de tipo mbtiles y guardar el fichero ya solo debemos abrir CartoDroid y cargar el proyecto para ver la nueva capa sobre el mapa.

El código ha añadir es como el que sigue.

<entry>
    <string>PRUEBASAS</string>
    <es.jcyl.ita.crtcyl.core.model.RasterLayer>
    <descripcion>Mapa de prueba de SAS</descripcion>
    <id>Pruebas Carga</id>
    <name>Mapas Prueba</name>
    <sources>
        <es.jcyl.ita.crtcyl.client.dao.source.RepoMBTilesServiceDescriptor>
            <resourceid>valladolid</resourceid>
            <srid>4326</srid>
            <version>2016</version>
        </es.jcyl.ita.crtcyl.client.dao.source.RepoMBTilesServiceDescriptor>
    </sources>
    <zOrder>10</zOrder>
    <range>
        <max>15</max>
        <min>6</min>
    </range>
    </es.jcyl.ita.crtcyl.core.model.RasterLayer>
 </entry>

Debemos cambiar los parámetros en negrita para adaptarlo a nuestros datos, sobre todo resourceid, srid y versión que tienen que coincidir con los el nombre del fichero. Para el caso del código mostrado sería valladolid_4326_2016.mbtiles

Herramientas GPS en CartoDroid

Las herramientas edición de CartoDroid son muy amplias y permiten recoger datos de forma simple. En el presente artículo vamos a mostrar como nos puede ayudar el GPS integrado en el dispositivo móvil para poder crear nuevos elementos de la cartografía.

Este tipo de herramientas nos van a servir para recoger datos por ejemplo haciendo el recorrido alrededor de una zona que queremos dibujar o recogiendo un punto de la geometría bien conocido a través del dato del GPS. A continuación vamos a presentar dos casos que son complementarios ya que las herramientas de recogida de puntos GPS se pueden intercalar tanto entre sí como el dibujado a mano aunque en este caso los vamos a ver como diferentes casos de uso.

Como crear un elemento como un recorrido GPS

Esta herramienta va a funcionar tanto para trabajar con capas poligonales como lineales, la diferencia estriba simplemente en que en el caso poligonal en todo momento la linea de dibujo estará cerrada. En el ejemplo vamos a realizar la recogida de datos poligonal.

Seleccionamos la capa sobre la que queremos recoger los datos y realizamos una de estas dos acciones. Pulsar sobre el botón de añadir geometría en el lado derecho de la pantalla o dejamos pulsado sobre el mapa hasta que aparezca el menú de tipo de geometría a crear.

gpsrecorridocreaciongpsrecorridotipogeometriaUna vez estamos en la posición en la que queremos comenzar a recoger el recorrido seleccionamos la opción de menú “Comenzar trazado por ubicación”. Mediante esta acción le decimos a CartoDroid que empiece a añadir nuevas posiciones a la geometría que estamos creando.

gpsrecorridotipoiniciarrecorrido

Una vez hemos comenzado el trazado ya podemos movernos para que la aplicacion vaya recogiendo el recorrido y creando por tanto la geometría asociada al mismo.

gpsrecorridointermedio

El recorrido lo podemos pausar y reiniciar en cualquier momento ya que la opción de menú “Comenzar trazado por ubicación” cuando la pulsamos y estamos recogiendo datos se convierte en “Detener trazado por ubicación”.

gpsrecorridofinalizar

Para finalizar como cualquier otra edición solo tenemos que aceptar la geometría para generar el elemento de la capa correspondiente.

Añadir punto GPS

En algunos casos no queremos recoger un recorrido GPS sino solamente puntos específicos y bien localizados. Por ejemplo si tenemos una parcela de aspecto rectangular, no parece la mejor forma de delimitar la misma con un recorrido sino recoger las esquinas de la misma.

CartoDroid dispone de una herramienta que nos permite recoger un solo punto y añadirlo a la geometría que se está creando. La herramienta, se encuentra en el menú y aparece cuando estamos en edición, se denomina “Añadir punto GPS”.

Configuración de la recogida de datos GPS

CartoDroid permite determinar la densidad de los vértices recogidos así como el umbral de error permitido en la lectura GPS para que esta  se convierta en un vértice de la geometría. Los parámetros a modificar se encuentran en el menú de ajustes de la aplicacion, en el submenú “Mapa”

Precisión Mínima – Se define en metros y es la precisión mínima que debe de tener la posición GPS que lee CartoDroid en ese momento para añadirlo como un vértice a la geometría de trabajo.

Distancia mínima entre puntos – Este parámetro también definido en metros, se utiliza para que la geometría no quede demasiado densa y el recorrido sea limpio. Lo de determina es que no se recoge un nuevo vértice si la posición está a una distancia menor de la indicada en el parámetro.

 

Creación de nueva información en CartoDroid

 

Cualquier proyecto de recogida de datos en campo se va a componer de una serie de capas de referencia, así como capas de trabajo que serán las que recojan los datos creados desde la aplicacion. CartoDroid nos presenta varias formas de crear nuevos datos en las capas de trabajo y que podremos utilizar dependiendo de las necesidades del momento. Las formas principales de crear nuevos datos son las siguientes:

Copiar elementos entre capas

CartoDroid nos va a permitir la copia de elementos geométricos entre las distintas capas de trabajo dentro de un proyecto. Se pueden copiar elementos, tanto desde capas de referencia como de capas de trabajo.

Para que podamos realizar la copia de un elemento de una capa a otra, es necesario que las dos capas sean del mismo tipo (puntual, lineal o poligonal). Por otra parte cuando configuramos las capas a través de la modificación del xml de proyecto, se puede definir si una capa puede ser origen y/o destino de una operación de copia.

Pasos para realizar copia de datos de una capa a otra

  1. Teniendo la capa de la que se quieren recoger los datos, seleccionamos la geometría que queremos copiar y pulsamos sobre el botón de copia.copiaseleccion
  2. CartoDroid nos muestra un selector en el que definimos la capa de destino de la copia. Esta lista estará compuesta por las capas que sean editables y sobre las que se pueda realizar la copia.copiaseleccioncapa
  3. Una vez seleccionada la capa, la geometría se copia en la misma. Un apunte a destacar es que cuando realizamos la copia de una geometría, si en la capa de origen y destino existen campos con el mismo nombre, los valores de dicho campo también son replicados.copiaseleccionfinal
Creación de elementos por dibujado

Para la creación de nuevos elementos CartoDroid proporciona múltiples herramientas que permiten crear y editar los elementos de cartografía cargados en la capa seleccionada. La interfaz de trabajo de CartoDroid es dinámica y se ajusta tanto a las propiedades (capacidad de edición, copia, …) de las capas como del tipo de geometría de la misma.

El dibujado de nuevas geometrías se puede realizar a través de dos tipos de herramientas, aquellas en las que es necesaria la interacción con la pantalla para realizar la misma y las que utiliza la posición proporcionada por el sistema GPS (integrado o externo) del dispositivo para añadir elementos a la geometría.

En este artículo nos vamos a centrar en el primer  tipo de herramientas, ya que el segundo ya tiene su propio artículo Herramientas GPS en CartoDroid

Herramientas de edición sobre pantalla

Cuando creamos o editamos un elemento en todo momento vamos a encontrar información contextual en el menú y título de la aplicación dependiendo tanto del tipo de geometría con la que estamos interactuando como la operación que estamos llevando a cabo. A continuación desgranamos cada uno de los elementos de la misma:

  1. Botón Aceptación de operación – Este botón nos permite aceptar la operación que se esté llevando a cabo. En el ejemplo de arriba la operación en este caso es la creación de un polígono.
  2. Operación y herramienta en curso – En esta parte del menú se presentan la operación que estamos realizando(en este caso Crear polígono) y la herramienta con la que estamos operando en ese momento (en este caso añadir punto)
  3. Activación de gestos de pantalla – Cuando estamos realizando una operación de edición tenemos bloqueada la vista de mapa dado que es necesario diferenciar las operaciones de movimiento por el mapa de las propias de edición (añadir un vértice, desplazar un vértice, …). Para poder desplazar y realiza zoom sobre el mapa es necesario pulsar este botón para que los gestos sobre pantalla sean interpretados por CartoDroid como acciones de movimiento por el mapa.
  4. Añadir vértice – Nos permite añadir puntos a la geometría con la que estamos trabajando. Además nos permite editar otros puntos que ya tengamos en la propia geometría a editar simplemente pulsando sobre ellos y arrastrándolos a la posición deseada.
  5. Desplegar menú – Dada la heterogeneidad de los dispositivos Android, no todos ellos pueden mostrar los mismos iconos, en ese caso nos muestra el resto del menú de esta forma. A continuación mostramos los elementos del menú:
  • Añadir punto GPS – Se pueden añadir nuevos puntos a la geometría recogiendo la posición del GPS y no pulsando sobre la pantalla
  • Comenzar trazado por ubicación – Ver seccion de recogida de datos GPS
  • Eliminar último punto – Elimina de la geometría el último punto añadido. Podemos eliminar varios aún sin haber añadido nuevos.
  • Mover elemento – Permite mover el elemento sobre el terreno.
  • Rotar elemento – Rotamos el elemento realizando el mismo gesto que la rotación del mapa.
  • Escalar elemento – Realiza un escalado del elemento, para ello se utilizan los mismos gestos en pantalla que para realizar zoom.
  • Vista anterior – Volvemos a una vista de mapa anterior a la que nos encontramos
  • Vista siguiente – Si hemos vuelto a una vista anterior, movernos por la lista de vistas por las que hemos pasado
  • Cancelar operación – Cancelamos la operación no guardando la geometría que habíamos creado hasta el momento
Importar elementos a una capa

La última forma que tenemos para crear elementos en una capa es la importación

Crear nueva capa partiendo de un listado de recintos SigPac

Creación y Gestión de marcadores

En casi todos los sistemas de información geográfica tienen una serie de mecanismos que permiten guardar y recuperar un determinado encuadre del mapa. Esto sirve para poder ir a zonas concretas de la geografía que para el usuario son importantes con un solo click.

En CartoDroid a estas vistas guardadas las denominamos marcadores. Desde CartDroid se pueden crear marcadores que pueden ser utilizados desde distintos proyectos ya que no se almacenan por proyecto sino en un repositorio único.

Creación de un  nuevo marcador

Simplemente hay que abrir el menú de CartoDroid y seleccionar la opción “Añadir marcador”

crearmarcador

Se nos muestra en ese momento un cuadro de dialogo en el que se nos pide que nombremos el marcador (no puede haber marcadores con nombres repetidos)

nombrarmarcador

Gestionar marcadores

Desde el menú, opción “Ver marcador” podemos ver la lista de marcadores que están guardador. Desde la lista vamos a poder gestionar los marcadores pudiendo

  • Ir a marcador – Si pulsamos sobre el nombre del marcador la vista del mapa se posicionará en la localización del marcador.
  • Modificar marcador – Si pulsamos en el icono de edición la aplicación nos permite cambiar el nombre del marcador. Para poder cambiar la localización del mapa no nos quedaría otra que crear un nuevo marcador y eliminar el anterior.
  • Eliminar marcador – Simplemente pulsando sobre el icono de la papelera podremos eliminar un marcador.

listamarcadores

 

Exportación de datos desde CartoDroid

Una vez que hemos realizado nuestro trabajo de recogida de datos en campo suele ser necesario llevarlos de nuevo al PC para poder procesarlos.

Para ello contamos con dos opciones.

  • Copia directa de los datos conectando el terminal móvil al PC

En este caso si tenemos el dispositivo conectado al PC solo tenemos que navegar con el explorador de archivos la ruta en la que se encuentran los ficheros sqlite con los datos recogidos.

Para saber cual es la ruta de la base de datos sqlite que contiene la capa, solo es necesario pulsar el nombre de la capa durante un par de segundos apareciendo el siguiente dialogo en el que se muestra la ruta.

localizacioncapa

En este caso vamos a recoger toda la información de la BD y no solo de una tabla (capa) en concreto

  • A través de la herramienta de exportación de CartoDroid.

En este caso vamos a poder crear un fichero de exportación en tres formatos distintos (sqlite, kml y csv) y enviarlo a través de las herramientas de “compartir” de Android. Entre las que se pueden encontrar: envío a través de correo, Whatsapp, subida a Google Drive, etc. Estas dependen de las aplicaciones que tengamos instaladas y de la personalización del terminal por parte del fabricante.

Para que podamos guardar el fichero generado en el propio terminal y luego recoger los datos desde el pc, es necesario tener un explorador de ficheros en el terminal que lo permita.

Pasos para la exportación:

1.- Seleccionamos la capa que queremos exportar

cartodroiddesplegaracciones

2.- Mostramos el menú de la capa y seleccionamos la herramienta de exportación

cartodroidexportar

3.- Seleccionamos el tipo de fichero a exportar. La exportación puede ser de solo los datos alfanuméricos, en este caso elegiremos exportación en csv, o con la geometría añadida, en este caso seleccionaremos KML o sqlite.

cartodroidseleccionartipoexp

En el caso de KML o cvs, podemos elegir si el filtro aplicado a la capa se utiliza a la hora de exportar o no.

Mientras si exportamos en sqlite se envía toda la base de datos que contiene a la capa seleccionada.

4.-Seleccionamos el método en el que se compratirán los datos. Como hemos comentado, esta pantalla depende del equipo en el que se realiza la exportación así como las aplicaciones instaladas.

cartodroidselecenvio

Crear nueva capa partiendo de un listado de recintos SigPac

Es muy común cuando trabajamos con datos espaciales que la geometría de los elementos de trabajo se correspondan con elementos de otras capas de referencias. En los trabajos de campo una de las referencias más utilizadas es la del SigPac y por lo tanto es muy común que nuestras geometrías de trabajo sean los propios recintos del SigPac.

En este artículo vamos a crear una nueva capa de trabajo partiendo de una lista de recintos SigPac. La lista contiene las referencias de recinto a cargar estas referencias pueden estar como veremos a continuación en varios formatos.

Vamos a ver paso a paso como crearíamos la nueva capa y cargamos los datos

  1. El primer paso es crear una nueva capa de trabajo poligonal.
  2. Debemos crear un fichero de texto en el que contenta las diferentes referencias de recinto que queremos cargar en la capa. El fichero debe contener solo una referencia por linea y tenemos dos opciones para definir la referencia del recinto SigPac

    -Referencia de recinto completa – En este caso la referencia se conforma teniendo en cuenta la siguiente tabla:

    Provincia: 47      con 2 dígitos 39
    Municipio: 1       con 3 dígitos 001
    Agregado: 0        con 3 dígitos 000
    Zona: 0               con 2 dígitos 00
    Polígono: 2         con 3 dígitos 002
    Parcela: 3            con 5 dígitos 00003
    Recinto: 2           con 3 dígitos 002

    Código de búsqueda de recinto: 470010000000200003002

    -Referencia separada por ; – En el presente caso los códigos de cada una de las partes de la rerefencia se separan por ;

    Provincia;Municipio;Agregado;Zona;Poligono;Parcela;Recinto

    Referencia de recinto: 47;1;0;0;2;3;2

  3. Seleccionamos la capa poligonal que hemos creado y pulsamos sobre el cono de importación
    importacionsigpac-seleccion
  4. En el cuadro de dialogo “Importar entidades”
    importacionsigpac-importacion
  5. Seleccionamos el fichero que contiene la lista de recintos a cargar
    importacionsigpac-fichero
  6. Se muestra un mensaje de texto que nos indica que se van a cargar los recintos SigPac provenientes del listado en la capa seleccionada. Aceptamos
    importacionsigpac-aceptar
  7. Una vez procesado el fichero se muestra un resumen de los recintos cargados.
    importacionsigpac-final