Po co uczyć się / korzystać z Python Toolbox zamiast Python Script Tools? [Zamknięte]

25

Napisałem kilka zestawów narzędzi Python (które są nowe w ArcGIS 10.1), ale jeszcze nie zdecydowałem, czy / kiedy powinienem je napisać, a nie Narzędzia skryptów Python w standardowym zestawie narzędzi.

Pomyślałem, że Pomoc online może mnie oświecić, gdy poprzedzi niektóre punkty kropki:

Po utworzeniu narzędzia w zestawie narzędzi Python mają wiele zalet

Jednak wydaje się, że wszystkie pięć wymienionych zalet nie jest w stanie używać Pythona do pisania narzędzi i żadna z nich nie określa przewagi Python Toolbox nad Python Script Tools.

Dwie zalety, o których mogę myśleć to:

  • Mogę teraz napisać „czyste” narzędzie Pythona w jednym skrypcie Pythona bez konieczności podłączania go do osobno utworzonego okna dialogowego z funkcją sprawdzania poprawności narzędzia, która wygląda tak, jakby została wprowadzona, ale cieszę się, że mogę być pragmatyczny, a nie czysty pod tym względem
  • Mógłbym teraz użyć kodu (Python lub dowolny język zdolny do pisania plików tekstowych), aby zautomatyzować pisanie zestawów narzędzi Python, ale jeszcze nie spotkałem się z tym wymaganiem

Czy przeoczam przekonujący przypadek, który doprowadził Esri do zapewnienia możliwości Python Toolbox, a jeśli tak, to o co chodzi?

PolyGeo
źródło

Odpowiedzi:

34

Oba są bardzo, bardzo blisko pod względem funkcjonalności, ale nie do końca równoważne.

Wspólne dla obu

  • Zawiera zestaw narzędzi z unikalnym aliasem do identyfikacji
  • Może dzwonić z arcpy
  • Uzyskaj bezpłatne okno dialogowe narzędzia geoprzetwarzania (zasadniczo pełny interfejs użytkownika) dla każdego narzędzia
  • Może przechowywać cały kod Pythona w jednym pliku (osadzanie źródła narzędzia TBX, trzymanie całej implementacji w jednym PYT) i rozpowszechniać za pośrednictwem poczty elektronicznej lub udostępnionych dysków sieciowych
  • Zawsze uruchamiaj na pierwszym planie w aplikacjach komputerowych. Ustawienie „Zawsze uruchamiaj na pierwszym planie” w kodzie ArcPy?

Unikalny dla plików TBX:

  • Może zawierać odniesienia do przyborników systemowych, niestandardowych narzędzi COM i niestandardowych narzędzi .Net
  • Narzędzia do budowania modeli mogą być zawarte w przyborniku
  • Dokumentacja narzędzia jest przechowywana w pliku .tbx
  • Prosty interfejs kreatora do konfigurowania parametrów i wykonywania kodu weryfikacyjnego
  • Uruchom skrypt Python we właściwości narzędzia Process
  • Wada: Nieprzezroczysty format binarny, nowsze wersje plików TBX muszą być jawnie zapisane jako starsze wersje do pracy w poprzednich wersjach oprogramowania, interfejs użytkownika może być mieczem o podwójnym ostrzu, ponieważ musisz przełączać się między stronami właściwości, aby sprawdzić, czy przegapiłeś jakiś ustawienie (takie jak ścieżki względne)

Unikalny w Python Toolbox:

  • Zwykły tekst, więc walizki mogą być traktowane tak samo, jak każdy inny kod (przydatne w środowiskach, w których kontrola dobry przegląd oprzyrządowanie jest stosowane, jak można prześledzić jego historię rozwoju - Spójrz, jak wiele projektów na GitHub użyć PYTponad TBX).
  • Większa kontrola nad niektórymi typami parametrów (a mianowicie możesz tworzyć złożone typy danych i definiować schematy tabel wartości)
  • Właściwość isLicensed może zostać użyta do wyłączenia narzędzia, jeśli produkt („ArcInfo”) lub rozszerzenie („przestrzenne”) nie jest dostępne.
  • Dokumentacja narzędzia jest przechowywana w plikach XML w tym samym folderze co .pyt
  • Wada: brak kreatora interfejsu użytkownika do konfigurowania parametrów narzędzia, znacznie więcej kodu rusztowania w Pythonie, zmienia programowanie Toolbox w bardziej formalne zadanie programistyczne niż zwykłe dodawanie skryptu implementacyjnego. Ponowne ładowanie pytania w celu załadowania zmian podczas programowania może być powolne, jeśli pytanie jest duże (można tego uniknąć, umieszczając narzędzia w innych plikach i importując je, aby nie musiały być ponownie kompilowane).

Jakiś czas temu, kiedy pracowałem nad kilkoma pierwszymi tuzinami PYTprzyborników, zorientowałem się, jak trudny był PYTpierwszy raz, więc opracowałem narzędzie o nazwietbx2pyt . Zajmie to TBXzestaw narzędzi i przekształcić go PYTz minimalną utratą kodu. W rzeczywistości, to, PYTco napędza to było pierwsze TBX. Może to być dobry sposób na przeniesienie istniejących narzędzi do formatu Python Toolbox, jeśli chcesz. Pozwala to przynajmniej skonfigurować parametry narzędzi za pomocą interfejsu użytkownika przed przełączeniem na kod.

Jason Scheirer
źródło
15

Sekcja pomocy zatytułowana Porównanie zestawów narzędzi niestandardowych i Python zawiera całkiem dobre porównanie tego, dlaczego możesz wybierać między sobą, chociaż z chęcią usłyszę zalety / wady „prawdziwego świata” od osób doświadczonych w tworzeniu Zestawów narzędzi Python.

Jedną z wyraźnych wad, które czytam, jest niemożność mieszania / dopasowywania modeli i skryptów w Zestawie narzędzi Python, tak jak w standardowym Zestawie narzędzi niestandardowych.

RyanDalton
źródło
11

Moim najważniejszym powodem, dla którego skłaniam się ku zestawom narzędzi Python, jest kontrola wersji i zarządzanie kodem źródłowym (patrz Stosowanie kontroli wersji w modelach ArcGIS ), a następnie bardzo blisko możliwość używania edytora kodu / IDE z uzupełnianiem tabulacji, wyrażeń regularnych, bibliotek fragmentów, itp.

Jednak, jak zauważa Ryan Dalton , robiąc to, tracisz możliwość korzystania z Konstruktora modeli i Narzędzi w starym stylu - chyba że jesteś gotów przejść przez proces budowania modelu, jak zwykle, a następnie eksportować do Pythona, a następnie przepisać w celu dopasowania do .pyt. (Jeśli to zrobisz, zapoznaj się z Wytycznymi dotyczącymi organizowania Python Toolbox (.pyt) w ArcGIS ). Obecnie ta wada jest na tyle duża, że ​​zacząłem poważnie używać przyborników Pythona.

Jeśli masz istniejące skrzynki narzędziowe, które chcesz przekonwertować na .pyt, może okazać się przydatny częściowy konwerter tbxtopyt Jasona Scheirera .

Co do „przekonującej sprawy?” część pytania: jeśli masz już kilka programów do tworzenia oprogramowania, tak, zdecydowanie. Jeśli tak jak ja masz 3 części GIS Tech / Analyst i 1 część lub mniej pythonista, nie tak bardzo. (Przynajmniej jeszcze nie - Naprawdę mam nadzieję, że ta binarna jedna lub druga natura tych dwóch podejść zmieni się w najbliższej przyszłości.)

matowe wilkie
źródło