¿Ejemplos basados ​​en la industria del uso de ArcPy en Python para geoprocesamiento?

12

Algunos estudiantes me preguntaron recientemente qué tipos de operaciones los analistas / desarrolladores de SIG generalmente intentan automatizar utilizando Python con geoprocesamiento en el paquete de sitio ArcGIS y ArcPy. Supongo que puede ser útil saber al buscar algunos ejercicios para asegurarse de que lo que cree sea relevante para la industria y pueda reutilizarse más tarde en el lugar de trabajo.

La respuesta más fácil sería "leer la ayuda de Esri y revisar las muestras", pero estaba buscando escenarios más específicos que sean más comunes de implementar. Por lo tanto, compartir flujos de trabajo como "estamos obteniendo un archivo .zip con shapefiles, usamos Python para descomprimirlo, proyectarlos todos en el sistema de coordenadas X, cargarlos en una geodatabase de ArcSDE, otorgar a los usuarios acceso a estos datos" son bienvenidos. Siéntase cómodo para proporcionar una descripción concisa del flujo de trabajo, no se requieren detalles extremos.

Alex Tereshenkov
fuente

Respuestas:

10

Para mí, como sugiere su pregunta, utilizo mucho Python para automatizar el procesamiento por lotes en particular, pero también para crear cálculos especializados repetibles. En estos días no uso ArcPy porque no puedo pagar las licencias de ESRI como consultor independiente de GIS. Uso mucho GDAL / OGR, Shapely, PostGIS, Numpy y SciPy, aunque todo en mi lista podría hacerse con ArcPy (y algunos de ellos lo fueron). Ejemplos incluyen:

  1. Obtener estadísticas zonales para todo el Reino Unido que primero requiere mosaicos de mosaicos ráster de 20 km de dos tipos de datos diferentes, realizar algunas "mapemáticas" en esos rásteres, fusionar el área equivalente de mosaicos de polígonos vectoriales de 10 km, calcular las estadísticas zonales del resultado del mapemática ráster y unir la tabla de estadísticas a los datos vectoriales originales antes de enviarlos a archivos shape en una estructura de directorio lógico y grabarlos en un CD para el cliente.
  2. Realizando cálculos de visibilidad secuencial cada 100 m a lo largo de una carretera o pista y luego asignando los resultados del cálculo como valores M en los datos de la ruta.
  3. Proceso automatizado para crear modelos de paisajes en 3D mediante el mosaico / fusión de mosaicos de datos ráster y vectoriales, recortando el área requerida y luego convirtiendo a un formato 3D patentado (no SIG). Utilizo mucho la pequeña biblioteca de Python que desarrollé para esto en mi trabajo independiente.
  4. Un gran proyecto en el que trabajé en un equipo usó ArcPy para crear procesos por lotes para convertir o derivar nuevos datos de datos SIG a un formato con características que podrían ser consumidas por un generador de activos de juegos de computadora procesal. Los scripts de geoprocesamiento fueron llamados por un procesador por lotes 'controlador esclavo' también escrito en Python y que se ejecuta a través de Django.
  5. Python es muy útil incluso para tareas pequeñas, particularmente cuando hay alguna repetición (por ejemplo, procesamiento de característica por característica). El Model Builder de ArcGIS ha mejorado mucho con los controles de flujo que se incluyeron en la versión 10, pero aun así, con frecuencia no puede proporcionar el control necesario y / o es más rápido y fácil escribir el proceso en ArcPy que intentarlo. coerce Model Builder.
  6. He creado una herramienta en Python para realizar un análisis de ruta de barrido (para calcular si un vehículo muy largo puede seguir una ruta determinada y dónde es probable que el remolque se atasque en curvas cerradas entre edificios. Este es otro especialista que trabaja por cuenta propia. arsenal.
  7. Generando salida de Mapnik
  8. Antes de que ArcGIS se volviera multiproceso, usé Python para permitirme generar subprocesos que a veces podrían acelerar cálculos largos y lentos sin la sobrecarga de ArcMap que satura la memoria.

Python en el geoprocesamiento comercial es excelente porque tiene toda la velocidad y brevedad de las secuencias de comandos que proporciona Python y la velocidad de procesamiento del código compilado de estilo C, porque, mientras se interpreta Python, en su mayoría llama al código compilado de estilo C bajo el capó. Python proporciona el pegamento que puede mantener juntas muchas tareas de geoprocesamiento secuenciales y la lista anterior es solo una pequeña instantánea de algunas de las cosas para las que lo uso personalmente. En 'Good Old Days' configuramos un archivo Watch y hacemos que ArcInfo registre nuestra entrada de línea de comandos y luego limpiemos el AML (¡quién recuerda el lenguaje de macro de arco!) Para hacer un proceso reutilizable de llamadas de geoprocesamiento pegadas con AML. No es tan diferente en estos días, excepto que usamos Python o C # como pegamento.

MappaGnosis
fuente
1
Curiosamente, acabo de responder a esta pregunta ( gis.stackexchange.com/questions/52478/… ), ¡que da otro ejemplo del uso de Python como método para vencer las pérdidas de memoria de ArcGIS!
MappaGnosis
+1, en particular me gustaría ver un tema del blog GIS.SE en el n. ° 4.
blah238
1
Aunque la compañía ahora está extinta y me fui hace un tiempo, otra compañía compró la IP, así que no sé cuán explícito podría ser. De todos modos, puedes obtener algunas pistas sobre el lado del multiprocesamiento de mi respuesta en el enlace de mi comentario anterior. Creo que también puedo agregar que nuestra granja de geoprocesamiento tenía una máquina de 16 núcleos, dos servidores de 8 núcleos y aproximadamente una docena de PC de doble núcleo 'retiradas', todas ejecutadas por el controlador esclavo. ESRI incluso envió a algunos tipos para que vieran lo que habíamos hecho porque no estábamos usando ArcServer para esto. ¡Corrimos las máquinas con tanta fuerza que incluso dos se incendiaron!
MappaGnosis
7

Por dónde empezar ... Soy un gran defensor de Python en la empresa, a pesar de que ahora trabajo en educación superior / gobierno estatal. Aquí hay algunos ejemplos de tareas para las que he usado Python:

  1. Moviendo datos. Las tareas bastante simples, como mover datos de forma rutinaria, se pueden automatizar muy fácilmente con Python, especialmente con el shutilmódulo listo para usar .
  2. Exportar clases de entidades fuera de una base de datos de ArcSDE y en archivos shape para su consumo por otros paquetes de software. ArcSDE (o alguna otra base de datos relacional) es a menudo el registro maestro en una organización, pero no todos los paquetes de software pueden conectarse a una base de datos. Muchos paquetes seguirán consumiendo buenos archivos de forma ole, y al usarlos arcpy, es fácil exportarlos todas las noches para que sus usuarios puedan tener datos actualizados.
  3. Crear conjuntos de datos espaciales a partir de conjuntos de datos dispares. Todos en la empresa usan (y a menudo usan mal) Excel para guardar sus datos. Con arcpy(u otros métodos Pythonic) es fácil tomar esos datos tabulares que tienen un componente espacial y crear rápidamente un conjunto de datos espaciales a partir de él. Lo mismo ocurre con los archivos de texto. Recientemente creé una herramienta ArcToolbox para un cliente que lee archivos de texto en un formato XYZ patentado y crea polilíneas habilitadas para ZM (realmente no puede compartir mucho más que eso en ese).
  4. Traducción de datos SIG para que puedan ser introducidos en un software que no tiene idea de lo que es "espacial". Estoy escribiendo herramientas en este momento que toman conjuntos de datos SIG (rásteres, vectores) y envían los datos a un programa de modelado 3D a través de su API Python. Este paquete 3D no puede funcionar con formatos de datos espaciales en absoluto, pero puede funcionar con los valores y atributos de texto detrás de los datos espaciales. Para esto, estoy usando arcpyextraer la información de la geodatabase y empujarla a archivos de texto o a un archivo de configuración XML.
  5. Recuperacion de datos. ¿Tienes un sitio web con las tablas de datos que necesitas? Use beautifulsouppara extraerlo. ¿Tienes un sitio FTP con cientos o miles de archivos que necesitas recuperar? Use urllib2o ftplibpara descargarlos fácilmente.

Eso son solo algunos ejemplos. Lo bueno de Python en la empresa es que, incluso sin derechos de administrador completos para su máquina, que a menudo es el caso, aún puede lograr bastante. Combine eso con la curva de aprendizaje suave y la legibilidad de Python, y tiene una gran herramienta de automatización para el SIG Tech / Analyst que no tiene mucha experiencia en programación.

Chad Cooper
fuente
6

Trabajo para un municipio, y la pandilla GIS brinda apoyo a nuestros diversos departamentos (Ingeniería, Inspecciones de edificios, Estatutos, Parques, Incendios, etc.).

  1. Actualización de información de paquetería y dirección cívica Tenemos scripts bastante largos que manipulan datos espaciales y de atributos, lo que implica el uso de varias herramientas de geoprocesamiento para realizar tareas espaciales y conectarse a bases de datos relacionales para obtener información que luego se une a nuestros datos espaciales.
  2. Herramientas a medida. Hemos creado herramientas personalizadas utilizando el nuevo asistente de complementos de Python para algunos de nuestros empleados que no son SIG. Parte de nuestro personal necesita leer datos espaciales y realizar algunas manipulaciones básicas. Hemos diseñado barras de herramientas que les permiten hacer lo que tengan que hacer sin entrar en las entrañas del entorno de ArcGIS.

Como han dicho otros, estos son solo algunos ejemplos.

dchaboya
fuente