iOS Shortcuts y KNIME para analizar info geoloc

This post is also available in: English

Me gusta desconectar todo lo posible en vacaciones, pero también aprender o probar algo nuevo. En esta ocasión he insistido en repasar cuántos lugares he visitado en los últimos años. Gracias a las fotos geoposicionadas, esta información está disponible, pero ¿cómo puedo extraerla de ellas de la forma más sencilla posible? iOS Shortcuts y KNIME, como herramientas #nocode, son las elegidas para analizar la información geolocal.

Boston geoloc photos iOS Shortcuts KNIME data analytics ETL Google Data Studio NOMINATIM API
Fotos en Boston con información de geolocalización mediante la aplicación nativa de iOS

Este año ha sido difícil, es cierto, pero por suerte toda mi familia y amigos están bien. Durante las vacaciones de Navidad siempre me permito un poco de retrospectiva, y de hecho tengo suerte. Y si miro hacia atrás, aún más. Incluso este año, en el que hemos restringido al máximo nuestros contactos sociales y nuestros viajes, hemos podido estirar un poco las piernas cuando ha sido posible.

Si utilizas un iPhone, ver esta información es muy sencillo. Sólo tienes que ir a la vista «Lugares» para ver las fotos agrupadas por ubicación. El problema comienza si se quiere utilizar esa información para hacer cualquier otro tipo de análisis o utilizar un servicio de visualización como Open Street Map para mostrarla por años o países… No hay forma de exportar esa información.

Espera… ¿pero qué pasa si uso los accesos directos de iOS?

Llevo un tiempo dedicando tiempo a las herramientas verdaderamente #nocode. La premisa es que no hay que usar ningún lenguaje de programación específico para evitar instalar IDEs, compilar, probar, etc. Aunque hay diferentes opiniones sobre estas herramientas, lo cierto es que son realmente fáciles de usar si has programado alguna vez. Hay que tener «coding and data literacy» porque si no, apenas se rasca la superficie de las posibilidades que ofrecen.

Definamos el problema: extraer la información de geolocalización de las fotos que tengo en el teléfono durante un periodo de tiempo y exportarlas en un formato estándar legible por otras herramientas de análisis.

Si utilizáramos la fuerza bruta, podríamos exportar todas las fotos con sus metadatos y empezar desde ahí, pero ¿de qué sirve si ya tenemos acceso desde el propio terminal? Probemos si la herramienta nativa de iOS, Shortcuts, tiene los componentes necesarios para resolver el problema de la extracción. Además, así evitaremos tener un espacio (no despreciable) donde almacenar las fotos.

Componente / FuncionalidadSI/NO
Acceso a la fototeca de forma nativa
Bucles para procesar cada foto
Acceso a los metadatos de las fotos (latitud, longitud, …)
Generar archivos de texto localmente y en la nube (iCloud, Dropbox, …)
Selección dinámica del intervalo de fechas
Funcionalidades necesarias para resolver mi reto de extracción

#nocode workflow: geoloc info

Así que… vamos a comprobarlo. Primero haré una prueba con las fotos del último mes para asegurarme de que todo está bien y poder comprobar los tiempos de procesamiento.

La información del flujo de trabajo está en español pero puedes descargarlo para ejecutarlo desde tu terminal y con tus fotos. Aquí tienes algunas notas para poder modificarlo a tu conveniencia:

  • En el tercer bloque se solicita el nombre del archivo donde se guardará la información extraída en un formato estándar CSV separado por comas, en este caso por punto y coma. También hay que indicar la extensión «.csv».
  • Puedes experimentar con los diferentes tipos de filtros disponibles en el bloque de acceso a la foto: si pertenece a un álbum concreto, si es una captura de pantalla, el tipo de orientación, si está marcada como favorita, …
  • He incluido un pequeño control para verificar que la foto tiene efectivamente información de localización para evitar errores posteriores.
  • En mi caso, uso iCloud como servicio de almacenamiento remoto. Cuando lo importes en tu dispositivo, podrás elegir el servicio que te parezca mejor.

