Esempi di settore di utilizzo di ArcPy in Python per il Geoprocessing?


12

Recentemente alcuni studenti mi hanno chiesto quali tipi di operazioni l'analista / sviluppatore GIS di solito sta cercando di automatizzare utilizzando Python con geoprocessing in ArcGIS e pacchetto del sito ArcPy. Immagino che potrebbe essere utile sapere quando si cercano alcuni esercizi da fare per essere sicuri che ciò che si crea sia rilevante per il settore e possa essere riutilizzato in un secondo momento già sul posto di lavoro.

La risposta più semplice sarebbe "leggere l'aiuto di Esri ed esaminare gli esempi", ma stavo cercando scenari più specifici che sono più comuni da implementare. Pertanto, condividere i flussi di lavoro come "stiamo ottenendo un file .zip con shapefile, usiamo Python per decomprimerlo, proiettarli tutti sul sistema di coordinate X, caricarli in un geodatabase ArcSDE, concedere agli utenti l'accesso a questi dati" sono i benvenuti. Non esitare a fornire una descrizione concisa del flusso di lavoro, non sono richiesti dettagli estremi.

Risposte:


10

Per me, come suggerisce la tua domanda, uso molto Python per automatizzare in particolare l'elaborazione batch, ma anche per creare calcoli specialistici ripetibili. In questi giorni non uso ArcPy perché non posso permettermi le licenze ESRI come consulente GIS freelance. Uso molto GDAL / OGR, Shapely, PostGIS, Numpy e SciPy, anche se tutto nella mia lista potrebbe essere fatto con ArcPy (e in parte lo era). Esempi inclusi:

  1. Derivazione delle statistiche zonali per tutto il Regno Unito che per prima cosa richiede il mosaico di tessere raster di 20 km di due diversi tipi di dati, eseguendo alcune "mappe geografiche" su quei raster, fondendo l'area equivalente di tessere poligonali vettoriali di 10 km, calcolando le statistiche zonali del risultato del mapematica raster e unione della tabella delle statistiche con i dati vettoriali originali prima di essere trasmessa agli shapefile in una struttura di directory logica e masterizzata su CD per il client.
  2. Esecuzione di calcoli di visibilità sequenziale ogni 100 m lungo una strada o traccia e quindi assegnando i risultati del calcolo come valori M ai dati del percorso.
  3. Processo automatizzato per la creazione di modelli di paesaggi 3D mediante mosaico / fusione di riquadri di dati raster e vettoriali, ritaglio nell'area richiesta e conversione in formato 3D proprietario (non GIS). Uso la piccola libreria Python che ho sviluppato molto per questo nel mio lavoro come freelance.
  4. Un grande progetto a cui ho lavorato in un team ha utilizzato ArcPy per creare processi batch per convertire o derivare nuovi dati dai dati GIS in un formato con funzionalità che potrebbero essere utilizzate da un generatore procedurale di giochi per computer. Gli script di geoprocessing sono stati chiamati da un 'driver-driver' di elaborazione batch scritto anche in Python e che attraversa Django.
  5. Python è molto utile anche per piccoli compiti, in particolare dove c'è qualche ripetizione (ad esempio funzionalità mediante elaborazione di funzionalità). Il Model Builder di ArcGIS è molto migliorato con i controlli di flusso disponibili nella versione 10, ma nonostante ciò spesso non è in grado di fornire il controllo necessario e / o è più semplice e veloce scrivere il processo in ArcPy piuttosto che provare a Costruire Model Builder.
  6. Ho creato uno strumento in Python per eseguire l'analisi del percorso spazzato (per calcolare se un veicolo molto lungo può seguire un determinato percorso e dove è probabile che il rimorchio si incunni in curve strette tra gli edifici. Questo è un altro specialista che si occupa di freelance arsenale.
  7. Generare output da Mapnik
  8. Prima che ArcGIS diventasse multithread, utilizzavo Python per consentirmi di generare sottoprocessi che a volte potevano velocizzare i calcoli lunghi e lenti senza che il sovraccarico di ArcMap ingombrasse la memoria.

Python nel geoprocessing commerciale è eccezionale perché hai tutta la velocità e la brevità degli script forniti da Python e la velocità di elaborazione del codice compilato in stile C, perché, mentre Python viene interpretato, chiama principalmente il codice compilato in stile C sotto il cofano. Python fornisce la colla che può contenere molte attività di geoprocessing sequenziali insieme e l'elenco sopra è solo una piccola istantanea di alcune delle cose per le quali lo uso personalmente. Nei "Good Old Days" avremmo creato un file Watch e fatto in modo che ArcInfo registrasse il nostro input da riga di comando e poi ripulisse l'AML (che ricorda Arc Macro Language!) Per creare un processo riutilizzabile di chiamate di geoprocessing incollate insieme all'AML. Non è così diverso in questi giorni, tranne che usiamo Python o C # come colla.


