10 Jul 2019 Geopython 2019
El año pasado asistí a la conferencia GeoPython 2018 sin ningún conocimiento previo más allá de su programa. La experiencia fue provechosa y muy interesante. Es por ello que este año decidí volver a asistir a GeoPython 2019. Ahora con más conocimiento de lo que podía esperar.
El contexto
La conferencia tuvo lugar los días 24, 25 y 26 de Junio de 2019 de nuevo en la ciudad de Basilea (Suiza). También fue organizada por el Instituto de Geomática de la Escuela Técnica del Noroeste de Suiza. En cambio, la sede de GeoPython 2019 se desplazó unos metros hasta un nuevo edificio adquirido recientemente por la institución.
Como su nombre indica, la conferencia se centra en el uso del lenguaje de programación Python en el mundo de los Sistemas de Información Geográfica y las aplicaciones geoespaciales.
El formato
En GeoPython 2019 se dió cabida a 3 formatos de comunicaciones distintos: talleres, comunicaciones y presentaciones rápidas.
Los talleres son un formato interactivo de entre 2 y 3 horas de duración y en el que se enseñan aspectos prácticos. A menudo requieren o se prestan para que el asistente realice ejercicios. Como el año pasado, este año se realizaron en aulas tradicionales.
Pero a diferencia del año anterior, esta vez las aulas estaban mejor preparadas para las necesidades de este tipo de asistente (con acceso a puntos de corriente para enchufar el portátil). Se realizaron el primer día y en total se llevaron a cabo 6 talleres distintos (2 por la mañana y 4 por la tarde).
Las comunicaciones se desarrollaron a lo largo de los dos siguientes días, agrupadas en sesiones de unas 2 horas en las que se sucedían entre 4 y 5 comunicaciones, según el bloque.
La organización reservó un par de huecos en la agenda (tanto en el segundo como el tercer día) para dar cabida a otro formato también bastante habitual en las conferencias: las presentaciones rápidas (o lightning talks). Estas consistían en presentaciones muy breves (de unos 5 minutos). Cualquiera que tuviese algo que contar podía proponer su lightning talk durante la mañana y la presentación se llevaba a cabo al final de la misma.
Los talleres
Introducción a Python
El primer taller al que asistí fue «Python from “Hello World” to “Fit for GeoPython” in 180 Minutes» de Miroslav Šedivý. Para mucha gente con experiencia con este lenguaje este taller era demasiado básico. Dado que en UNIGIS Girona también tenemos un módulo de Programación SIG con Python, a mi me interesaba ver cómo otra persona enfocaba el tema, aunque en un formato muy distinto y con un alcance menor. Fue muy interesante, aunque sospecho que sólo para los neófitos de Python y para los docentes.
Introducción a GeoPandas
Ya por la tarde, también asistí al taller «Introduction to geospatial data analysis with GeoPandas and the PyData stack» de Joris Van den Bossche, desarrollador del core de Pandas y encargado del mantenimiento de GeoPandas. Este taller (o una primera de versión de él) ya lo realizó el mismo Joris en la GeoPython 2018 y, aunque en ese momento ya me gustó, no fui bien preparado para realizar los ejercicios propuestos y me quedé con ganas de más. Este año ya iba más preparado y disfruté como un enano realizando el taller. Aunque también era un taller introductorio, para quien no ha usado nunca Pandas y GeoPandas es extremadamente interesante y Joris sabe explicarse muy bien. Este taller está disponible en el Github de Joris.
Wikidata
El último taller del día al que asistí fue «Wikidata – a new source for geospatial data» de Knut Hühne. Fue un taller en el que tuve sensaciones muy distintas. Por un lado, fue apasionante conocer algo más a fondo el proyecto Wikidata. Para quien lo desconozca, creo que la mejor manera de describirlo es como una wikipedia con datos estructurados (también geometrías), de modo que podemos acceder a ella programáticamente desde nuestros programas y algoritmos. Es un grafo de conocimiento global en el que podemos encontrar prácticamente toda la información de Wikipedia pero de forma estructurada.
Ofrece una API y un lenguaje de programación específico para su consulta llamado SPARQL y ahí es donde yo me encontré con más problemas. Aunque uno puede pensar que es una forma de SQL (por su nombre y parte de su sintáxis) en realidad no lo es y es por ello que puede resultar confuso para quien tiene amplios conocimientos de SQL, porque tiende a leer e interpretar las expresiones SPARQL de la forma equivocada. No me pareció que la curva de aprendizaje de SPARQL fuese sencilla, pero quizá valga la pena dado su potencial. Podéis ver la presentación usada para este taller en el sitio web de Knut.
Durante este primer día se realizaron un total de 6 talleres, organizados en dos salas simultáneas. Los 3 talleres a los que no pude asistir estaban relacionados con la teledetección y el machine learning.
Las presentaciones
En general las presentaciones fueron bastante interesantes. No parece buena idea dar una explicación exhaustiva de las presentaciones a las que pude asistir pero de lo que vi destacaría las siguientes:
Segundo día
GeoHealthCheck (Just van den Broecke)
Ésta es una herramienta desarrollada por un grupo de usuarios de Github llamado GeoPython. La herramienta tiene por finalidad definir y calcular métricas para la evaluación de la calidad del servicio (QoS, o Quality of Service) de un web service de OGC (WMS, WFS, …).
A Day Has Only 24±1 Hours (Miroslav Šedivý)
Aunque la comunicación se centraba bastante en explicar la historia y algunas curiosidades de la configuración actual de las franjas horarias, también hizo un resumen de buenas prácticas a la hora de trabajar con tipos de datos temporales con Python.
Spotting Sharks with the TensorFlow Object Detection API (Andrew Carter)
Aunque personalmente no tengo experiencia en el campo del Machine Learning esta comunicación fue muy interesante para entender algunos de los conceptos y problemáticas habituales de este tipo de algoritmos en el ámbito del reconocimiento de objetos en imágenes.
Scientific Geo-Computing using Python. How we teach it at ITC (Luis Calisto)
En esta comunicación Luis explicó cómo forman ellos en Python a sus estudiantes del International Institute for Geo-Information Science and Earth Observation (ITC). Esta fue otra comunicación que tenía mi interés por los mismos motivos que el taller de introducción a Python del día anterior. Para mi fue muy interesante ver tanto las cosas que hacemos de la misma manera como aquellas que no.
PyQGIS the comfortable way – tricks to efficiently work with Python and QGIS (Marco Bernasocchi)
Siempre es un placer escuchar a uno de los desarrolladores de la versión móbil de QGIS. Fue una comunicación con mucha participación de los asistentes, con algunas cosas ya conocidas pero también con otras que aprendí ese día.
Tercer día
Accelerating distances calculations using GPU (Serhii Hulko)
Aunque esto también cae un poco lejos de mi campo de trabajo habitual fue muy interesante ver el benchmarking presentado. La operación de cálculo de vecinos cercanos podía procesar unos 2000 puntos en un minuto usando Python sin ninguna optimización. Serhii nos demostró que, usando algunos mecanismos de optimización y realizando los cálculos en la GPU, la misma operación podía llegar a procesar unos 3 millones de puntos en un minuto.
Working with 3D city models in Python (Balázs Dukai)
En esta comunicación se presentó un formato alternativo al CityGML que parece mucho más fácil de gestionar y usar: CityJSON. La verdad es que no he hecho ninguna prueba, pero efectivamente daba la impresión de ser un formato mucho más simple, algo que puede permitir un mayor uso por parte de los desarrolladores. También reduce el tamaño de los datos, siendo capaz de reducir un CityGML de unos 3GB a un CityJSON de unos 300MB.
PySnooper – Never use print for debugging again (Ram Rachum)
PySnooper es una herramienta muy interesante a medio camino entre el debugging más manual y el debugging mediante complejas herramientas de logging. La idea parece muy simple: un decorador de Python que lo que hace, resumidamente, es hacer un print en cada línea de tu función o método. En realidad es un poco más elaborado: puedes indicar que controle el estado de una variable y haga un print en la consola cada vez que cambie su valor. Aparte de sus funcionalidades, que no son pocas, una de las grandes ventajas de PySnooper es que resulta muy sencillo de incorporar a cualquier proyecto (pip install + import) y no requiere configuración.
Las Lightning talks
Las presentaciones rápidas fueron muchas menos que las comunicaciones y hubo de todo. Me quedé con un par de ellas que me llamaron la atención especialmente:
Chenfu Wang
Nos enseñó la librería Pyecharts, una interfaz de Python para Echarts.js, un potente motor de gráficos web que no olvida el mundo geo y con una penetración enorme en países asiáticos. Él mismo presentó una comunicación (Geomapping with Pyecharts) a la que no pude asistir.
Robert Leckenby
Nos habló de Software Underground, una comunidad de usuarios (que se llaman a sí mismos swungers) interesados en cualquiera de las disciplinas que estudian la Tierra y la informática. Esta comunidad se constituye alrededor de un canal de Slack.
El acompañamiento
Todo plato principal lleva su acompañamiento, aquello que a menudo no figura en la carta pero que hace el plato más redondo y apetitoso. En este caso hablamos de la organización, las dietas, el edificio, la ice breaker party o la cena del segundo día.
La organización, como ya ocurrió el año pasado, hizo un muy buen trabajo. Se percibe un ambiente familiar, algunos de los asistentes ya se conocen de otros años y el trato es muy informal y agradable tanto entre asistentes como organizadores.
Las pausas fueron muy correctas, con café, infusiones, agua y zumos, además de pastas y fruta. La comida era la del comedor de la universidad, con 2 menús variados y de una calidad muy correcta. Quizá se podría mejorar el tiempo que teníamos para comer. Dado que este año había más asistentes que el pasado, en el momento de comer se hacían largas colas y cuando terminabas de comer ya casi era hora de empezar la siguiente sesión.
Como en todas las conferencias, la ice breaker party y la cena oficial fueron entornos ideales para conocer a gente, hablar del trabajo (o no) de manera distendida y con aún menos formalismos que durante el día.
Lo peor de la conferencia fue que coincidió con plena oleada de calor y, en Basel, eso significa sudar y sudar todo el día.
Los números
Si el año pasado nos reunimos 163 personas de 31 países distintos, en la GeoPython 2019 esta vez éramos 226 asistentes que veníamos de más de 40 países distintos. Parece, pues, que la conferencia goza de buena salud y que la comunidad geo internacional tiene un fuerte interés en Python (o que los programadores de Python tienen interés en el mundo geo).