Organizacja plików do udostępniania kodu python ArcGIS

13

Jaka jest najlepsza struktura organizacyjna do udostępniania kodu python ArcGIS i narzędzi geoprzetwarzania? Lub nawet, czy dzielenie się kodem i narzędziami do dzielenia się osobnymi pytaniami?

Esri ma Metody dystrybucji struktury narzędzi , opublikowane dla Arcgis 9.3 i 10.0:

przykład struktury folderów narzędzi dystrybucyjnych

Jednak w innych miejscach ludzie mówią takie rzeczy, jak Also do avoid distributing your code the way its done in Arc Scripts or Code Galleriesna rzecz rodzimego języka Python Distutils . Wydaje się, że Esri nie ma odpowiedniego artykułu o narzędziach dystrybucyjnych dla 10.1 ( ref ), co nadaje pewną wagę kontrargumentowi.

Co mówi GIS.se?

Aktualizacja: choć może za późno, ale sedno tego pytania dotyczy bardziej dobrych praktyk dotyczących struktury plików i folderów, zanim pojawią się narzędzia używane do udostępniania (arcgis online, google drive, dropbox, github, bitbucket itp.) grać.

Aktualizacja 2: i czy nikt nie zabierze głosu w sprawie pozornie sierocych destylin?

matowe wilkie
źródło
Czy kiedykolwiek wymyśliłeś nadające się do tego rozwiązanie?
traggatmot
@traggatmot nie, nie mam. Dzisiaj sprawdziłbym witrynę Esith na Github pod kątem projektu python-with-toolbox-with z największą liczbą gwiazd i / lub najbardziej aktywną historią wkładów (nacisk na 2, ponieważ w tym Q chodzi o udostępnianie i ponowne użycie)
matt wilkie

Odpowiedzi:

10

W wersjach 10.1 i 10.2 przedstawione przez ciebie foldery Toolshare wydają się nie być dokumentowane.

Podejrzewam, że dzieje się tak, ponieważ obecną rekomendacją byłoby używanie pakietów geoprzetwarzania zamiast folderów Toolshare:

Pakiety geoprzetwarzania są tworzone z jednego lub więcej wyników w oknie Wyniki. Wszystkie dane i narzędzia użyte do utworzenia wyniku znajdują się w pakiecie. Możesz dodać dodatkowe pliki do pakietu, takie jak dokumenty tekstowe, pokazy slajdów i skompresowane pliki ZIP. Twój kolega rozpakowuje paczkę i natychmiast zaczyna korzystać z jej zawartości.

Jeśli chodzi o najlepsze praktyki organizacyjne, sposób, w jaki przechowuję skrzynki narzędziowe i dowolny kod Pythona, którego używają, znajduje się w tej samej strukturze folderów, z której nadal można korzystać w celu ich dystrybucji, tj. W strukturze folderów Toolshare.

PolyGeo
źródło
... co, jak sądzę, oznacza, że ​​odpowiedź na „jaka jest struktura organizacyjna” może zostać odkryta poprzez ręczne rozpakowanie pliku pakietu geoprzetwarzania i sprawdzenie jego wewnętrznych właściwości.
matt wilkie
Nie próbowałem zmienić nazwy na * .zip i rozpakować * .gpk, ale rozumiem, że możesz to zrobić. Podejrzewam, że będzie to wyglądało okropnie jak folder udostępnionego narzędzia.
PolyGeo
5

Korzystam z Dysku Google do udostępniania skryptów Python i narzędzi skryptowych między kolegami. Wszystkie skrypty są przechowywane w folderze współdzielonym wraz z przybornikiem ArcGIS, który zawiera wszystkie połączone narzędzia skryptów (i modele). Istnieje kilka korzyści z tego podejścia: 1) Wszyscy pracują na tych samych wersjach skryptu, 2) Możesz ustawić uprawnienia do zapisu lub tylko do odczytu, oraz 3) Współpraca, na przykład w różnych miejscach pracy, na uniwersytetach i krajach jest znacznie łatwiejsza dzięki Google Jedź niż próbuj ustawić dostęp użytkownika na serwerze, którym możesz administrować lub nie.

Aaron
źródło
1
+1, to samo można powiedzieć o Dropbox
om_henners
Więc przechowujesz wszystkie swoje skrypty i skrzynki na narzędzia na tym samym poziomie folderów, prawda?
RyanKDalton,
@RyanDalton Dla uproszczenia zazwyczaj przechowuję foldery jeden głęboko na tym samym poziomie co skrzynki narzędziowe. Chociaż Gdrive obsługuje również skomplikowaną strukturę plików.
Aaron
2
Każdy, kto uzna ten przepływ pracy za atrakcyjny, powinien zdecydowanie spojrzeć na oprogramowanie do kontroli wersji Git i jego popularną witrynę do udostępniania repozytoriów GitHub. Daje ci to wszystko - skrypt główny, zdefiniowane uprawnienia i szeroki dostęp - z możliwością śledzenia wszystkich zmian wprowadzonych w skrypcie (w tym daty i autora), eksperymentowania z nowymi funkcjami przy zachowaniu wersji produkcyjnej, zarządzania wieloma edytowanie tych samych plików jednocześnie itp. Jest to bardziej skomplikowane w użyciu, ale okazało się, że jest niezwykle przydatne.
Matt Parker
Dysk Google, Dropbox, Git + Github, Mercurial + Bitbucket i przyjaciele to świetne sposoby udostępniania plików i kodu, ale to nie jest sedno tego pytania. Poszukuję najlepszych praktyk dotyczących struktury plików i folderów, zanim pojawią się narzędzia używane do udostępniania.
matt wilkie
1

Dokument ArcGIS Pro Esri. Rozszerzanie geoprzetwarzania za pomocą modułów Python pokazuje, jak zbudować projekt przyjazny dla Distutils, w tym tworzenie binarnych instalatorów Windows i Linux.

(Uwaga: służy do udostępniania skryptów i narzędzi, nie jest to dobry model do udostępniania skryptów, map i danych w jednym pakiecie).

Układ projektu źródłowego:

Drzewo Src

Staje się to w systemie użytkownika końcowego pod C:\Path\to\ArcGIS\Desktop\python

Drzewo folderów docelowych

Nie wspominają o pip, ale po przestudiowaniu przykładów nie rozumiem, dlaczego to nie zadziałałoby. Np .: w przypadku edycji grupowej i / lub zestawu narzędzi, który często się zmienia, zainstaluj za pomocą pip install --editable X:\path\to\src,pip install --editable http://github.com/project/path/to/master

matowe wilkie
źródło