Confieso que programar en los SIG -Sistemas de Información Geográfica- es una de mis actividades preferidas. Puedes sentirte muy satisfecho al crear un espléndido mapa o alcanzar resultados de un análisis, pero si a su vez automatizas parte o la totalidad del proceso esto incrementa ese sentimiento.
¿Un profesional del área geoespacial debe aprender a programar?
Sí, existe un montón de razones intelectuales, operativas y económicas. Por enumerar:
El presente y futuro laboral: aprender a programar es una de las recomendaciones para prepararse para los grandes cambios en el mercado laboral, así lo señala Andrés Oppenheimmer en su libro «¡Salvese quien pueda! El futuro del trabajo en la era de la automatización» (1). Esto es una realidad para casi todas las profesiones, incluso en medicina se utiliza Inteligencia Artificial (AI) para apoyar diagnósticos y en un futuro cercano se utilizaran, cada vez más robots, que requerirán programadores.
En tiempos de Pandemia y posterior a ella, el trabajo a distancia ya no es una opción, sino una necesidad. La automatización de procesos se revaloriza, ya sea que minimice el número y/o el contacto entre trabajadores, mientras disminuye los tiempos de entrega sin menoscabo de la calidad del producto. El confinamiento ha conllevado a un incremento exponencial de consumo de medios digitales, consecuencia de inmovilizar en pequeños espacios a una sociedad, hasta ahora, hiper-activa. La demanda y las posibilidades de obtener ganancias con aplicaciones web y para dispositivos móviles, especialmente los geoespaciales se incrementan. Acotando, todo esto en el marco de una galopante recesión económica global.
Demanda laboral: es una habilidad cada vez más requerida, aunque la empresa no lo especifique (para no ser restrictivos o por simple desconocimiento), probablemente este implícito en sus requerimientos: Por ejemplo el GIS web requiere experticia en los hipertextos html, CSS y en lenguajes como Javascript. Disposición para trabajar bajo presión, ser innovador, mejorar y automatizar procesos, grandes exigencias y al mismo tiempo frases comunes en las ofertas laborales, solo podrán alcanzarse con conocimientos de programación.
Operatividad: un conocimiento básico que permita encadenar procesos es de gran beneficio para el empleado y la empresa. El primero podrá replicar el trabajo sin mayor esfuerzo, por otro lado, la empresa no dependerá del conocimiento y habilidad exclusiva de un empleado. Los tiempos de ejecución disminuirán significativamente.
Intelectual y profesional: la actitud y aptitud de un profesional en el campo geográfico con conocimientos en programación es muy diferente al que no los posee, no necesita ser un experto ni contar con estudios formales como programador, pequeños modelos y scripts pueden generar un gran impacto.
Ah mi parecer el aporte intelectual es el más significativo, el desarrollador SIG tiene una mayor compresión de los procesos, no está atado a un programa o herramienta de la interfaz, la actualización de versiones pasa a ser algo secundario, se disminuye la instalación y uso de programas complementarios, debido a que si un proceso no existe él puede crearlo.
¿Qué lenguaje de programación debe aprender un profesional de las ciencias geográficas?
A mediados del año pasado escribí un artículo en el que sugiero y sustento el uso de Python en QGIS como lenguaje, programa y ambiente de desarrollo para el que desea comenzar en el mundo de la programación SIG, «¿Por que programar con Python en QGIS es la mejor opción?» (2) y una de las razones para hacerlo es porque Python en QGIS es fácil de aprender, como se puede comprobar en está «Introducción a la programación con Python en QGIS 3» (3).
Recientemente Anita Graser realizó un podcast que coincide con mi argumento a la vez que brinda una nueva perspectiva (muy recomendable), denominado «¿Porque los profesionales GIS deben aprender Python» (4).
Por su parte, Mark Altaweel, en su artículo en GIS Lounge, «Python and Geospatial Analyst» (5) expone: «el hecho de que haya muchas bibliotecas de Python disponibles y que la lista esté creciendo ayuda a los usuarios a tener muchas opciones para aprovechar el código existente y añadir funcionalidades más potentes a sus herramientas. Plataformas como QGIS permiten a los usuarios introducir sus propias extensiones construidas en Python, fomentando aún más el desarrollo y el uso de este lenguaje entre los especialistas en SIG. Este crecimiento pone de relieve que a medida que los usuarios de SIG y los analistas geoespaciales desarrollan sus habilidades, Python podría ser el mejor lenguaje en el que centrarse. En relación con otros lenguajes de alto nivel, Python es más fácil de usar, ya que es flexible en cuanto al estilo de codificación y puede aplicarse dentro de diferentes paradigmas, incluidos los enfoques imperativos, funcionales, de procedimiento y orientados a los objetos. Para los analistas geoespaciales, Python se ha convertido en una herramienta indispensable para desarrollar aplicaciones y análisis potentes».
Otra razón de peso, es que «Python puede ser el puente para los profesionales espaciales y no espaciales» (Anita Graser 2020), como ampliamente argumente en el artículo Ciencia de datos con Python en QGIS, potencial inexplorado (6).
¿Python fue siempre la mejor opción para los profesionales GIS?
«No siempre estuvo claro que Python sería el mejor lenguaje para programar en GIS. No hasta que ArcPy y PyQGIS salieron hace unos 12 años. Estas dos implementaciones de Python nos enseñaron que Python es versátil y fácil de aprender, y que se pueden manipular datos con él. ¿Y quién en el mundo de los SIG no querría usar una herramienta flexible para transformar sus datos de un archivo o una base de datos en algo utilizable? Python hace precisamente eso» (Anita Graser 2020).
Python ha venido decantando en las últimas décadas entre una multitud de lenguajes como la mejor opción para desarrollar en SIG, esta incertidumbre me mantuvo alejado de la programación hasta hace relativamente poco.
Mis inicios como programador SIG
Mis inicios como programador SIG se remontan a principios del 2000 con el software ArcView3 y su lenguaje Avenue, pero fue desechado por ESRI para dar pasos a la muy conocida plataforma ArcGis, el siguiente articulo refleja mi opinión (y trauma :-D ) de este cambio tan drástico ¿Porque aun extraño el ArcView3x?.
La transición de ArcView3 a ArcGis no fue un problema, pero decidir cuál lenguaje aprender si lo era, existía una gran variedad de opciones, por ejemplo ArcGis permitía programar con Visual Basic para Aplicaciones, Python, Java, ArcObjects (API e interfaz de desarrollo) y otras opciones. Visual basic era la mejor opción pero luego (tengo entendido) se dio preferencia a Visual Net.
Si desean tener una idea de la diversidad de lenguajes, lo amplio de este campo, sus múltiples aplicaciones y terminología técnica, les recomiendo estos artículos que publique hace un tiempo (7), (8) y (9).
Luego conocí el software libre, (más bien me lo exigió un proyecto) primero gvSig y finalmente QGIS, ciertamente la solidez y potencia de este último capturo mi interés.
El dilema, ahora, ¿qué lenguaje debía aprender?, en este punto la respuesta era evidente, ambos programas implementan versiones de Python como lenguaje de scripting. Destacando QGIS, por su completa integración con Python.
El riesgo: por más apasionante que pueda ser aprender una nueva habilidad requiere tiempo, esfuerzo y dedicación, que podría no ser recompensada al corto plazo. Ante la incertidumbre, antes de comenzar la empresa de aprender un nuevo lenguaje, podrías preguntarte:
¿Python es algo momentáneo o permanecerá por mayor tiempo en el mundo SIG?
Según Anita Graser (2020) «la popularidad de Python sigue en aumento, y no hay muchos contendientes en el horizonte. Python tiene algo para todos. Es fácil entrar como principiante, y es eficiente, especialmente si puedes escribir algunas partes en CPython. Una vez que te metes en Python, no hay muchas razones por las que querrías abandonarlo. La gente de la comunidad Java, y la gente que trabaja en los entornos de Big Data (Hadoop y Spark), han empezado a construir un puente hacia Python. PySpark permite a Python interactuar con máquinas virtuales de Java y con Big Data».
Una de las grandes ventajas de Python es su flexibilidad, funciona como un pegamento (unión) de diversas tecnologías, «así el programador puede sencillamente instalar y utilizar las bibliotecas Python especializadas que necesita, esto es muy directo, pero más aún, sirve para integrarlas con los SIG de escritorio» (Anita Graser 2020). Es un integrador de tecnologías, incluso bibliotecas, escritas en otros lenguajes como GDAL implementan Python.
Python es el principal lenguaje de scripting de los SIG de escritorio libres y comerciales, reemplazarlo no será tarea fácil. A su vez, gana continuamente aceptación en campos como la ciencia de datos y desarrollo web.
Python no siempre es la opción adecuada
«Si trabajas con un programa basado en otro lenguaje, por ejemplo Java, no es recomendable que introduzcas Python, sin una razón válida para hacerlo. Sería mejor que te quedaras con el mundo de Java. Hay bibliotecas para uso geoespacial como GeoTools. Mezclar y combinar lenguajes no es una buena idea» (Anita Graser 2020).
Si estás empezando desde cero, y tu trabajo está relacionado con los SIG y/o ciencia de los datos, entonces usa Python.
¿Hay algún otro lenguaje complementario que deba aprender?
El SIG ahora tiene una gran presencia en la web y la mayoría de estas tecnologías están basadas en Javascript, paralelamente deberás aprender html y css.
Personalmente opino que, Javascript es el otro lenguaje que debes considerar aprender, es más, si tu interés se centra en aplicaciones web, estaría en el primer nivel de prioridad, es mucho más que un lenguaje de script, tiene una funcionalidad mucho más amplia de lo podrías imaginar, oficialmente es catalogado como lenguaje de script de objetos.
De forma similar a Python las bibliotecas de Javascript para mapas web y visualización de datos, crecen y mejoran continuamente, por señalar algunas: OpenLayers, Leaflet, CARTO, MapBox GL JS, D3, Google Maps API, Cesium, Node, otras.
Ya sea que desees crear un mapa interactivo, o mucho más, por ejemplo, capacidades de análisis espacial, geocodificación, 3D etc, Javascript es la solución.
Anita Graser, a su vez, recomienda para manejar grandes conjuntos de datos Scala y Java.
Enlaces relacionados
- (1) ¡Salvese quien pueda! El futuro del trabajo en la era de la automatización (2018), un libro de Andrés Oppenheimmer
- (2) ¿Por que programar con Python en QGIS es la mejor opción? (abril 2019) por Luis Eduardo Pérez
- (3) Introducción a la programación con Python en QGIS 3 (junio 2019) por Luis Eduardo Pérez
- (4) ¿Porque los profesionales GIS deben aprender Python? (2020) por Anita Graser
- (5) Python and Geospatial Analyst (2020) por Mark Altaweel
- (6) Ciencia de datos con Python en QGIS, potencial inexplorado un artículo de Luis Eduardo Pérez en Nosolosig
- (7) Introducción a la programación SIG por Luis Eduardo Pérez
- (8) Mas allá de los SIG Parte I por Luis Eduardo Pérez
- (9) Mas allá de los SIG Parte II por Luis Eduardo Pérez
- SIG con Python en QGIS 3, un curso en Udemy de Luis Eduardo Pérez
- Ciencia de Datos con Python en QGIS 3.4 un curso en Udemy de Luis Eduardo Pérez
Luis Eduardo Perez Graterol es ingeniero de recursos naturales