Организация файлов для совместного использования кода Python ArcGIS

13

Какова наилучшая организационная структура для совместного использования кода Python ArcGIS и инструментов геообработки? Или даже, разделяют ли код и инструменты разделения отдельные вопросы?

У Esri есть Методы распределения инструментов по структуре, опубликованные для Arcgis 9.3 и 10.0:

пример структуры папок распределительного инструмента

Однако в других местах люди говорят что-то вроде Also do avoid distributing your code the way its done in Arc Scripts or Code Galleriesродного Python Distutils . У Esri, похоже, нет соответствующей статьи по распространению инструментов для 10.1 ( ссылка ), что придавало некоторый вес контраргументу.

Что говорит GIS.se?

Обновление: хотя, возможно, слишком поздно, но суть этого вопроса - больше о передовых методах для структуры файлов и папок, прежде чем появятся инструменты, используемые для обмена (arcgis online, google drive, dropbox, github, bitbucket и т. Д.) играть в.

Update2: и никто не будет высказываться по поводу явно сиротского подхода distutils?

Мэтт Уилки
источник
Вы когда-нибудь находили подходящее решение для этого?
traggatmot
@traggatmot нет у меня нет. Сегодня я бы осмотрел сайт Esri на Github для проекта python-with-toolboxes с наибольшим количеством звезд и / или самой активной историей вкладов (акцент на 2-й, поскольку этот Q посвящен обмену и повторному использованию)
Мэтт Уилки

Ответы:

10

В 10.1 и 10.2 папки с инструментальными средствами, которые вы иллюстрировали, похоже, больше не документированы.

Я подозреваю, что это потому, что текущая рекомендация будет использовать пакеты геообработки, а не папки Toolshare:

Пакеты геообработки создаются из одного или нескольких результатов в окне «Результаты». Все данные и инструменты, использованные для создания результата, включены в пакет. Вы можете добавить в пакет дополнительные файлы, такие как текстовые документы, слайд-шоу и сжатые файлы ZIP. Ваш коллега распаковывает пакет, чтобы немедленно начать использовать его содержимое.

С точки зрения наилучшей организационной практики способ хранения наборов инструментов и любого кода Python, который они используют, находится в той же структуре папок, которую все еще можно использовать для их распределения, т.е. в структуре папок Toolshare.

PolyGeo
источник
... что, как я полагаю, означает, что ответ на вопрос "что такое организационная структура" может быть обнаружен путем ручного распаковывания файла пакета геообработки и проверки его внутренней части.
Мэтт Вилки
Я не пробовал переименовывать в * .zip и разархивировать * .gpk, но, насколько я понимаю, вы можете это сделать. Я подозреваю, что это будет очень похоже на папку с инструментами.
PolyGeo
5

Я использую Google Drive для обмена скриптами Python и инструментами сценариев между коллегами. Все сценарии хранятся в общей папке вместе с набором инструментов ArcGIS, который содержит все связанные инструменты сценариев (и модели). У этого подхода есть несколько преимуществ: 1) все работают над одними и теми же версиями сценариев, 2) вы можете устанавливать права на запись или только чтение, и 3) совместная работа, например, между различными рабочими местами, университетами и странами, намного проще с Google. Диск, чем чем пытаться настроить доступ пользователя на сервере, который вы можете или не можете администрировать.

Аарон
источник
1
+1, и то же самое можно сказать о Dropbox
om_henners
Итак, вы храните все свои скрипты и наборы инструментов на одном уровне папок, верно?
RyanKDalton
@RyanDalton Для простоты я обычно храню папки на одну глубину на одном уровне с наборами инструментов. Хотя Gdrive также поддерживает сложную файловую структуру.
Аарон
2
Любой, кто считает этот рабочий процесс привлекательным, обязательно должен взглянуть на программное обеспечение Git для контроля версий и его популярный веб-сайт обмена репозиториями GitHub. Он предоставляет вам все вышеперечисленное - основной сценарий, определенные привилегии и широкий доступ - с возможностью отслеживать все изменения, внесенные в сценарий (включая дату и автора), экспериментировать с новыми функциями при сохранении рабочей версии, управлять несколькими редактирование одних и тех же файлов одновременно и т. д. Его сложнее использовать, но я считаю, что он очень полезен.
Мэтт Паркер
Google Drive, Dropbox, Git + Github, Mercurial + Bitbucket и друзья - все это отличные маршруты для обмена файлами и кодом, но это не самый важный вопрос. Я следую рекомендациям по структуре файлов и папок до того, как в игру вступят инструменты, используемые для обмена.
Мэтт Уилки
1

Документация Esri ArcGIS Pro Расширение геообработки с помощью модулей Python показывает, как структурировать проект, дружественный к Distutils, включая создание бинарных установщиков Windows и Linux.

(Примечание: это для совместного использования скриптов и инструментов, это не очень хорошая модель для совместного использования скриптов, карт и данных в виде одного пакета.)

Исходный макет проекта:

Дерево

Это делается в системе конечного пользователя, под C:\Path\to\ArcGIS\Desktop\python

Дерево папок назначения

Они не упоминают пипс, но изучая примеры, я не понимаю, почему это не сработает. Пример: для совместного редактирования и / или набора инструментов, который часто меняется, установите с помощью pip install --editable X:\path\to\src,pip install --editable http://github.com/project/path/to/master

Мэтт Уилки
источник