Logo Studenta

FUNDAMENTOS CON PYTHON ESPAÑOL

¡Este material tiene más páginas!

Vista previa del material en texto

Introducción a
Programación y
Fundamentos con
chaowei yang
Traducido del inglés al español - www.onlinedoctranslator.com
https://www.onlinedoctranslator.com/es/?utm_source=onlinedoctranslator&utm_medium=pdf&utm_campaign=attribution
Introducción a SIG
Programación y
Fundamentos con
Python y ArcGIS®
http://taylorandfrancis.com
Introducción a SIG
Programación y
Fundamentos con
Python y ArcGIS®
chaowei yang
Con la colaboración de
Manzhu Yu
Qunying Huang
Zhen Long Li
Sol mínimo
kai liu
yongyao jiang
Jizhe Xia
Prensa CRC
Grupo Taylor & Francis
6000 Broken Sound Parkway NW, Suite 300 
Boca Raton, FL 33487-2742
© 2017 por Taylor & Francis Group, LLC
CRC Press es un sello de Taylor & Francis Group, una empresa de Informa
No reclamar obras originales del gobierno de EE. UU.
Impreso en papel libre de ácido
Libro estándar internacional número 13: 978-1-4665-1008-1 (tapa dura)
Este libro contiene información obtenida de fuentes auténticas y de gran prestigio. Se han realizado esfuerzos 
razonables para publicar datos e información confiables, pero el autor y el editor no pueden asumir responsabilidad 
por la validez de todos los materiales o las consecuencias de su uso. Los autores y editores han intentado localizar a los 
titulares de los derechos de autor de todo el material reproducido en esta publicación y se disculpan con los titulares de 
los derechos de autor si no se ha obtenido el permiso para publicar de esta forma. Si algún material con derechos de 
autor no ha sido reconocido, por favor escríbanos y háganoslo saber para que podamos rectificar en cualquier 
reimpresión futura.
Salvo que lo permita la Ley de derechos de autor de EE. UU., ninguna parte de este libro puede reimprimirse, 
reproducirse, transmitirse o utilizarse de ninguna forma por ningún medio electrónico, mecánico o de otro tipo, ahora 
conocido o inventado en el futuro, incluidas las fotocopias, microfilmaciones y grabaciones, o en cualquier sistema de 
almacenamiento o recuperación de información, sin el permiso por escrito de los editores.
Para obtener permiso para fotocopiar o usar material electrónico de este trabajo, acceda awww. derechos de 
autor.com(http://www.copyright.com/) o comuníquese con Copyright Clearance Center, Inc. (CCC), 222 
Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC es una organización sin fines de lucro que 
proporciona licencias y registros para una variedad de usuarios. Para las organizaciones a las que la CCC les 
haya otorgado una licencia de fotocopia, se ha dispuesto un sistema de pago separado.
Aviso de marca registrada:Los nombres de productos o empresas pueden ser marcas comerciales o marcas 
comerciales registradas, y se usan solo para identificación y explicación sin intención de infringir.
Visite el sitio Web de Taylor & Francis en 
http://www.taylorandfrancis.com
y el sitio web de CRC Press en 
http://www.crcpress.com
http://www.copyright.com/
http://www.copyright.com/
http://www.copyright.com/
http://www.taylorandfrancis.com
http://www.crcpress.com
Para los padres de Chaowei Yang, Chaoqing Yang y Mingju Tang,
por inculcar continuamente la curiosidad y el espíritu explorador
http://taylorandfrancis.com
Contenido
Prefacio................................................. .................................................... ..................XV 
Agradecimientos .................................................. .............................................xxx 
Editor................................................. .................................................... ................XXIII 
Colaboradores.................................................. .................................................... .....xiv
Sección IVisión general
1. Introducción.................................................... .................................................... .3
1.1 Hardware y software de la computadora ............................................... .......3
1.2 SIG y Programación ............................................... ..........................5
1.3 Pitón................................................... .................................................... ...7
1.4 Clase y objeto .................................................. ......................................9
1.5 Modelos de datos SIG ............................................... .....................................10
1.6 UML .............................................. .................................................... ....11
1.7 Experiencia práctica con Python......................................... ......14
1.8 Resumen del capítulo.................................................... ................................dieciséis
Problemas................................................. .................................................... .......17
2. Programación Orientada a Objetos.................................................... ...............19
2.1 Lenguaje de Programación y Python ............................................... .19
2.2 Clase y objeto .................................................. .....................................21
2.2.1 Definición de clases ............................................. .......................21
2.2.2 Generación de objetos ............................................. .....................23
2.2.3 Atributos .............................................. ....................................23
2.2.4 Herencia ............................................... ................................25
2.2.5 Composición .................................................. ...............................26
2.3 Punto, polilínea y polígono ............................................... ...................27
2.4 Experiencia práctica con Python......................................... ......30
2.5 Resumen del capítulo................................................... ................................30
Problemas................................................. .................................................... .......31
Sección II PitónProgramación
3. Introducción a Python.................................................... ...............................35
3.1 Soporte orientado a objetos ............................................... .......................35
3.2 Sintaxis .................................................. .................................................... .36
3.2.1 Sensibilidad entre mayúsculas y minúsculas ............................... .........................36
3.2.2 Caracteres especiales ............................................. .....................36
viii
viii Contenido
3.2.3 Indentación ............................................... ................................36
3.2.4 Palabras clave .............................................. ....................................37
3.2.5 Asignaciones Múltiples ............................................. ..............38
3.2.6 Espacio de nombres.................................... ................................38
3.2.7 Alcance .............................................. ..........................................38
3.3 Tipos de datos .................................................. .............................................40
3.3.1 Tipos de datos básicos ............................................. ........................40
3.3.2 Tipos de datos compuestos ............................................. ...............42
3.4 Misceláneos .............................................. ......................................48
3.4.1 Variables .............................................. .....................................48
3.4.2 Estilo de código ............................................. ....................................49
3.5 Operadores................................................ .............................................................50
3.6 Declaraciones .............................................. ............................................533.7 Funciones .................................................. .............................................................54
3.8 Experiencia práctica con Python......................................... ......56
3.9 Resumen del capítulo................................................... ................................56
Problemas................................................. .................................................... .......57
4. Estructura de control del lenguaje Python, entrada/salida de archivos,
y manejo de excepciones.................................................... ..........................61
4.1 Toma de decisiones .............................................. ................................61
4.2 Bucles ................................................ .................................................... ...64
4.3 Otras estructuras de control ............................................... .....................66
4.4 Entrada/salida de archivos ........................................... ....................................67
4.5 Excepciones .............................................. ............................................69
4.6 Experiencia práctica con Python......................................... ......70
4.6.1 Encuentre la distancia más larga entre dos puntos cualesquiera .......70
4.6.2 Experiencia práctica: E/S, crear y leer un archivo .........70
4.6.3 Experiencia práctica: E/S, control de flujo y archivo .........72
4.6.4 Experiencia práctica: Ingresar datos de puntos GIS
desde archivo de texto .................................................. ..........................74
4.7 Resumen del capítulo.................................................... ................................75
Problemas................................................. .................................................... .......75
5. Pensamiento de programación y visualización de datos vectoriales.....................77
5.1 Problema: visualización de datos GIS ........................................... .............77
5.2 Transformación del sistema de coordenadas ........................................... .......80
5.2.1 ¿Cómo determinar el valor de la relación? ..........................................82
5.3 Visualización de datos vectoriales ............................................... .......................84
5.4 Punto, Polilínea, Polígono ............................................... ..........................86
5.5 Pensamiento de programación.................................................. ......................87
5.5.1 Análisis de problemas ............................................. ......................88
5.5.2 Pensar en la programación ........................................... .............88
5.5.3 Igualar patrones de lenguaje de programación
y estructura .................................................. ......................89
Contenido ix
5.5.4 Implementar el programa ............................................. ..................89
5.6 Experiencia práctica con Python......................................... ......90
5.6.1 Lectura, análisis sintáctico y análisis de datos de archivos de texto ..................90
5.6.2 Crear Objetos GIS y Verificar Intersección .......................92
5.7 Resumen del capítulo.................................................... ................................95
Problemas................................................. .................................................... .......95
6. Manejo de archivos de forma.................................................... .....................................97
6.1 Manipulación de datos binarios ............................................... ...................97
6.2 Introducción al archivo de forma ........................................... .......................101
6.3 Estructura e interpretación del archivo Shapefile ..................................102
6.3.1 Estructura del archivo principal de un Shapefile ...............................102
6.3.1.1 Encabezado del archivo principal .................................. ......102
6.3.1.2 Registro de funciones ........................................... .........104
6.3.2 Estructura del archivo de índice (.shx) .................................. ...........105
6.3.3 El archivo .dbf ............................................... ...............................107
6.4 Secuencia de Programación General para el Manejo de Shapefiles.........107
6.5 Experiencia práctica con Mini-GIS ............................................... ..108
6.5.1 Visualizar polilíneas y polígonos.......................................108
6.5.2 Interpretar archivos de forma de polilínea .................................. ..109
6.6 Resumen del capítulo.................................................... ...............................113
Problemas................................................. .................................................... .....113
7. Entorno de programación Python.................................................... .....115
7.1 IDE general de Python .................................................. ............................115
7.1.1 Ventanas de programación Python .......................................115
7.1.1.1 GUI de línea de comandos ........................................... .115
7.1.1.2 Interfaz gráfica de usuario interactiva ............................... ........115
7.1.1.3 Programación basada en archivos ...............................116
7.1.2 Configuración del IDE de Python .................................. ................117
7.1.2.1 Resaltar ............................................... ...........117
7.1.2.2 Configuración General de la Ventana de 
Programación......................................... .......................118
7.1.2.3 Configuración de fuentes para la codificación ..................................118
7.1.3 Depuración ............................................... ...............................118
7.1.3.1 Error de sintaxis ............................................... .............120
7.1.3.2 Excepciones de tiempo de ejecución ..................................121
7.1.3.3 Manejo de excepciones ...............................................122
7.1.3.4 Agregar identificadores de excepción y acciones de limpieza a la 
lectura/escritura de archivos ..................123
7.2 Módulos de Python ............................................... ..................................124
7.2.1 Introducción al módulo ............................................. ..............125
7.2.2 Configurar módulos ............................................. ........................125
7.2.3 Módulos integrados del sistema ........................................... ...........126
7.3 Gestión de paquetes y Mini-GIS ............................................... ..127
X Contenido
7.3.1 Organización regular de datos GIS....................................127
7.3.2 Paquete Mini-GIS ............................................... .....................128
7.4 Experiencia práctica con Mini-GIS ............................................... ..131
7.4.1 Gestión de paquetes y Mini-GIS ..................................131
7.4.2 Ejecute y practique el paquete Mini-GIS...........................132
7.5 Resumen del capítulo.................................................... ...............................135
Problemas................................................. .................................................... .....135
8. Algoritmos de datos vectoriales.................................................... ..........................137
8.1 Centroide................................................... .............................................................137
8.1.1 Baricentro de un triángulo ............................................... ..............137
8.1.2 Baricentro de un rectángulo.................................................. ............137
8.1.3 Baricentrode un polígono ............................................... ...............138
8.2 Área.................................................. .................................................... ...139
8.2.1 Área de un polígono simple........................................... ..........139
8.2.2 Área de un Polígono con Agujero(s) ........................................... ....140
8.3 Longitud.................................................. ..........................................................141
8.3.1 Longitud de un segmento de línea recta....................................141
8.3.2 Longitud de una polilínea ........................................... ..................142
8.4 Intersección de línea.................................................... ..................................142
8.4.1 Líneas paralelas ............................................. ..........................145
8.4.2 Líneas verticales ............................................. ..........................145
8.5 Punto en Polígono ............................................... ....................................146
8.5.1 Un escenario especial ............................................. ...................146
8.6 Experiencia práctica con Python......................................... ....148
8.6.1 Usar Python para dibujar un polígono y calcular
el baricentro ................................................ ..........................148
8.6.2 Usar Python para dibujar polígonos y calcular
el área del polígono .............................................. ...............148
8.6.3 Uso de Python para dibujar segmentos de línea y
Calcular la intersección .................................................. ....148
8.7 Resumen del capítulo.................................................... ...............................150
Problemas................................................. .................................................... .....150
Sección III Algoritmos SIG Avanzados y su 
Programación enArcGIS
9. Programación ArcGIS.................................................... ...............................153
9.1 Programación de ArcGIS ............................................... .......................153
9.2 Introducción al Paquete ArcPy ............................................... ..........154
9.2.1 Funciones, clases y módulos de ArcPy ...........................154
9.2.2 Programación con ArcPy en ArcMap....................................155
9.2.3 Programación con ArcPy en la ventana de Python
fuera de ArcMap................................................... .....................156
Contenido xi
9.2.4 Uso de los documentos de ayuda.................................... ...........157
9.3 Automatización de ArcTools con Python ............................................... ...158
9.4 Acceso y edición de datos con cursores ..................................160
9.4.1 Cursor de búsqueda ............................................... ..........................160
9.4.2 Actualizar Cursor ............................................... .........................164
9.4.3 Insertar cursor.................................................... ............................164
9.4.4 NúmPy .............................................. .....................................165
9.5 Describir y enumerar objetos ............................................... ..........166
9.5.1 Describir.................................................... ....................................166
9.5.2 Lista .............................................. ............................................167
9.6 Manipulación de objetos complejos ............................................... ........169
9.7 Automatización de la producción de mapas ............................................... ............172
9.8 Creación de ArcTools a partir de secuencias de comandos......................... ..........172
9.9 Manejo de errores y mensajes ............................................... .........176
9.10 Documentos externos y recursos de video ..................................177
9.11 Implementación de cálculos de relaciones espaciales
Uso de ArcGIS ................................................. .....................................178
9.12 Resumen.................................................. ............................................180
9.13 Asignación ................................................ ........................................182
10. Algoritmo de datos ráster.................................................... ............................185
10.1
10.2
Datos ráster .................................................. .............................................185
Almacenamiento y compresión de ráster ............................................... ......186
10.2.1
10.2.2
Formatos de datos ráster .............................................. ..........................189
10.3.1
10.3.2
10.3.3
10.3.4
10.3.5
10.3.6
10.3.7
10.3.8
10.3.9
Representación de color y reproducción de trama ..................................191
10.4.1
10.4.2
Análisis de ráster................................................. ....................................196
Experiencia práctica con ArcGIS.................................................... ...198
10.6.1
10.6.2
Codificación de la longitud de ejecución ................................. ..............187
Árbol cuádruple ................................................. ...............................188
10.3
TIFF .................................................. .............................................189
GeoTIFF .................................................. ................................190
I.M.G.................................................. .............................................190
NetCDF.................................................. ..................................190
BMP.................................................. .............................................190
SVG.................................................. ........................................191
jpeg .................................................. ......................................191
GIF.................................................. .............................................191
PNG.................................................. .............................................191
10.4
Representación del color.................................................. ...........191
Representación ráster................................................. ..................194
10.5
10.6
Práctica práctica 10.1: Representaciones de color ráster ..................198
Práctica práctica 10.2: Análisis de datos ráster: 
Encuentre el área con el rango de elevación entre
60 y 100 y el Tipo de Cobertura Terrestre como “Bosque” ...........199
xi Contenido
10.6.3 Práctica práctica 10.3. Acceda a la información de atributos del 
conjunto de datos ráster y calcule el área .....200
Resumen del capítulo................................................ .............................205
Problemas................................................. .................................................... .....205
10.7
11. Algoritmos de datos de red.................................................... ......................207
11.1 Representación de la red ............................................... ...................207
11.1.1 Representación básica de la red .............................................207
11.1.2 Redes dirigidas y no dirigidas...................................207
11.1.3 La Matriz de Adyacencia ............................................... .............209
11.1.4 Representación de red en SIG ...............................................209
11.2 Encontrar el camino más corto.................................................. .....................210
11.2.1 Enunciado del Problema ............................................. ..................210
11.2.2 Un enfoquede fuerza bruta para el más corto
Algoritmo de ruta ................................................. .....................211
11.2.3 Algoritmo de Dijkstra ............................................... ..................212
11.3 Tipos de análisis de red ............................................... ................214
11.3.1 Enrutamiento .............................................. .....................................214
11.3.2 Instalación más cercana ............................................. ........................214
11.3.3 Áreas de servicio ............................................. ..........................214
11.3.4 Matriz de costos de OD ........................................... ........................216
11.3.5 Problema de generación de rutas para vehículos ............................... ........216
11.3.6 Ubicación-Asignación ............................................. ..................217
11.4 Experiencia práctica con ArcGIS.................................................. ....218
11.5 Resumen del capítulo.................................................... ...............................221
Problemas................................................. .................................................... .....222
12. Algoritmos de datos de superficie.................................................... .........................223
12.1 Superficie 3D y modelo de datos ............................................. ..................223
12.1.1 Datos de superficie ............................................. .............................223
12.1.2 Modelo de datos de superficie ........................................ ..................223
12.1.2.1 Datos discretos ............................................... ............223
12.1.2.2 Datos continuos ............................................... ......225
12.2 Crear datos de modelo de superficie ............................................. ..................228
12.2.1 Crear modelo de superficie de cuadrícula .................................. ......228
12.2.2 Creación de un modelo de superficie TIN .................................. ...229
12.2.3 Conversión entre TIN y RasterSuperficie
Modelos .................................................. ....................................229
12.3 Análisis de datos de superficie ........................................... .........................230
12.3.1 Elevación ............................................... ....................................230
12.3.2 Pendiente ............................................... .............................................231
12.3.3 Aspecto ............................................... ......................................232
12.3.4 Análisis hidrológico.................................................. ...............234
12.4 Experiencia práctica con ArcGIS.................................................. ....236
Contenido XIII
12.4.1 Práctica práctica 12.1: Conversión entre DEM,
TIN y Contornos ............................................................. ..................236
12.4.2 Práctica práctica 12.2: Generar pendiente y aspecto .....239
12.4.3 Práctica práctica 12.3: Dirección del flujo ...........................239
12.5 Resumen del capítulo.................................................... ...............................242
Problemas................................................. .................................................... .....242
Sección IV AvanzadaTemas
13. Técnicas para mejorar el rendimiento.................................................... ....247
13.1 Problemas ................................................ .............................................247
13.2 Acceso al disco y administración de la memoria ..................................248
13.2.1 Gestión de archivos ............................................... .....................249
13.2.2 Consideración integral ..................................................249
13.3 Procesamiento paralelo y subprocesamiento múltiple ..................................251
13.3.1 Ejecución Secuencial y Concurrente..................................251
13.3.2 Hilos múltiples ............................................... .......................251
13.3.3 Cargar varios Shapefiles al mismo tiempo
Uso de subprocesos múltiples .............................................. ..........252
13.3.4 Procesamiento en Paralelo y Cluster, Grid,
y computación en la nube .............................................. .........253
13.4 Cálculo de relaciones e índice espacial....................................254
13.4.1 Cuadro delimitador en GIS ............................................... ................255
13.4.2 Índice espacial ............................................... ............................256
13.5 Experiencia práctica con Mini-GIS ............................................... ..257
13.5.1 Carga de datos con RAM como búfer de archivos ..................257
13.5.2 Carga de datos con subprocesos múltiples ..................................258
13.5.3 Comprobación del cuadro delimitador para acelerar la intersección ........258
13.5.4 Intersección de líneas usando el índice R-Tree..................................261
13.6 Resumen del capítulo.................................................... ...............................262
Problemas................................................. .................................................... .....263
14. Temas avanzados.................................................... .............................................265
14.1 Estructura de datos espaciales ............................................... ........................265
14.1.1 Estructura de datos ráster en NetCDF/HDF ...........................265
14.1.2 Aplicación de NetCDF/HDF en el estudio del clima .............266
14.2 Algoritmos y modelado GIS.................................................... ...........270
14.2.1 Datos .............................................. ..........................................270
14.2.2 Análisis de densidad ............................................. .....................271
14.2.3 Análisis de regresión (OLS y GWR) ...............................272
14.3 SIG distribuido.................................................... ....................................275
14.3.1 Arquitectura del sistema ............................................. ...............276
14.3.2 Interfaz de usuario................................................ ..........................277
xiv Contenido
14.4 Pensamiento y computación espaciotemporal....................................280
14.4.1 Problema: simulación y computación de polvo
Desafíos .................................................. ........................280
14.4.2 Metodología 1: Uso de computación de alto rendimiento para 
respaldar la simulación de polvo ...............281
14.4.3 Metodología 2: Utilización del pensamiento espaciotemporal
para optimizar la computación de alto rendimiento ..................281
14.4.3.1 Características del agrupamiento de tormentas de polvo:
Métodos de programación ............................................282
14.4.3.2 Continuidad espacio-temporal de las tormentas de polvo: método de 
descomposición .................................. ..283
14.4.3.3 Los eventos de tormentas de polvo están aislados:
Modelo anidado ................................................ ........284
14.4.4 Metodología 3: Utilización de la computación en la nube
para respaldar el pronóstico de tormentas de polvo ...............................284
14.5 Resumen del capítulo ............................................... ...............................285
Problemas................................................. .................................................... .....286
Referencias.................................................... .................................................... .......287
Índice........................................................................................................ ..................291
Prefacio
¿Por qué otro texto de programación SIG?
El sistema de información geográfica (GIS, por sus siglas en inglés) se ha convertido en una 
herramienta popular que sustenta muchos aspectos de nuestra vida diaria, desde la ruta para 
el transporte hasta la búsqueda de un restaurante y la respuesta a emergencias. Las prácticas 
herramientas GIS se desarrollan con diferentes niveles de programación, desde secuencias de 
comandos, usando python para ArcGIS, hasta la creación de nuevos conjuntos de herramientas 
desde cero. La cantidad de programación que se necesita para los proyectos depende en gran 
medida del software GIS, los tipos de aplicaciones y la estructura del conocimiento y los 
antecedentes del diseñador y desarrollador de la aplicación. Por ejemplo, las secuencias de 
comandos simples integran aplicaciones de mapas en línea que utilizan mapas de Google. Las 
aplicaciones de análisis espacial personalizadas utilizan ArcGIS de forma rutinaria con una 
programación mínima. Muchos desarrollan una aplicación que aprovecha el software de código 
abierto para administrar big data, modelar fenómenos complejos, o respondiendo a usuarios 
simultáneos para sistemas en línea populares. El mejor diseño y desarrollo de dichas 
aplicaciones requiere que los diseñadores y desarrolladores tengan un conocimiento profundo 
de los principios GIS, así como la habilidad para elegir entre opciones de software comerciales y 
de código abierto. Para la mayoría de los profesionales de SIG, esto es un desafío porque la 
mayoría son usuarios finales de herramientas SIG o profesionales de tecnología de la 
información (TI) con una comprensión limitada de SIG.
Para llenar este vacío, durante la última década, Chaowei Yang lanzó un curso introductorio 
de programación GIS que fue bien recibido. La inscripción continúa aumentando y los 
estudiantes informan comentarios positivos una vez que están en el lugar de trabajo y utilizan 
el conocimiento desarrollado en la clase. Para beneficiar a un espectro más amplio de 
estudiantes y profesionales que buscan materiales de capacitación para desarrollar 
capacidades de programación GIS, este libro está escrito para integrar y refinar el conocimiento 
de los autores acumulado a través de cursos y proyectos de investigación asociados.
La audiencia de este libro es tanto profesionales de TI para aprender los principios SIG como 
usuarios de SIG para desarrollar habilidades de programación. Por un lado, este libro 
proporciona un puente para que los estudiantes y profesionales de SIG aprendan y practiquen 
la programación. Por otro lado, también ayuda a los profesionales de TI con experiencia en 
programación a adquirir los fundamentos de GIS para perfeccionar sus habilidades de 
programación para el desarrollo de GIS.
En lugar de intentar competir con la literatura de programación GIS actual, los autores 
se esfuerzan por interpretar GIS desde un ángulo diferente mediante la integración de 
algoritmos y programación GIS. Como resultado, este libro proporciona un conocimiento 
práctico que incluye principios SIG fundamentales, habilidades básicas de programación, 
desarrollo SIG de código abierto, desarrollo ArcGIS y desarrollo avanzado.
XV
xvi Prefacio
temas Estructurado para desarrollar funciones, aplicaciones y sistemas GIS.s, Se espera 
que este libro ayude a los estudiantes y profesionales de SIG/TI a ser más competitivos en 
el mercado laboral de la industria de SIG y TI con las habilidades de programación 
necesarias.
¿Qué se incluye en el texto?
Este libro tiene cuatro secciones. Sección I (Capítulos 1y2) es una descripción general 
de la programación SIG e introduce la informática y la programación desde una 
perspectiva práctica. La programación Python (lenguaje de programación integral 
para ArcGIS) se presenta ampliamente en la Sección II (Capítulos 3mediante8) en el 
contexto del diseño y desarrollo de un Mini-GIS usando experiencia práctica 
siguiendo explicaciones de conceptos fundamentales de SIG. Sección III (Capítulos 9
mediante12)se enfoca en algoritmos GIS avanzados e información sobre cómo 
invocarlos para programar en ArcGIS. Los temas avanzados y la optimización del 
rendimiento se presentan en la Sección IV (Capítulos 13y14) utilizando el Mini-GIS 
desarrollado.
Capítulo 1introduce computadoras, programación de computadoras y GIS. 
Además, se analiza el Lenguaje de marcado unificado (UML) para capturar modelos 
GIS implementados a través de la programación simple de Python.Capitulo 2 
presenta características y programación orientada a objetos con ejemplos de tipos 
básicos de datos vectoriales GIS de punto, polilínea y polígono.
Capítulo 3presenta la sintaxis de Python, los operadores, las declaraciones, las 
características misceláneas de las funciones y el soporte de Python para la 
programación orientada a objetos. Usando ejemplos SIG,Capítulo 4presenta 
estructuras de control del lenguaje Python, entrada/salida de archivos y manejo de 
excepciones.Capítulo 5 presenta el pensamiento de programación utilizando la 
visualización de datos vectoriales como un ejemplo del flujo de trabajo de este 
proceso crítico en la programación. Capítulo 6presenta el entorno de programación 
integrado (IDE) de Python, los módulos, la administración de paquetes y el paquete 
Mini-GIS.Capítulo 7analiza los formatos de archivos de forma y los pasos sobre 
cómo manejar los archivos de forma dentro del Mini-GIS.Capítulo 8introduce 
algoritmos de procesamiento de datos vectoriales e incluye intersección de línea, 
centroide, área, longitud y punto en polígono. Esta presentación incluye cómo Mini-
GIS/ArcGIS admite estos algoritmos.
Capítulo 9une las Secciones II y III al presentar la programación de ArcGIS en Python 
usando ArcPy, el entorno de programación de ArcGIS, herramientas de automatización, 
acceso a datos, descripción de objetos y corrección de errores.Capítulo 10 presenta 
algoritmos de datos ráster, incluido el formato, el almacenamiento y la compresión de 
datos ráster con experiencia práctica en el uso de ArcGIS.Capítulo 11aborda algoritmos 
de datos de red para representar redes y calcular la ruta más corta en principios y usar 
ArcGIS.Capítulo 12explora la superficie o
Prefacio xvii
Representación de datos 3D de datos 3D, conversión de formatos de datos y análisis 3D 
para elevación, pendiente, aspecto y dirección de flujo con ejemplos en programación 
ArcGIS.
Capítulo 13introduce técnicas de mejora del rendimiento e incluye acceso y 
gestión de almacenamiento, procesamiento paralelo y subprocesos múltiples, índice 
espacial y otras técnicas para acelerar GIS como se demuestra en Mini-GIS. Los 
temas avanzados, incluidos algoritmos y modelado GIS, estructura de datos 
espaciales, GIS distribuido, pensamiento espaciotemporal y computación, se 
presentan encapitulo 14.
Experiencia práctica
Como texto práctico para desarrollar habilidades de programación, este libro hace todo 
lo posible para garantizar que el contenido sea lo más funcional posible. Para cada 
principio, algoritmo y elemento fundamental de SIG presentado, se explora un ejemplo 
como una experiencia práctica usando Mini-GIS y/o ArcGIS con Python. Este flujo de 
trabajo de aprendizaje ayuda a desarrollar una comprensión profunda de los 
fundamentos y, naturalmente, se relaciona con los fundamentos y las habilidades de 
programación.
Para el desarrollo de sistemas y código abierto, se presenta un desarrollo paso a 
paso de un Mini-GIS basado en python. Para el desarrollo de aplicaciones, se adopta 
ArcGIS para ilustración.
El Mini-GIS es un software de código abierto desarrollado para este texto y se puede 
adoptar para construir otras aplicaciones GIS. ArcGIS, un producto comercial de ESRI, se 
utiliza para experimentar software comercial de última generación. Para fines de 
aprendizaje, ArcGIS está disponible de forma gratuita en ESRI.
Materiales en línea
Este libro viene con los siguientesmateriales en línea:
• Diapositivas instructivas para instructores que utilizan este texto para la educación en 
el aula y profesionales para ayudar en el aprendizaje de la programación GIS.
• Códigos de Python para ejercicios de clase y experiencias prácticas y 
estructurados y etiquetados por capítulo para codificar la secuencia del capítulo.
• Mini-GIS como un paquete de código abierto para aprender los fundamentos 
de GIS y para ejemplificar los principios y algoritmos de GIS.
• Respuestas a problemas para que los instructores verifiquen sus soluciones.
xviii Prefacio
La audiencia y cómo usar este texto
Este texto tiene dos funciones: un texto para la construcción sistemática de habilidades 
de programación SIG y una referencia para identificar una solución Python para 
algoritmos SIG específicos o funciones desde cero y/o ArcGIS. El texto está destinado a 
ayudar a cuatro categorías de lectores:
• Profesores que enseñan programación GIS o estudiantes GIS que aprenden 
con un enfoque específico en la experiencia práctica en el aula.
• Los programadores que deseen aprender a programar GIS 
escaneando la Sección I yCapítulos 3y4, seguido de un estudio paso 
a paso de los capítulos restantes.
• Los diseñadores de sistemas GIS más interesados en descripciones de 
algoritmos, implementación de algoritmos desde cero y ArcGIS para reunir un 
conocimiento práctico sobre la programación GIS para ayudar en la elección de 
GIS para el desarrollo futuro.
• Profesionales de TI con curiosidad de GIS por los principios de GIS pero 
omitiendo los ejercicios de programación.
La intención de los autores para una audiencia tan amplia se basa en el deseo de 
cultivar una fuerza laboral profesional competitiva en el desarrollo de SIG, mejorar la 
literatura de SIG y servir como una introducción práctica a la investigación de SIG.
¿Cómo desarrollamos este texto?
El material de texto fue desarrollado por primera vez por el profesor Chaowei Yang en 
2004 y se ofreció anualmente en un salón de clases durante la última década. Durante 
ese lapso de tiempo, muchos estudiantes desarrollaron y mejoraron sus habilidades de 
programación. Algunos se convirtieron en profesores y conferencistas en universidades y 
fueron invitados a escribir capítulos de libros específicos. Teniendo en cuenta a la 
audiencia, se invitó a varios profesores que enseñan programación GIS en diferentes 
entornos culturales y universitarios a revisar los capítulos del libro.
El siguiente es el flujo de trabajo de desarrollo del libro:
• Utilizando los materiales de su curso, el profesor Yang estructuró este libro 
con la ayuda de Irma Shagla, y se contrató la estructura del texto para 
publicarlo como libro. El profesor asistente Qunying Huang, de la 
Universidad de Wisconsin, Madison, exploró el uso de las versiones 
anteriores de los materiales del texto. Los Profesores Asistentes Huang y 
Zhenlong Li, Universidad de Carolina del Sur, desarrollaron la Sección II del 
texto en colaboración con el Profesor Yang.
Prefacio xix
• El Dr. Min Sun, la Sra. Manzhu Yu, el Sr. Yongyao Jiang y el Sr. Jizhe Xia 
desarrollaron la Sección III en colaboración con el Profesor Yang.
• El profesor Yang editó y revisó todos los capítulos para asegurar una estructura y 
composición comunes.
• La Sra. Manzhu Yu y el profesor Yang editaron las diapositivas del curso.
• El Profesor Asistente Li, el Sr. Kai Liu, la Sra. Joseph George y la Sra. Zifu 
Wang editaron Mini-GIS como software para el texto.
• Después de completar el texto anterior y los materiales del curso, se invitó a 
cuatro profesores y dos desarrolladores a revisar el contenido del texto.
• Los materiales reunidos para el texto finalmente fueron revisados por 
varios profesionales, incluidos la Sra. Alena Deveau, el Sr. Rob 
Culbertson y el profesor George Taylor.
• El texto fue formateado por la Sra. Minni Song.
• La Sra. Manzhu Yu y el profesor Yang completaron una revisión final de los capítulos, 
diapositivas, códigos, datos y todos los materiales relevantes.
http://taylorandfrancis.com
Expresiones de gratitud
Este texto es un proyecto a largo plazo que evoluciona del curso "Introducción a la 
programación GIS" desarrollado y perfeccionado durante la última década en la 
Universidad George Mason. Muchos estudiantes y profesores brindaron sugerencias 
constructivas sobre qué incluir, cuál es la mejor manera de comunicar y desafiar a los 
estudiantes, y quién debe ser considerado como audiencia del texto.
El resultado refleja la carrera de programación del profesor Yang desde sus 
tesis de pregrado en la Universidad del Noreste de China bajo la tutoría del 
profesor Jinxing Wang. El profesor Yang fue asesorado en programación en el 
dominio GIS por los profesores Qi Li y Jicheng Chen. Sus mentores académicos 
en los Estados Unidos, los profesores David Wong y Menas Kafatos, le 
brindaron apoyo durante muchas décadas y le dieron la oportunidad de 
impartir el curso que finalmente condujo a este texto.
El profesor Yang agradece a los estudiantes brillantes y entusiastas de sus clases 
en la Universidad George Mason. Sus preguntas y críticas perfeccionaron sus 
habilidades de enseñanza, mejoraron el contenido y estimularon este esfuerzo de 
desarrollar un texto.
El profesor Yang agradece a su amada esposa, Yan Xiang, y a sus hijos, 
Andrew, Christopher y Hannah, por complacerlo al robarle un tiempo valioso a 
la familia para completar el texto.
La Sra. Manzhu Yu extiende su gratitud a los muchos colegas que 
brindaron apoyo y leyeron, escribieron, comentaron y ayudaron en la 
edición, revisión y formato del texto.
La profesora asistente Huang agradece a su maravilloso esposo, Yunfeng Jiang, ya 
su encantadora hija, Alica Jiang.
La Dra. Min Sun agradece a su supervisor de doctorado, el profesor David Wong, por 
educarla. También agradece a David Wynne, su supervisor en ESRI, donde trabajó como 
pasante, y a sus otros compañeros de trabajo que, en conjunto, la ayudaron a obtener 
una comprensión más completa de la programación con productos de ESRI. Por último, 
pero no menos importante, agradece a sus padres y al adorable perro que la acompañó 
cuando estaba escribiendo el texto.
Yongyao Jiang agradece a su esposa Rui Dong, a su hija Laura ya sus 
padres Lixia Yao y Yanqing Jiang.
xxx
http://taylorandfrancis.com
Editor
chaowei yanges profesor de ciencias de la información geográfica en la Universidad 
George Mason (GMU). Su interés de investigación es la utilización de principios 
espaciotemporales para optimizar la infraestructura informática para respaldar los 
descubrimientos científicos. Fundó el Centro de Computación Espacial Inteligente y el 
Centro de Innovación Espaciotemporal de la NSF. Se desempeñó como PI o Co-I para 
proyectos por un total de más de $ 40 millones y financiados por más de 15 agencias, 
organizaciones y empresas. Ha publicado más de 150 artículos y ha desarrollado varios 
cursos y programas de capacitación en SIG. Ha asesorado a más de 20 estudiantes de 
posdoctorado y doctorado que se desempeñan como profesores y científicos en 
instituciones estadounidenses y chinas muy aclamadas. Recibió muchos premios 
nacionales e internacionales, como el Premio Presidencial de Administración de 
Protección Ambiental de EE. UU. en 2009. Todos sus logros se basan en su conocimiento 
práctico de SIG y sistemas de información geoespacial. Este libro es una colección de 
conocimientos prácticos sobre cómo desarrollar herramientas GIS desde una perspectiva 
de programación. El contenido se ofreció en sus clases de programación y algoritmos GIS 
durante los últimos 10 años (2004–2016) y ha sido adoptado por sus estudiantes y 
colegas que se desempeñan como profesores en muchas universidades de los Estados 
Unidos e internacionalmente.
XXIII
http://taylorandfrancis.com
Colaboradores
fei hues candidato a doctorado en el NSF Spatiotemporal Innovation Center, George Mason 
University. Está interesado en utilizar tecnologías de computación enla nube de alto 
rendimiento para administrar y extraer grandes datos espaciotemporales. Más 
específicamente, ha optimizado el sistema de almacenamiento distribuido (p. ej., HDFS) y el 
marco informático paralelo (p. ej., Spark, MapReduce) para administrar, consultar y analizar de 
manera eficiente grandes conjuntos de datos basados en matrices multidimensionales (p. ej., 
datos climáticos y sensores remotos). datos). Su objetivo es proporcionar a los científicos 
capacidades analíticas de datos bajo demanda para liberarlos de las tareas computacionales 
que consumen mucho tiempo.
Qunying Huanges profesor asistente en el Departamento de Geografía de la Universidad 
de Wisconsin, Madison. Sus campos de especialización incluyen la ciencia de la 
información geográfica (GIScience), la infraestructura cibernética, la extracción de datos 
grandes espaciotemporales y el modelado y simulación ambiental a gran escala. Está muy 
interesada en aplicar diferentes modelos informáticos, como clúster, grid, GPU, 
computación ciudadana y, especialmente, computación en la nube, para abordar los 
desafíos informáticos y de big data contemporáneos en la ciencia GIS. Más 
recientemente, está aprovechando y extrayendo datos de redes sociales para diversas 
aplicaciones, como respuesta a emergencias, mitigación de desastres y movilidad 
humana. Ha publicado más de 50 artículos científicos y editado dos libros.
yongyao jianges candidato a doctorado en sistemas terrestres y ciencias de la geoinformación 
en el Centro de Innovación Espaciotemporal NSF, Universidad George Mason. Obtuvo una 
Maestría (2014) en Ciencias SIG en la Universidad de Clark y una Licenciatura en Ciencias (2012) 
en teledetección en la Universidad de Wuhan. Su investigación se centra en el descubrimiento 
de datos, la minería de datos, la semántica y la computación en la nube. Jiang recibió el premio 
NSF EarthCube Visiting Graduate Student Early-Career Scientist Award (2016), el Microsoft Azure 
for Research Award (2015) y el primer premio en el Robert Raskin CyberGIS Student 
Competition (2015). Se desempeña como líder técnico de MUDROD, un proyecto de motor de 
búsqueda y descubrimiento semántico financiado por el programa AIST de la NASA.
Zhen Long Lies profesor asistente en el Departamento de Geografía de la Universidad de 
Carolina del Sur. La investigación del Dr. Li se centra en la computación espacial de alto 
rendimiento, el procesamiento/minería de macrodatos y la ciberinfraestructura 
geoespacial en el área de datos y ciencias GIS computacionales intensivas. La 
investigación del Dr. Li tiene como objetivo optimizar la infraestructura informática 
espacial mediante la integración de tecnologías informáticas de vanguardia y principios 
espaciales para respaldar aplicaciones de dominio como el cambio climático y la gestión 
de riesgos.
xiv
xxi Colaboradores
kai liues estudiante de posgrado en el Departamento de Geografía y Ciencias de la 
Geoinformación (GGS) en la Facultad de Ciencias de la Universidad George Mason. 
Anteriormente, fue académico visitante en el Centro de Computación Espacial Inteligente 
para la Ciencia del Agua/Energía (CISC) y trabajó durante 4 años en la Oficina de 
Topografía y Cartografía de Heilongjiang en China. Obtuvo una licenciatura en ciencias de 
la información geográfica en la Universidad de Wuhan, China. Su investigación se centra 
en la semántica geoespacial, la gestión de metadatos geoespaciales, la computación en la 
nube espaciotemporal y la ciencia ciudadana.
Sol mínimoes profesor asistente de investigación en el Departamento de Geografía y 
Ciencias de la Geoinformación de la Universidad George Mason. Sus intereses de 
investigación incluyen medir la incertidumbre de los atributos en datos espaciales, 
desarrollar análisis visuales para respaldar la exploración de datos, WebGIS y 
computación en la nube. Es experta en programación de ArcGIS y también se desempeña 
como subdirectora del Centro de Innovación Espaciotemporal de la NSF de EE. UU.
Jizhe Xiaes profesor asistente de investigación en la Universidad George Mason. Obtuvo 
un doctorado en sistemas terrestres y ciencias de la geoinformación en la Universidad 
George Mason en la primavera de 2015. Los intereses de investigación del Dr. Xia son la 
computación espaciotemporal, la computación en la nube y sus aplicaciones en ciencias 
geográficas. Propuso una variedad de métodos para utilizar patrones espaciotemporales 
para optimizar el acceso a big data, la evaluación de la calidad del servicio (QoS) y la 
aplicación de computación en la nube.
Manzhu Yues candidato a doctorado en el Departamento de Geografía y Ciencias 
de la Geoinformación de la Universidad George Mason. Sus intereses de 
investigación incluyen metodología espaciotemporal, detección de patrones y 
aplicaciones espaciotemporales en desastres naturales. Recibió una Beca 
Presidencial de 2012 a 2015. Ha publicado aproximadamente 10 artículos en revistas 
de renombre, comoMás unoyIJGIS, y contribuyó como autor importante en varios 
capítulos de libros.
Sección I
Visión general
http://taylorandfrancis.com
1
Introducción
Este capítulo presenta los conceptos básicos de computadora, hardware, software y 
programación, y establece el contexto para la programación SIG.
1.1 Hardware y software informático
Acomputadoraes un dispositivo que tiene la capacidad de realizar diferentes tipos de tareas 
automatizadas basadas en instrucciones específicas predefinidas por interacciones con los 
usuarios finales o a través de ellas. Por ejemplo, al hacer clic en el icono de ArcGIS se ejecutará 
el software ArcGIS. Podemos seleccionar un destino y un punto de partida para activar un 
análisis de enrutamiento para identificar una ruta de manejo usando Google Maps. Las 
computadoras son algunas de las tecnologías de más rápida evolución, como lo refleja la 
capacidad de procesamiento de las pequeñas calculadoras a las supercomputadoras. El tamaño 
de los dispositivos se ha reducido desde computadoras que ocupan un edificio hasta 
dispositivos móviles en bolsillos (Figura 1.1). Las interacciones del usuario van desde escribir 
tarjetas perforadas (primeras computadoras) hasta la interacción humano-computadora, como 
hablar para invocar una acción o tarea.
Hay dos componentes importantes de una computadora (Hwang y Faye 1984): (1) el 
dispositivo físico que puede realizar el procesamiento automatizado y (2) los paquetes de 
instrucciones que se pueden configurar para proporcionar una funcionalidad específica, 
como el procesamiento de textos o el procesamiento de información geográfica. . El 
primer componente de una computadora, elhardware, es tocable como máquinas físicas. 
El segundo componente, elsoftware, puede comprarse con el hardware en forma de 
sistema operativo o instalarse descargándolo en línea. El hardware de la computadora se 
puede configurar o programar para realizar diferentes tareas; por lo tanto, una 
computadora también puede llamarse un dispositivo de propósito general. El software 
varía mucho, ya sea que proporcione capacidad de procesamiento de documentos, 
gestión financiera, procesamiento de declaraciones de impuestos o simulaciones 
científicas como el cambio climático o la propagación de enfermedades. Según el tipo de 
software, se adquiere públicamente (freeware) o es propietario (requiere compra y 
licencia). Según el uso, el software puede clasificarse como software de sistema, software 
de aplicación o software integrado (Figura 1.2). El software del sistema se refiere al 
software básico que debe instalarse para que una computadora funcione. Windows y 
Linux son ejemplos de software de sistema operativo (SO), un componente esencial de 
una computadora. Soporte de software de aplicación
3
4 Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
(a) (b)
FIGURA 1.1
(a) Supercomputadora de la NASA. (De la supercomputadora de la NASA enhttp://www.nas.nasa.gov/hecc/
resources/pleiades.html.) (b) Otras computadoras: computadora personal(PC), laptop, pad. (De diferentes 
computadoras enhttp://www.computerdoc.com.au/cuáles-son-los-diferentes-tipos-de-computadoras.)
grupos específicos de tareas, como Microsoft Word para el procesamiento de 
documentos y Microsoft Outlook para correos electrónicos. El software integrado es un 
tipo de firmware que se graba en el hardware y se convierte en parte de ese hardware. El 
software integrado existe más tiempo en una computadora que cualquier otro software. 
El firmware siempre vendrá con el hardware cuando compre una computadora, por lo 
que no tendrá que cambiar el firmware con tanta frecuencia, especialmente cuando 
actualice un navegador web o Turbo Tax Return de forma rutinaria.
Sistema de información geográfica(GIS) es un tipo de software de aplicación que 
trata principalmente con información geográfica (Longley et al. 2001). El sistema de 
posicionamiento global (GPS, Misra y Enge 2006) se utiliza para ubicar lugares 
geográficos y se puede instalar tanto en automóviles como en teléfonos inteligentes 
para enrutamiento. El software SIG incluye dos categorías: SIG profesional y SIG 
ligero. El software GIS profesional, como ArcGIS, proporciona la mayor
Software de la aplicacion
Word, navegador web, ArcGIS
Software del sistema
Windows, Linux,...
software integrado
Hardware
FIGURA 1.2
Diferentes tipos de software.
http://www.nas.nasa.gov/hecc/resources/pleiades.html
http://www.nas.nasa.gov/hecc/resources/pleiades.html
http://www.computerdoc.com.au/what-are-the-different-types-of-computers
Introducción 5
conjunto completo de funcionalidades GIS para profesionales en el dominio GIS. El 
software GIS menos intenso, pero popular, que se utiliza para ver el entorno 
geográfico es la aplicación de mapas en línea, como Google Maps y Google Earth.
1.2 SIG y Programación
GIS se origina en varios dominios y se refiere al sistema diseñado para capturar, 
observar, recopilar, almacenar y administrar datos geográficos y proporcionar 
herramientas para análisis y visualización espacial (Longley et al. 2001). Los SIG pueden 
ayudar a obtener datos geográficos que se utilizarán para la toma de decisiones, como la 
elección de rutas para la respuesta a emergencias. Se sabe que GIS comenzó a partir del 
programa informático canadiense de inventario de recursos naturales dirigido por Roger 
Tomlinson en la década de 1960. GIS se está volviendo cada vez más popular en 
dispositivos móviles como un medio para analizar información y patrones relacionados 
con el tráfico y el clima.
Acuñado por Mike Goodchild, el término "GIS" también puede referirse al campo 
de la ciencia de la información geográfica ociencia SIG—el estudio de los principios y 
tecnologías SIG aplicados científicamente (Goodchild 1992). Según los científicos de 
SIG,ciencia SIGinvolucra sensores remotos, sistemas globales de navegación por 
satélite y GIS. Además, en varios dominios,Geoinformáticapuede aplicarse a la 
teledetección, el sistema mundial de navegación por satélite y la información GIS. 
Estos temas, sin embargo, no serán explorados en este libro.
GIS es el sistema que comprende hardware (computadora, dispositivos móviles, GPS), 
software (ArcGIS o mapeo en línea) y datos (información geográfica) que se pueden 
utilizar para lograr un conjunto de funcionalidades para un grupo de usuarios. Los tres 
componentes deben utilizarse para que GIS funcione de manera efectiva. Una diferencia 
significativa entre GIS y otras aplicaciones de software es su capacidad para administrar y 
manipular el gran volumen y la complejidad de los datos geográficos, que comprenden 
información espaciotemporal y de atributos incrustada. El carácter complejo de los datos 
GIS exige un conjunto específico de software para extraer información para la toma de 
decisiones. Los paquetes de software maduros están disponibles públicamente, incluido 
el conjunto más actualizado de software ArcGIS y la última edición del software de mapas 
web Google Maps.
El proceso de desarrollo de software se denominaprogramación. La programación le indica a 
la computadora que realice una tarea en función de las órdenes. Hay muchos tipos diferentes 
de niveles de programación (Mitchell 1996). El nivel más bajo para programar se basa en las 
instrucciones de hardware específicas admitidas por las unidades centrales de procesamiento 
(CPU) y utilizadas por los desarrolladores de instrumentos inteligentes. Debido a que las 
instrucciones de la CPU se procesan como una secuencia de 0 y 1, el lenguaje ensamblador se 
desarrolla para ayudar a los desarrolladores a recordar esas instrucciones. Ambos lenguajes se 
consideran de bajo nivel y son específicos del hardware. Se han desarrollado lenguajes 
avanzados para facilitar la
6 Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
comprensión, pero todavía están restringidos por las instrucciones del hardware. Por 
ejemplo, el lenguaje de programación C se usa comúnmente para desarrollar software 
(Kernighan y Ritchie 2006). Para hacer que la organización de la programación sea más 
similar a cómo vemos el mundo, se propuso C++ para admitir la programación orientada 
a objetos basada en C (Stroustrup 1995). Desde entonces, se han desarrollado y se 
utilizan muchos lenguajes de programación diferentes en la programación GIS. Por 
ejemplo, Java es un lenguaje para el desarrollo de aplicaciones multiplataforma 
propuesto por Sun Microsystems (Arnold et al. 2000). JavaScript se utiliza para realizar 
una programación de secuencias de comandos (más simple) para manipular objetos 
dentro de un navegador web. Además de Java y JavaScript, ArcGIS ha agregado 
recientemente Python a su lista de lenguajes de programación (Van Rossum 2007).
¿Por qué necesitamos la programación GIS? El software GIS maduro y las plantillas de 
aplicaciones brindan muchas herramientas para realizar nuestras tareas diarias; sin 
embargo, para comprender los fundamentos de cómo funciona GIS y personalizar el 
software para problemas específicos, se requiere programación. La siguiente lista 
proporciona ejemplos de programación:
• Software de personalización para la aplicación.: El Servicio de Parques Nacionales 
está desarrollando una sencilla aplicación web de mapas para permitir que el público 
en general seleccione y vea de forma interactiva la información de un Parque 
Nacional en particular. El uso de una herramienta de mapeo en línea como Google 
Maps y la selección de un parque con el mouse activará una consulta de la 
información seleccionada para ese parque. En este escenario, necesitamos 
información geográfica sobre los parques, un programa para la interacción del 
usuario front-end y un lenguaje de consulta de base de datos que generará 
resultados para el parque seleccionado.
• Automatización de un proceso: suponga que hay 100 conjuntos de datos geográficos 
recopilados en formato de archivo de texto y necesitamos convertirlos en un archivo de 
forma, un formato de archivo de datos nativo utilizado por ArcView y ArcGIS, para su 
posterior procesamiento. ArcGIS puede realizar la conversión una por una, pero hacerlo 
manualmente 100 veces es monótono. Por lo tanto, una herramienta de secuencias de 
comandos simple para leer y procesar automáticamente los 100 conjuntos de datos en 
archivos de forma sería beneficioso. El uso de secuencias de comandos de Python en 
ArcGIS brinda la capacidad de hacerlo.
• Satisfaciendo necesidades GIS simples: Supongamos que hay una empresa de 
transporte que necesita realizar un seguimiento de las posiciones de los vehículos de 
su empresa en intervalos de 5 minutos. Sin embargo, la empresa no puede 
permitirse comprar una licencia de software GIS profesional. Para resolver el 
problema, la empresa puede usar Python para crear un mapa que muestre la región 
de servicio de la empresa y las ubicaciones de los vehículos cada 5 minutos. Esta 
programación puede incluir características de Zoom In/Out y Move/Pan, animaciones 
basadas en ubicaciones y una selección de uno o varios vehículos.Introducción 7
• Cultivando profesionales GIS avanzados: Suponga que se le pide a un grupo de 
estudiantes que invente un algoritmo de enrutamiento basado en las 
condiciones de tráfico pronosticadas y la información de tráfico en tiempo real. 
Los estudiantes deberán organizar la información de la red de carreteras 
comparando la velocidad de la red en tiempo real y prevista. Es esencial utilizar 
la información prevista más precisa en el proceso de enrutamiento. Se necesita 
programación a lo largo de todo el proceso para la gestión y el enrutamiento de 
la red, y para reconstruir los resultados en forma de mapa o instrucciones 
escritas.
La información geográfica se ha vuelto cada vez más importante en todos los ámbitos de la vida humana, ya sea 
para el descubrimiento científico, el pronóstico de desastres naturales, el avance de las tecnologías de observación o la 
creación de conciencia pública sobre la ubicación y la ruta. Mientras que algunas aplicaciones requieren tecnologías GIS 
completas para producir resultados valiosos, muchas aplicaciones de información geográfica no requieren sistemas de 
información geográfica sofisticados. Para el último caso, se utiliza un software de información geoespacial pequeño o 
de código abierto, mientras que los sistemas GIS comerciales como ArcGIS están disponibles para el primer caso. Para 
abordar mejor ambas necesidades, es esencial comprender los fundamentos de cómo funciona GIS y su procesamiento 
básico de información geográfica. En este capítulo se presenta la estructura de fondo para construir tales capacidades: 
hardware y software informático, GIS y programación, modelos de datos GIS y lenguaje de marcado unificado (UML, 
Fowler 2004) y Python. Se necesita experiencia práctica en programación para comprender los conceptos y desarrollar 
las habilidades esenciales utilizadas por los profesionales SIG en su trabajo e investigación. Basado en los fundamentos 
de SIG, este libro lo ayudará a desarrollar y mejorar las habilidades de programación sistemática y le brindará una 
comprensión más profunda de los fundamentos de SIG. Debido a su popularidad dentro de la comunidad GIS, Python 
será el lenguaje de programación principal que se utilizará en este libro. Basado en los fundamentos de SIG, este libro 
lo ayudará a desarrollar y mejorar las habilidades de programación sistemática y le brindará una comprensión más 
profunda de los fundamentos de SIG. Debido a su popularidad dentro de la comunidad GIS, Python será el lenguaje de 
programación principal que se utilizará en este libro. Basado en los fundamentos de SIG, este libro lo ayudará a 
desarrollar y mejorar las habilidades de programación sistemática y le brindará una comprensión más profunda de los 
fundamentos de SIG. Debido a su popularidad dentro de la comunidad GIS, Python será el lenguaje de programación 
principal que se utilizará en este libro.
1.3 pitón
Python fue desarrollado originalmente por un programador holandés, Guido van 
Rossum, en 1990. Según los informes, Van Rossum era fanático de la serie de 
comedia británica,El circo volador de Monty Python, y al desarrollar el lenguaje de 
programación de código abierto, tomó prestado el nombre "Python" para el 
lenguaje y su institución sin fines de lucro, Python Software Foundation.
Similar a los lenguajes de programación C++ y Java, Python es un lenguaje orientado a 
objetos e interactivo. Python es dinámico en el sentido de que utiliza un mecanismo 
automático de administración de memoria para asignar y liberar memoria para
8 Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
datos (variables). Python y ArcGIS lanzan regularmente nuevas versiones de sus 
programas; este libro está basado en la versión 2.7 de Python y ArcGIS 10.1.
Hay muchas razones para elegir Python, incluidas las siguientes:*
• Es excelente para principiantes en programación, pero excelente para expertos.
• La sintaxis de Python es muy simple y fácil de aprender. Cuando te 
familiarices con ellos, sentirás que es realmente muy útil.
• Es altamente escalable y muy adecuado para proyectos grandes y pequeños.
• Está en una fase de rápido desarrollo. Casi cada medio año, hay un nuevo 
lanzamiento importante.
• Es multiplataforma portátil. Esto significa que un programa escrito en 
Windows se puede ejecutar con los sistemas operativos Linux o Mac.
• Es fácilmente extensible. Siempre puede agregar más funciones de clase a su 
proyecto actual.
• Dispone de potentes bibliotecas estándar.
• Muchos terceros también ofrecen paquetes altamente funcionales 
para su uso. En lugar de desarrollar funciones GIS desde cero, 
simplemente puede descargar el código fuente e integrarlo en su 
proyecto.
• Es totalmenteorientado a objetoslenguaje, simple pero elegante, estable y 
maduro.
Hay varios pasos para aprender Python para la programación GIS:
• Familiarizarse con el concepto de clase y objeto (Capítulos 1y2).
• Aprenda la sintaxis de Python, incluidas variables, tipos de datos, 
estructuras, controles, instrucciones y otras estructuras de 
programación (Capítulos 1mediante4).
• Cree programas de Python desde cero e integre bibliotecas de código 
abierto para facilitar la programación (Capítulo 5).
• Familiarizarse con el entorno de programación de Python (intérprete de 
Python o editor de texto de Python,Capítulo 6).
• Resolver problemas GIS escribiendo código para algoritmos GIS (Capítulos 7 
mediante13).
Estos componentes se presentan en el orden anterior a lo largo de este libro. 
Este capítulo presenta conceptos importantes como la programación orientada 
a objetos, UML y modelos GIS.
* http://pythoncard.sourceforge.net/what_is_python.html.
http://pythoncard.sourceforge.net/what_is_python.html
Introducción 9
1.4 Clase y Objeto
Dentro de esta sección, discutiremos dos tipos de conceptos fundamentales: clase y objeto 
(Rumbaugh et al. 1991). La clase utiliza un conjunto de atributos y comportamientos para 
representar una categoría de fenómenos del mundo real. Por ejemplo,Figura 1.3 muestra cómo 
extraer los atributos y comportamientos de los estudiantes.
Otro ejemplo son las compras en línea en Amazon o eBay. Tanto los clientes 
como los productos en línea deben resumirse en clases:
• Los clientes tendrían una identificación de cliente, una dirección de envío y una 
dirección de facturación. El comportamiento del cliente incluiría agregar o eliminar 
un producto del carrito de compras.
• Los productos tendrían un ID de producto, un nombre de producto y un precio de 
producto. El comportamiento del producto incluiría establecer el precio y sumar la 
cantidad/cantidad del producto.
Un objeto es una instancia específica de una clase. Podemos considerar objetos 
como instancias de clases asignando valores a sus atributos. Específicamente, una 
clase es la abstracción de una categoría o colección de entidades del mundo real, 
mientras que un objeto es una entidad específica del mundo real dentro de la clase. 
Dentro de una computadora, una clase es la plantilla y un objeto es la entidad 
específica que ocupa la memoria de la computadora. La computadora puede operar 
tanto en los atributos como en los comportamientos de un objeto. Por ejemplo, 
cuando un estudiante inicia sesión en el sistema web de su universidad con un 
nombre de usuario y una contraseña, el sistema creará un nuevo objeto de 
estudiante. La computadora lee a cada estudiante como un objeto independiente 
con varios atributos diferentes (por ejemplo, nombre de usuario, contraseña e ID de 
estudiante). Después de iniciar sesión, un estudiante puede buscar, registrarse,
Capitulo 2presentará cómo definir clases y objetos usando Python.
FIGURA 1.3
Un ejemplo de representación de estudiantes con la clase Student.
10Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
1.5 Modelos de datos SIG
Los modelos de datos GIS se utilizan para capturar elementos geoespaciales esenciales de un 
problema específico (Longley et al. 2001).Hay tres tipos de modelos de datos: datos vectoriales, 
datos raster y datos especiales. Los modelos de datos vectoriales constan de tipos de modelo 
de punto, polilínea y polígono. Los datos ráster incluyen celdas igualmente divididas de 
imágenes y modelos de elevación digitales. Los datos especiales se componen de datos lineales 
y de red. Este libro destaca diferentes tipos de modelos de datos GIS, pero se centrará 
principalmente en modelos de datos vectoriales.
Un punto puede hacer referencia a una clase de datos vectoriales representados por 
un par de coordenadas x, y en un espacio bidimensional (2D) o una tupla de coordenadas 
x, y y z en un espacio tridimensional (3D). Por ejemplo, una ciudad se representa como un 
punto en un mapamundi. Cada ciudad tiene un grupo de atributos, que incluiría el 
nombre de la ciudad, la población, el ingreso familiar promedio y los acro-nombres. Otro 
ejemplo que usa puntos es un mapa que muestra todos los restaurantes dentro de una 
determinada región. Además de su ubicación puntual, cada restaurante contendrá otra 
información relevante, incluido su nombre, la capacidad de la sala, la cocina y el año en 
que abrió. En estos casos, el punto es una clasificación general, mientras que la ciudad o 
el restaurante es un tipo de clase más específico que contiene diferentes atributos. Al 
diseñar, cada punto del rectángulo puede representar una clase (Figura 1.4). Este 
diagrama también se conoce como diagrama de clases UML. La primera fila se refiere al 
nombre de la clase:Ciudad; la segunda fila se refiere a los atributos de la clase:nombrey
ingreso promedio; la tercera fila se refiere a un conjunto de métodos:obtenerNombre,
obtenerIngresoPromedio, yescoger un nombre.
Las polilíneas son una clase de datos vectoriales representados por una lista de puntos. 
Por ejemplo, un río se puede representar como una polilínea en un mapa, que luego se 
puede categorizar como un tipo de clase de polilínea. Una clase de polilínea puede incluir 
coordenadas de puntos, atributos relevantes y un conjunto de métodos. Otro ejemplo de 
dataset de polilínea pueden ser carreteras, autopistas e interestatales. Ambos ejemplos 
son categorías de polilíneas. Los ríos se pueden representar usando UML (Figura 1.5). La 
primera fila del UML es el sujeto de la clase:Río; la segunda fila incluye los atributos del 
río:nombreycoordenadas; y la tercera fila se refiere a los métodos que usará el 
programador:obtenerNombre,establecer coordenadas, yescoger un nombre.
FIGURA 1.4
Un diagrama UML para la clase City.
Introducción 11
FIGURA 1.5
La clase River incluye tres partes.
FIGURA 1.6
La clase County incluye tres partes.
Los polígonos son otra clase de datos vectoriales que también están representados por una 
lista de puntos; sin embargo, con los polígonos, el primer y el último punto son los mismos. Por 
ejemplo, en el mapa del estado de Virginia, un condado específico, como el condado de Fairfax, 
se puede representar como un polígono. El condado es un tipo de clase de polígono, que 
incluye una lista de puntos, atributos relevantes y un conjunto de métodos. Los países en un 
mapa mundial también se pueden representar como polígonos. En cualquier caso, tanto el 
condado como el país son tipos de polígonos. Como se muestra enFigura 1.6, la primera fila es 
el nombre del asunto:Condado; la segunda fila son los atributos del sujeto:nombreypoblación; y 
la tercera fila se refiere a los métodos:obtenerNombre,conjuntoPoblación, yescoger un nombre
.
Desarrollar más métodos requerirá agregar más métodos y atributos a cada 
clase para capturar la evolución de los modelos de datos y la funcionalidad del 
software; Los diagramas UML se utilizan para estandarizar su representación. 
Esta sección utiliza diagramas de clases y estándares UML relevantes para las 
clases de puntos, polilíneas y polígonos.
1.6 UML
En 1997, el Grupo de Gestión de Objetos (OMG)*creó el UML para registrar el diseño 
del software para la programación. Diseñadores y programadores de software
* Ver Dios mío enhttp://www.omg.org/.
http://www.omg.org/
12Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
use UML para comunicar y compartir el diseño. Similar al idioma inglés en el 
que nos comunicamos compartiendo nuestras ideas hablando o escribiendo, 
UML se usa para modelar una aplicación o problema de forma orientada a 
objetos. El modelado UML se puede utilizar para facilitar todo el diseño y 
desarrollo de software.
El diagrama UML se utiliza para capturar la lógica de programación. Hay dos tipos 
de diagramas que discutiremos específicamente: diagramas de clases y diagramas 
de objetos (Figura 1.7).
El diagrama de clases UML puede representar una clase usando tres partes: 
nombre, atributos y métodos. Los atributos y métodos tienen tres 
accesibilidades diferentes: pública (+), privada (-) y protegida (#). Los atributos y 
métodos normalmente se representan en el siguiente formato:
• Atributos: atributo de accesibilidad Nombre: tipo de datos del atributo, por 
ejemplo, +nombre: Cadena
• Métodos: nombre del método de accesibilidad (argumentos del método): tipo de 
devolución del método, por ejemplo, +setName(name:String): void
Público se refiere al método/atributos a los que pueden acceder otras 
clases. Ninguna otra clase puede acceder a métodos/atributos privados.
Otras clases no pueden acceder a los métodos/atributos protegidos, excepto aquellas 
clases heredadas de esta clase (se explica a continuación).
Hay varias relaciones fundamentales entre diferentes clases: dependencia, 
herencia, composición y agregación. La dependencia representa una clase 
dependiente de otra. La herencia es una relación importante en la que una clase es 
un subtipo de otra clase.Figura 1.8ilustra la dependencia entre la geometría y los 
sistemas de coordenadas en el sentido de que la existencia de la geometría 
depende de un sistema de coordenadas. Esta relación está representada por una 
línea discontinua y una flecha desde la geometría hasta la clase del sistema de 
coordenadas. La relación entre un punto, una línea y un polígono se clasifican 
dentro de la clase de geometría.
La agregación y la composición son otras dos relaciones importantes en UML. 
La agregación representa la relación "tiene un" en UML. Por ejemplo, un estado 
es una agregación de varios condados (Figura 1.9a). La composición representa, 
o “posee” la relación. Por ejemplo, una clase multipunto puede estar compuesta 
por dos o más puntos (Figura 1.9b).
La relación se puede cuantificar por el número de elementos involucrados. Por 
ejemplo, una línea incluye más de 2 puntos y un estado incluye más de 0 condados. 
Hay seis tipos diferentes de esta relación de multiplicidad (Figura 1.10). Un 
multipunto se compone de dos o más puntos (Figura 1.9b) y un estado se agrega 
por cero o más condados.
Un objeto es uninstanciaciónde una clase El diagrama de objetos muestra una vista completa o 
parcial de la estructura del sistema modelo en un momento específico. Entonces, el estado
Introducción 13
D
ia
gr
am
a
Es
tr
uc
tu
ra
di
ag
ra
m
a
Co
m
po
rt
am
ie
nt
o
di
ag
ra
m
a
Cl
as
e
di
ag
ra
m
a
Co
m
po
ne
nt
e
di
ag
ra
m
a
O
bj
et
o
di
ag
ra
m
a
Ac
tiv
id
ad
di
ag
ra
m
a
ca
so
 d
e 
us
o
di
ag
ra
m
a
Co
m
pu
es
to
es
tr
uc
tu
ra
di
ag
ra
m
a
Es
ta
do
m
áq
ui
na
di
ag
ra
m
a
Pe
rf
il
di
ag
ra
m
a
D
es
pl
ie
gu
e
di
ag
ra
m
a
Pa
qu
et
e
di
ag
ra
m
a
In
te
ra
cc
ió
n
di
ag
ra
m
a
In
te
ra
cc
ió
n
vi
si
ón
 g
en
er
al
di
ag
ra
m
a
Se
cu
en
ci
a
di
ag
ra
m
a
Co
m
un
ic
ac
ió
n
di
ag
ra
m
a
M
om
en
to
di
ag
ra
m
a
N
ot
ac
ió
n:
 U
M
L
FI
G
U
RA
 1
.7
El
 d
ia
gr
am
a 
de
 c
la
se
s 
y 
el
 d
ia
gr
am
a 
de
 o
bj
et
os
 u
til
iz
ad
os
 e
n 
es
te
 li
br
o.
14Introducción a la Programación GIS y Fundamentos con Python y ArcGIS®
Geometría Sistema coordinado
Punto Línea Polígono
FIGURA 1.8
Herencia y dependencia.
(a)

Continuar navegando