El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 Este artículo relata la importancia y versatilidad de los scripts a la hora de automatizar tareas computacionales, enfocándolo a tareas de geoprocesamiento en los sistemas de información geográfica (SIG), gracias a su integración con el software ArcGIS. Para esta labor emplearemos el lenguaje de programación Python el cual es muy fácil de aprender y de utilizar, además de que viene integrado a ArcGIS desde la versión 9.0 I. Introducción Las herramientas informáticas en la actualidad realizan un sinnúmero de funciones que requieren de mucho tiempo para aprenderlas a utilizar, a pesar de esto no hacen todas cosas que necesitamos ni cómo las necesitamos. Por estas razones este tipo de herramientas permiten su personalización para poder ser adaptadas por los usuarios a su forma de trabajo y a sus necesidades. Existe una manera rápida de personalización que es a través de Scripts, éstos son un conjunto generalmente corto de instrucciones o secuencias de código sin compilar que son ejecutadas por un software que las interpreta y que permiten realizar acciones para automatizar tareas. Los Sistemas de Información Geográfica (SIG) son herramientas robustas pero en algunos casos requie ArcGIS integra varios lenguajes de programación que permiten adaptarlo a las necesidades y requerimi Desde la versión 9, Arcgis permitió la elaboración de scripts de una forma rápida y sencilla, de tal mane // Desde esta versión se incorporó en la instalación de ArcGIS el lenguaje Python, el cual es muy sencillo y fácil de aprender, es un lenguaje "abierto", orientado a objetos, además de ser muy útil para las labores de geoprocesamiento. Por estas razones encaminamos nuestro proyecto de la materia a este poderoso de lenguaje. Python no solamente es un lenguaje para escribir scripts, también posee soporte y estructura para realizar programas largos con muchas líneas de código, es un lenguaje de muy alto nivel y ofrece muchos tipos de datos y el chequeo de errores es mucho más sencillo que con otros lenguajes de programación. Python permite dividir programas en módulos que pueden ser reusados en otros programas escritos en Python y en otros lenguajes, pues viene con una amplia colección de módulos predefinidos que pueden ser usados como base para otros programas escritos en el mismo lenguaje. 1 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 Python es un lenguaje interpretado, lo cual ahorra tiempo pues no es necesario compilar. Este lenguaje no requiere ni obliga a la definición del tipo de dato de las variables, tampoco requiere escribir punto y coma(;) después de cada línea pero si es bastante delicado con la indentación pues los bloques de código requieren sangría de acuerdo a cómo estos sean escritos. El siguiente ejemplo ilustra la facilidad de uso de Python En el gráfico anterior se observa que no es necesario definir el tipo de variable incluso tampoco es necesario definir las variables, pues con solo escribir su valor y el operador se pueden obtener resultados de forma inmediata sin necesidad de compilar el código, esto permite utilizar a Python como una calculadora rápidamente. II. Metodología En nuestro proyecto pretendemos explicar cómo a través de Python se pueden escribir sentencias de código que permiten realizar tareas de geoprocesamiento, para esto explicaremos en este artículo un script que permite cortar (clip) con un shapefile uno o más shapefiles ubicados dentro de un workspace y ubicar el resultado en una carpeta o workspace de salida, teniendo en cuenta un "cluster tolerance" o tolerancia de coincidencia. Para la elaboración de este script en python es necesario: 2 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 A. Preparación de la información y de la herramienta Python En esta etapa emplearemos información correspondiente al tutorial de ArcGIS 9.2, ubicaremos los shapefiles de corte y a ser cortados dentro de una carpeta o workspace llamada San Diego. Debemos tener instalado ArcGIS 9.0 o superior y verificar la versión de Python instalada y de acuerdo a esto descargamos e instalamos la herramienta PythonWin del website de Python (Python.org), esta herramienta le agrega ambiente gráfico a Python, lo cual facilita las labores de escritura, compilación y depuración de errores a la hora de escribir código Python. B. Escritura del script El script lo vamos a escribir dentro del ambiente gráfico Pythonwin, para esto debemos ejecutarlo, lo encontramos instalado en inicio, todos los programas, Python 2.x, Pytonwin. Ahora vamos a crear un nuevo script, para esto vamos al menú File, New, Python Script y OK. A continuación vamos a escribir el siguiente código: import win32com.client, sys, os 3 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 El código anterior importa los módulos de las librerías estándar que van a ser utilizadas en el desarrollo del script. win32com.client: Apoya la comunicación entre Pythom y COM IDispatch. COM IDispatch: habilita a los lenguajes interpretados basados en texto utilizar objetos COM. COM posibilita reutilizar módulos y habilita la comunicación entre ellos. El modulo Sys permite ingresar información por parte del usuario. El modulo OS provee facil acceso a la mayoría de las herramientas fundamentales del sistema operativo. Ahora vamos a crear el objeto geoprocesador, escribiendo la siguiente línea: GP = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1") En este objeto es donde están disponibles las herramientas de geoprocesamiento de ArcGi, las cuales usaremos para realizar el script. Este script requiere de cuatro parámetros para funcionar por medio del siguiente código: GP.workspace = sys.argv[1] El anterior código requiere una carpeta o workspace donde están ubicados los shapefiles a ser cortados y el shape que los corta. clipFeatures = sys.argv[2] El parámetro de la línea anterior es el shapefiele con el cual se hará el clip. outWorkspace = sys.argv[3] El parámetro de la línea anterior es el workspace de salida donde quedarán ubicados los shapes cortados. clusterTolerance = sys.argv[4] El parámetro de la línea anterior es la tolerancia de corte y es opcional. La sentencia siguiente, TRY define el comienzo de bloque de código que será manipulado por 4 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 un manejador de excepciones, Python usa los bloques try/except para manipular errores inesperados durante la ejecución. try: La siguiente línea obtiene una lista de shapesfiles ubicados dentro del workspace previamente definido: fcs = GP.ListFeatureClasses() La siguientes sentencias recorren la lista de shapefiles fcs.Reset() fc = fcs.Next() while fc: Las siguientes líneas validan el nuevo nombre de los shapefiles cortados y que serán puestos en el workspace de salida, el método ValidateTableName es usado para asegurar la validez del nombre y ruta de salida para el workspace de salid: 5 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 outFeatureClass =workspace outWorkspace + "/"demás + clip GP.ValidateTableName(fc,outWorkspace) Las generada mismo: siguientes del mismo anterioridad líneas de código y verifican quehacen los que el si el no deshape sea los shapefiles tenido con elencual cuenta dese lasvapara lista hacer de sershapefiles elcortado corte está con él ifdentro str(fc) !=con str(os.path.split(clipFeatures)[1]): GP.Clip(fc, clipFeatures, outFeatureClass, clusterTolerance) fc = fcs.Next() except: GP.AddMessage(GP.GetMessages(2)) print GP.GetMessages(2) El #(numeral): script debe quedar como elerrores siguiente, se puede comentar el código anteponiendo elvamos símbolo C. Ejecución script un nombre. su de ejecución es necesario guardar el vamos al menú file,muestra asaycontinuación: le asignamos Para la barra saber herramientas sidel el código tiene y damos clicyaensea elscript, ícono de escritura, "check", decomo sintaxis se osave de indentación a 6 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 Unaherramientas de vez revisados como los errores, se muestra ejecutamos a continuación: el script como mediante el ícono "Run" de la barra 7 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 toleracia, Luego script espacio yaparece explicados laun ruta ejemplo del un cuadro Workspace, previamente, de sería: diálogo la ruta donde esto con el debemos debemos shapefiel escribir ingresar de corte, enlos "arguments" el workspace parámetros separado de solicitados salidapor y una por un el C:San_Diego C:San_Diegostudy_quads.shp C:San_Diegosalida 1 de esto La siguiente figura ilustra mejor lopara anterior: 8 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 Dejamos lo demás por defecto y hacemos clicshapefiles. en OK. AIII.continuación se ejecuta el script y corta los Aplicaciones Prácticas Python y los SIG Este lenguaje provee muchas opciones de integración dentro de los SIG, puesto que posee capacidades de plataforma cruzada y fácil integración con otros lenguajes como por ejemplo C, C++, FORTRAN y Java. Python posee una gran cantidad de librerías y herramientas desarrolladas para el trabajo con datos geográficos e integración SIG, ya que permite la manipulación de shapefiles y formatos raster, así como labores más sofisticadas como la interoperabilidad con ArcSDE, bases de datos y servicios Web. Para el trabajo con vectores python posee una librería "open source" llamada Shapelib la cual funciona con shapefiles; para el trabajo con elementos raster integra la librería (open source) GDAL que permite trabajar con diversos formatos como ArcInfo grids, JPEG 2000, BSP, United States Geological Survey digital elevation model, entre otros. GDAL en combinación con Python tiene la facilidad para escribir operaciones de algebra de mapas y generar los resultados en los formatos soportados. Python es apropiado para el desarrollo web, pues este tipo de desarrollo es mucho más rápido que con tecnologías como Java o .NET. Existen muchas herramientas disponibles para desarrollo Web usando Python como Zope, MapServer, Twisted, entre otros. 9 / 10 El lenguaje Python y su funcionalidad con los Sistemas de Información Geográfica mediante ArcGIS 9 IV. Conclusiones y Recomendaciones Phyton provee un completo conjunto de herramientas para GIS combinado con ArcGIS las posibilidades son casi ilimitadas. La tecnología web está siendo soportada por Python facilitando las labores de programación de rico y amplio contenido web. Los scripts permiten la automatización de tareas en muchos programas y son cada vez más fáciles de realizar por personal no programador. Para la personalización de software es altamente recomendable leer la documentación contenida en los software, puesto que esta permite conocer todas las funcionalidades, librerías, clases, métodos, etc, así como todas las capacidades de personalización contenidas en los lenguajes de programación incrustados en estos. Referencias Bibliográficas [1] C. Trucker, Writing Geoprocessing Scripts With ArcGIS, Redlands,CA: ESRI 2005, pp. 17-27. [2] M. Lie Hetland, Beginning Python: From Novice to Professional. Berkeley, CA: Apress, 2005. [3] H. Butler, AGuide to the Python Universe for ESRI Users, Iowa State University. [4] es.wikipedia.org. [5] http://www.tierradenomadas.com/diccionario.phtml?S Fuente: Bernardo Arango G., David Arenas H., Rafael Botero M. 10 / 10