Organizzazione dei file per la condivisione del codice Python ArcGIS


13

Qual è la migliore struttura organizzativa per la condivisione del codice Python ArcGIS e degli strumenti di geoprocessing? O addirittura, la condivisione di codice e strumenti di condivisione sono domande separate?

Esri ha un metodo per distribuire la struttura degli strumenti , pubblicato per Arcgis 9.3 e 10.0:

esempio di struttura delle cartelle degli strumenti di distribuzione

Tuttavia, in altri luoghi le persone dicono cose come Also do avoid distributing your code the way its done in Arc Scripts or Code Galleriesa favore del pitut distutils nativo . Esri non sembra avere un corrispondente articolo sugli strumenti di distribuzione per 10.1 ( rif ), prestando un po 'di peso alla contro-argomentazione.

Cosa dice GIS.se?

Aggiornamento: anche se forse troppo tardi, ma il nocciolo di questa domanda è più sulle migliori pratiche per la struttura di file e cartelle prima che entrino gli strumenti usati per la condivisione (arcgis online, google drive, dropbox, github, bitbucket, ecc.) giocare.

Update2: e nessuno parlerà per l'approccio distutils apparentemente orfano?


Hai mai trovato una soluzione praticabile per questo?
traggatmot,

@traggatmot no Non l'ho fatto. Oggi ispezionerei il sito Github di Esri per il progetto python-with-toolboxes con il maggior numero di stelle e / o cronologia dei contributi più attivi (enfasi sul 2 ° poiché questa Q riguarda la condivisione e il riutilizzo)
matt wilkie

Risposte:


10

A 10.1 e 10.2 le cartelle di condivisione degli strumenti illustrate non sembrano più essere documentate.

Sospetto che ciò sia dovuto al fatto che l'attuale raccomandazione sarebbe quella di utilizzare i pacchetti di geoprocessing piuttosto che le cartelle Toolshare:

I pacchetti di geoprocessing vengono creati da uno o più risultati nella finestra Risultati. Tutti i dati e gli strumenti utilizzati per creare il risultato sono inclusi nel pacchetto. È possibile aggiungere ulteriori file al pacchetto, ad esempio documenti di testo, presentazioni e file ZIP compressi. Il tuo collega disimballa il pacchetto per iniziare immediatamente a usarne il contenuto.

In termini di best practice organizzativa, il modo in cui immagazzino le caselle degli strumenti e qualsiasi codice Python che usano è nella stessa struttura di cartelle che può ancora essere utilizzata per aiutare a distribuirle, ad esempio la struttura delle cartelle di Toolshare.


... che suppongo significhi che la risposta a "qual è la struttura organizzativa" può essere scoperta decomprimendo manualmente un file di pacchetto di geoprocessing ed esaminandone le parti interne.
matt wilkie,

Non ho provato a rinominare * .zip e decomprimere un * .gpk ma la mia comprensione è che potresti farlo. Sospetto che assomiglierà moltissimo a una cartella di strumenti condivisi.
PolyGeo

5

Ho usato Google Drive per condividere script e strumenti di script Python tra colleghi. Tutti gli script sono memorizzati in una cartella condivisa insieme a una casella degli strumenti ArcGIS, che contiene tutti gli strumenti (e modelli) di script collegati. Questo approccio offre diversi vantaggi: 1) Tutti lavorano con le stesse versioni di script, 2) Puoi impostare i privilegi di scrittura o di sola lettura e 3) La collaborazione, ad esempio, tra diversi luoghi di lavoro, università e Paesi è molto più semplice con Google Guidare piuttosto che tentare di impostare l'accesso dell'utente su un server che è possibile o meno amministrare.


1
+1, e lo stesso si può dire per Dropbox
om_henners,

Quindi memorizzi tutti i tuoi script e toolbox allo stesso livello di cartella, giusto?
RyanKDalton,

@RyanDalton Per semplicità, di solito immagazzino le cartelle in profondità allo stesso livello delle cassette degli strumenti. Anche se, Gdrive supporta anche una struttura di file complicata.
Aaron

2
Chiunque ritenga interessante questo flusso di lavoro dovrebbe assolutamente dare un'occhiata al software di controllo versione Git e al suo popolare sito Web di condivisione repository, GitHub. Ti offre tutto quanto sopra - uno script principale, privilegi definiti e ampia accessibilità - con la possibilità di tenere traccia di tutte le modifiche apportate allo script (inclusi data e autore), sperimentare nuove funzionalità preservando la versione di produzione, gestirne più modificare gli stessi file contemporaneamente, ecc. È più complicato da usare, ma l'ho trovato immensamente utile.
Matt Parker,

Google Drive, Dropbox, Git + Github, Mercurial + Bitbucket e gli amici sono tutti ottimi percorsi per condividere file e codice, ma non è questo il nocciolo di questa domanda. Sto cercando le migliori pratiche per la struttura di file e cartelle prima che gli strumenti utilizzati per la condivisione entrino in gioco.
Matt Wilson

1

Il documento ArcGIS Pro di Esri L' estensione del geoprocessing attraverso i moduli Python mostra come strutturare un progetto che sia compatibile con Distutils, inclusa la costruzione di programmi di installazione binari per Windows e Linux.

(Nota: questo serve per condividere script e strumenti, non è un buon modello per condividere script, mappe e dati come un singolo pacchetto.)

Layout del progetto di origine:

Albero Src

Diventa questo sul sistema dell'utente finale, sotto C:\Path\to\ArcGIS\Desktop\python

Albero delle cartelle di destinazione

Non menzionano pip ma dallo studio degli esempi non vedo perché non funzionerebbe. Esempio: per la modifica collaborativa e / o un set di strumenti che cambia spesso, installa utilizzando pip install --editable X:\path\to\src,pip install --editable http://github.com/project/path/to/master

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.