Este artículo relata la importancia y versatilidad de los scripts... computacionales, enfocándolo a tareas de geoprocesamiento en los sistemas de...

Anuncio
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
Documentos relacionados
Descargar