En mi caso, mi biblioteca tiene 8.140 fotos con información de localización. El flujo de trabajo fue capaz de procesar correctamente todas las fotos en un tiempo de 09:20 minutos, es decir, algo más de 14 fotos por segundo. Utilicé un 11″ 256Gb iPad Pro 2020 para esto.

Siguiente paso: Análisis básico de datos con KNIME

Hasta aquí todo bien. Ya tenemos la información en un archivo CSV estándar. Como podrás observar, también he incluido todos los metadatos de las fotos en la última columna por si acaso. La siguiente parte del reto es poder cargar y ver esa información en un servicio abierto como Open Street Map. En este caso, utilizaré una herramienta de procesamiento y análisis de datos, KNIME Analytics Platform, que aparece en el Cuadrante Mágico de Gartner, junto con soluciones como Dataiku, que tiene una versión completa de código abierto (puedes descargarla aquí).

Mi intención no es explicar en detalle cómo utilizar esta herramienta y por eso he puesto a disposición una versión del flujo de trabajo en el KNIME Hub para que puedas utilizarlo junto con el archivo generado en el paso anterior. La plataforma tiene un nivel de documentación asombroso que incluye blogs para principiantes, libros avanzados para Codeless Deep Learning o canales de YouTube para tutoriales.

La plataforma tiene enormes posibilidades utilizándola como herramienta de programación visual, quizás no exactamente #nocode pero sí #codeless. Como he dicho antes, hay que tener algo de experiencia en programación para poder explotarlo correctamente. Dicho esto, ¿es necesario programar para extraer la información recibida de una API en formato JSON? ¿O aprender e implementar en python los secretos de la autenticación de Google para actualizar una hoja de cálculo? En absoluto y lo verás ahora.

iOS Photo KNIME workflow Analytics geoloc geolocalization
Flujo de trabajo de KNIME para visualizar la información geolocalizada de Fotos de iOS.

Y esto es sólo el principio

Este es el flujo de trabajo generado con la versión de escritorio de KNIME Analytics Platform. Sólo tiene una entrada: el archivo CSV generado con iOS Shortcuts. A partir de ahí, se ingesta la información de cada columna, se hace una pequeña comprobación de los rangos de latitud y longitud para asegurar que luego se pintarán correctamente en el mapa y se extrae la información del año de la foto para poder segmentarlos por esa variable .

Hasta ahora, ni una sola línea de código. Lo principal es identificar los componentes (ETL, filtrado de filas, rangos, …) que necesitaremos para procesar la información con el fin de resolver el reto que nos habíamos propuesto. ¿Es interesante que sepas algo sobre RegEX? Por supuesto. ¿Necesario? En absoluto.

Si descargas el flujo de trabajo puedes ver cómo enlazar la información con las hojas de cálculo de Google y utilizarlas como puente con Google Data Studio. También he incluido una rama para obtener la información sobre la región de cada localización utilizando el servicio API de NOMINATIM (geocodificación inversa).

Este es el resultado en Open Street Map sólo para fotos en la península ibérica.

KNIME Open Street Map OSM
Sólo una muestra centrada en la Península Ibérica

Conclusiones

Al fin y al cabo, cada una de las partes se ha resuelto utilizando sólo dos herramientas #nocode y conectadas por un archivo de intercambio de datos estándar. Además, basándome en esa información, también he incluido el acceso a una API externa sin una sola línea de código.

Este mismo flujo de trabajo puede utilizarse para ampliar las ramas de análisis, incluyendo las capacidades de IA para la predicción o la categorización. Por ejemplo, se pueden recuperar los tweets locales de los días en que se tomaron las fotos.

También se podría incluir una pequeña base de datos como SQLite para gestionar mejor los datos. Los conectores para gestionar bases de datos cubren casi todas las posibilidades, ya sean SQL, Databricks o alojadas en la infraestructura de Azure o AWS.

Sólo teniendo en cuenta la parte de automatización, ya valdría la pena utilizar este tipo de herramientas.