1
Stranamente ho appena risposto a questa domanda ( gis.stackexchange.com/questions/52478/… ) - che fornisce un altro esempio dell'uso di Python come metodo per battere le perdite di memoria di ArcGIS!
MappaGnosis,

+1, mi piacerebbe in particolare vedere un argomento del blog GIS.SE su # 4.
blah238,

1
Anche se la società è ormai defunta e me ne sono andata poco fa, un'altra società ha acquistato l'IP, quindi non so quanto potrei essere esplicito. Ad ogni modo, puoi ottenere alcuni indizi sul lato multiprocessore dalla mia risposta nel link nel mio commento sopra. Penso di poter anche aggiungere che la nostra farm di geoprocessing aveva una macchina a 16 core, due server a 8 core e circa una dozzina di PC dual core "ritirati", tutti gestiti dal driver slave. ESRI ha persino mandato alcuni ragazzi a venire a dare un'occhiata a ciò che avevamo fatto perché non usavamo ArcServer per questo. Abbiamo fatto funzionare le macchine così duramente che due addirittura hanno preso fuoco!
MappaGnosis,

7

Da dove cominciare ... Sono un grande sostenitore di Python nell'impresa, anche se ora lavoro in un governo di stato superiore. Ecco alcuni esempi di attività per le quali ho usato Python:

  1. Spostamento dei dati. Compiti abbastanza semplici come lo spostamento sistematico dei dati possono essere automatizzati molto facilmente con Python, specialmente con il shutilmodulo pronto all'uso.
  2. Esportazione di occhiali da un database ArcSDE e in shapefile per il consumo da parte di altri pacchetti software. ArcSDE (o qualche altro database relazionale) è spesso il record principale in un'organizzazione, ma non tutti i pacchetti software possono essere agganciati a un database. Molti pacchetti consumeranno comunque buoni file shape ole e, usando arcpy, è indolore esportarli di notte, in modo che i tuoi utenti possano avere dati aggiornati.
  3. Creazione di set di dati spaziali da set di dati diversi. Tutti nell'azienda utilizzano (e spesso usano in modo improprio) Excel per conservare i propri dati. Con arcpy(o altri metodi Pythonic) è facile prendere quei dati tabulari che hanno un componente spaziale e creare rapidamente un set di dati spaziali da esso. Lo stesso vale per i file di testo. Di recente ho creato uno strumento ArcToolbox per un client che legge file di testo in un formato XYZ proprietario e crea polilinee abilitate per ZM (non posso davvero condividere molto più di quello su quello).
  4. Tradurre i dati GIS in modo che possano essere inseriti in software che non ha idea di cosa sia "spaziale". Sto scrivendo strumenti in questo momento che accettano set di dati GIS (raster, vettori) e inseriscono i dati in un programma di modellazione 3D tramite la sua API Python. Questo pacchetto 3D non può assolutamente funzionare con i formati di dati spaziali, ma può funzionare con i valori e gli attributi del testo dietro i dati spaziali. Per questo sto usando arcpyestrarre le informazioni dal geodatabase e trasferirle in file di testo o in un file di configurazione XML.
  5. Recuperando i dati. Hai un sito web con una tabella di dati di cui hai bisogno? Utilizzare beautifulsoupper estrarlo. Hai un sito FTP con centinaia o migliaia di file che devi recuperare? Usa urllib2o ftplibper scaricarli facilmente.

Questi sono solo alcuni esempi. La cosa fantastica di Python nell'azienda è che anche senza i diritti di amministratore completi per la tua macchina, come spesso accade, puoi comunque ottenere abbastanza. Combinalo con la delicata curva di apprendimento e la leggibilità di Python e avrai un ottimo strumento di automazione per GIS Tech / Analyst che non ha molta esperienza di programmazione.


6

Lavoro in un comune e la banda GIS fornisce supporto ai nostri vari dipartimenti (ingegneria, ispezioni degli edifici, legge locale, parchi, incendi, ecc.).

  1. Aggiornamento delle informazioni sul pacco e sull'indirizzo civico. Abbiamo script piuttosto lunghi che manipolano i dati spaziali e di attributo, il che implica l'uso di vari strumenti di geoprocessing per eseguire operazioni spaziali e la connessione a database relazionali per acquisire informazioni che vengono poi unite ai nostri dati spaziali.
  2. Strumenti personalizzati. Abbiamo creato strumenti personalizzati utilizzando la nuova procedura guidata del componente aggiuntivo Python per alcuni membri del nostro personale non GIS. Alcuni membri del nostro personale devono leggere i dati spaziali ed eseguire alcune manipolazioni di base. Abbiamo progettato barre degli strumenti che consentono loro di fare tutto ciò che devono fare senza entrare nell'intestino dell'ambiente ArcGIS.

Come altri hanno affermato, questi sono solo alcuni esempi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.