Organización de archivos para compartir código Python de ArcGIS

13

¿Cuál es la mejor estructura organizativa para compartir el código Python de ArcGIS y las herramientas de geoprocesamiento? O incluso, ¿compartir código y compartir herramientas son preguntas separadas?

Esri tiene una estructura de Métodos para distribuir herramientas , publicada para Arcgis 9.3 y 10.0:

ejemplo de estructura de carpetas de herramientas de distribución

Sin embargo, en otros lugares, la gente está diciendo cosas Also do avoid distributing your code the way its done in Arc Scripts or Code Galleriesa favor de los Python Distutils nativos . Esri no parece tener un artículo de herramientas de distribución correspondiente para 10.1 ( ref ), dando algo de peso al contraargumento.

¿Qué dice GIS.se?

Actualización: aunque tal vez sea demasiado tarde, pero el meollo de esta pregunta es más sobre las mejores prácticas para la estructura de archivos y carpetas antes de que entren las herramientas utilizadas para compartir (arcgis online, google drive, dropbox, github, bitbucket, etc.) jugar.

Actualización 2: ¿ y nadie hablará sobre el enfoque aparentemente inutil de distutils?

wilkie mate
fuente
¿Alguna vez se te ocurrió una solución viable para esto?
traggatmot 03 de
@traggatmot no, no lo he hecho. Hoy inspeccionaría el sitio Github de Esri para el proyecto python-with-toolboxes con el mayor número de estrellas y / o el historial de contribuciones más activo (énfasis en el segundo puesto que esta Q trata sobre compartir y reutilizar)
matt wilkie

Respuestas:

10

En 10.1 y 10.2, las carpetas de herramientas compartidas que usted ilustró ya no están documentadas.

Sospecho que esto se debe a que la recomendación actual sería usar paquetes de geoprocesamiento en lugar de carpetas de Toolshare:

Los paquetes de geoprocesamiento se crean a partir de uno o más resultados en la ventana Resultados. Todos los datos y herramientas utilizados para crear el resultado están incluidos en el paquete. Puede agregar archivos adicionales al paquete, como documentos de texto, presentaciones de diapositivas y archivos ZIP comprimidos. Su colega desempaqueta el paquete para comenzar a usar inmediatamente su contenido.

En términos de mejores prácticas organizativas, la forma en que almaceno las cajas de herramientas y cualquier código de Python que usan está en la misma estructura de carpetas que todavía se puede usar para ayudar a distribuirlas, es decir, la estructura de carpetas de Toolshare.

PolyGeo
fuente
... lo que supongo significa que la respuesta a "cuál es la estructura organizativa" puede descubrirse descomprimiendo manualmente un archivo de paquete de geoprocesamiento y examinando sus entrañas.
Matt Wilkie
No he intentado renombrar a * .zip y descomprimir un * .gpk, pero tengo entendido que podría hacerlo. Sospecho que se parecerá mucho a una carpeta de herramientas compartidas.
PolyGeo
5

He estado usando Google Drive para compartir scripts de Python y herramientas de scripts entre colegas. Todos los scripts se almacenan en una carpeta compartida junto con una caja de herramientas de ArcGIS, que contiene todas las herramientas (y modelos) de scripts vinculados. Este enfoque tiene varios beneficios: 1) Todos trabajan con las mismas versiones de script, 2) Puede establecer privilegios de escritura o solo lectura, y 3) La colaboración, por ejemplo, en diferentes lugares de trabajo, universidades y países es mucho más fácil con Google Conduzca más que tratar de configurar el acceso de los usuarios en un servidor que puede o no administrar.

Aaron
fuente
1
+1, y lo mismo podría decirse de Dropbox
om_henners
Entonces almacena todos sus scripts y cajas de herramientas en el mismo nivel de carpeta, ¿correcto?
RyanKDalton
@RyanDalton Por simplicidad, suelo almacenar carpetas de una profundidad en el mismo nivel que las cajas de herramientas. Aunque, Gdrive también admite una estructura de archivos complicada.
Aaron
2
Cualquiera que encuentre este flujo de trabajo atractivo definitivamente debería echar un vistazo al software de control de versiones Git y su popular sitio web para compartir repositorios, GitHub. Le ofrece todo lo anterior, un script maestro, privilegios definidos y amplia accesibilidad, con la capacidad de rastrear todos los cambios realizados en el script (incluida la fecha y el autor), experimentar con nuevas características mientras preserva la versión de producción, administrar múltiples editar los mismos archivos simultáneamente, etc. Es más complicado de usar, pero he encontrado que es inmensamente útil.
Matt Parker
Google Drive, Dropbox, Git + Github, Mercurial + Bitbucket y sus amigos son excelentes rutas para compartir archivos y códigos, pero esa no es la esencia de esta pregunta. Busco las mejores prácticas para la estructura de archivos y carpetas antes de que entren en juego las herramientas utilizadas para compartir.
Matt Wilkie
1

El documento ArcGIS Pro de Esri La extensión del geoprocesamiento a través de módulos Python muestra cómo estructurar un proyecto que sea compatible con Distutils, incluida la construcción de instaladores binarios de Windows y Linux.

(Nota: esto es para compartir scripts y herramientas, no es un buen modelo para compartir scripts y mapas y datos como un solo paquete).

Diseño del proyecto fuente:

Árbol Src

Se convierte en esto en el sistema del usuario final, bajo C:\Path\to\ArcGIS\Desktop\python

Árbol de carpetas de destino

No mencionan pip, pero al estudiar los ejemplos no veo por qué no funcionaría. Ej: para edición colaborativa y / o un conjunto de herramientas que cambia con frecuencia, instale usando pip install --editable X:\path\to\src,pip install --editable http://github.com/project/path/to/master

wilkie mate
fuente