Jakie są zalety i wady dodatków Python w porównaniu z dodatkami .NET do ArcGIS na komputery?

11

Znalazłem w pomocy ESRI .NET:

Pyton

Wszystkie aplikacje ArcGIS Desktop zawierają wbudowany język skryptowy o nazwie Python. Wiele obszarów ArcGIS - szczególnie geoprzetwarzanie - jest dostępnych poprzez uproszczone interfejsy programowania aplikacji (API) w języku Python, co ułatwia tworzenie i automatyzację typowych zadań. Skrypty w języku Python można łatwo udostępniać i można je tworzyć bez zewnętrznego środowiska programistycznego. Istnieje wiele publicznych modułów Pythona w domenie publicznej, które koncentrują się na takich dziedzinach, jak nauka, inżynieria i matematyka. Ze wszystkich swoich zalet Python nie nadaje się do każdego zadania programistycznego. Chociaż zasięg się poprawia, nie wszystkie obszary ArcGIS są obecnie narażone na działanie Pythona. Ponadto edytowanie i debugowanie w Pythonie nie jest tak skomplikowane ani łatwe w użyciu, jak w przypadku komercyjnych środowisk programistycznych, takich jak Visual Studio.Wreszcie nie można nasłuchiwać i reagować na zdarzenia ArcGIS, implementować interfejsu COM ani podłączać do wielu punktów rozszerzalności COM ESRI za pomocą Pythona.

oraz w pomocy ArcGIS Desktop:

ArcGIS 10.1 wprowadza Python na listę języków do tworzenia dodatków Desktop, zapewniając łatwe rozwiązanie rozszerzające funkcjonalność pulpitu. Aby uprościć rozwój dodatków Python, musisz pobrać i użyć Kreatora dodatków Python, aby zadeklarować rodzaj dostosowania. Kreator wygeneruje wszystkie wymagane pliki niezbędne do działania dodatku.

Czy dodatki w języku Python i .NET mają tę samą funkcjonalność? Czy to oznacza, że ​​mogę zrobić to samo w Pythonie co .NET?

użytkownik7172
źródło
Gdzie jest napisane, że „Python i .NET mają takie same funkcje do tworzenia dodatków”?
PolyGeo
przepraszam, źle wyrażam, co mam na myśli (aktualizuję post)
user7172,
1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonTo jest dziwne. Python może dobrze działać z COM.
Nathan W
Rzeczywiście, stworzyłem (trywialne) dodatki do Pythona, które wykorzystują ArcObjects za pośrednictwem typów. Jednak nie próbowałem implementować interfejsów COM w Pythonie. Nie jestem pewien, czy jest to możliwe lub jak trudne byłoby to w porównaniu z .NET. Ponadto żaden typ dodatku nie pozwala na automatyczną rejestrację w COM, więc niektóre bardziej zaawansowane rzeczy są lepiej obsługiwane z tradycyjnym komponentem COM, który może być zarejestrowany przez instalatora lub (ESRI) RegAsm.
blah238,
1
To nie jest ArcGIS, ale tak zrobiłem interfejs COM za pomocą Pythona dla MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callback Powiedziałbym, że jest to łatwiejsze niż .NET: )
Nathan W

Odpowiedzi:

24

Odpowiedź na to pytanie brzmi „tak” i „nie”. Możliwe jest przy pewnym wysiłku zrobienie wszystkiego w Pythonie, co można zrobić w .Net, ale łatwe i możliwe to dwie bardzo różne rzeczy. Po tym, najprostsza interpretacja brzmi: nie , Dodatki Python nie mogą zrobić tyle, co Dodatki .Net. Jednak zadania, które można wykonać w Dodatkach Python, są znacznie łatwiejsze i szybsze do wdrożenia i przetestowania.

Z czysto technicznego punktu widzenia program ArcGIS Desktop Add-In Framework oferuje następujące funkcje:

  • Dobrze zdefiniowany, oparty na XML schemat do opisywania szeregu typowych punktów i komponentów integracji pulpitu: Przyciski, paski narzędzi, menu, narzędzia, menu i rozszerzenia wielu elementów, a także sposób łatwego połączenia ich w deklaratywny sposób z kod do pulpitu ArcGIS
  • Format pliku i struktura pliku ( .esriaddin) do dystrybucji kodu dostosowywania pulpitu.
  • Zainstalowany mechanizm instalacji, weryfikacji i buforowania .esriaddins, więc jeśli zmieni się plik źródłowy uszkodzonego dodatku, przeładuje on zmieniony plik do lokalnej pamięci podręcznej dodatków na pulpicie.
  • Zestaw mechanizmów bezpieczeństwa i uwierzytelniania dla kodu w dodatkach: cyfrowe podpisywanie .esriaddinplików, kontrola administracyjna nad poziomem uwierzytelnienia niezbędnym do instalacji dodatku.

Brakuje tutaj ramy dodatków, czyli jakiejkolwiek formalnej umowy dotyczącej zachowania lub funkcji za przyciskami itp. Po zainstalowaniu zestawu .Net SDK dla ArcGIS, integracja programu Visual Studio w formie kreatorów dodatków w oknach dialogowych zarządzania projektem , dokumentacja, fragmenty kodu, powiązania ArcObjects itp. Więc po przejściu przez punkty wejścia zapewnia szkielet Add-In, dodatek .Net pozwala przejść całą resztę dzięki interfejsom API ArcObjects, który również jest dostarczany w pakiecie z , a także zawiera bibliotekę fragmentów kodu typowych zadań, które już są w użyciu. W ArcGIS nie ma takiego zestawu SDK dla deweloperów Python: cała funkcjonalność Pythona jest ujawniona poprzez arcgisscripting / arcpy i jest już dołączona do produktu. Jeśli więc .NET SDK jest pobierany jako duży plik do pobrania, najbliższą rzeczą w Pythonie jest stosunkowo niewielki plik do pobrania Kreatora dodatków.

Z drugiej strony, Python jest w stanie wykorzystywać / implementować interfejsy COM , ale używanie COM z Pythona nie jest dołączane do żadnego zestawu ArcGIS SDK ani dokumentowane w systemie pomocy ArcGIS. Jeśli dopiero zaczynasz rozwijać się w ArcGIS, powinno to być wystarczającą barierą dla wejścia, aby cię odepchnąć, chyba że naprawdę wiesz, co robisz. Możesz zrobić COM w Pythonie tutaj, ale jest on wystarczająco blisko Turinga Tarpita , że trudno jest uzasadnić spędzony czas, chyba że jesteś użytkownikiem na poziomie eksperckim, który już zna się na szczegółach COM i ArcObjects.

Polecam przyjrzeć się, co możesz zrobić z Arcpy . Możesz zautomatyzować wiele zadań, takich jak wywoływanie narzędzi do geoprzetwarzania i wykonywanie wsadowej manipulacji dokumentami map , a Dodatki do Pythona pozwalają korzystać z pewnych dobrze zdefiniowanych ujść zdarzeń i niektórych kontrolek dialogowych oprócz podstawowych możliwości Arcpy. Jeśli nie możesz wymyślić sposobu na wykonanie zadania w Pythonie w oparciu o to, co mówi dokumentacja (potrzebujesz złożonej interakcji interfejsu użytkownika lub zaczepisz się o zdarzenia niewidoczne w Kreatorze dodatków Python lub użyj czegoś dostępnego tylko w ArcObjects) , a następnie wykonaj prace rozwojowe w dodatku .Net.

Przepraszamy, jest to bardziej niuansowe niż trudne i szybkie odpowiedź tak lub nie, ale powinno dać ci pewne wskazówki, czy powinieneś wybrać trasę w Pythonie czy .Net w swoim dodatku.

Przypuszczam, że powinienem dodać to ujawnienie: zaprojektowałem i opracowałem wiele funkcji specyficznych dla Pythona dla dodatków w ArcGIS.

Jason Scheirer
źródło
Zastanawiam się, czy ta odpowiedź z 2013 roku i pulpitu 10.1 jest nadal aktualna. Na przykład wygląda na to, że dodatki do języka Python są teraz nazywane zestawami narzędzi Python? Inne możliwości mogły ulec zmianie zarówno w bibliotekach Python, jak i SDK.
intotecho
2

Jedną z wad tworzenia dodatków w .NET jest to, że każda nowa wersja ArcGIS używa innej niekompatybilnej wersji ArcObjects i innej niekompatybilnej wersji Visual Studio. Pliki binarne generowane przez dodatki .NET są ogólnie zgodne z późniejszymi wersjami ArcGIS, ale tylko wtedy, gdy nie chcesz wprowadzać żadnych zmian w dodatku w wersji ArcGIS późniejszej niż ta, w której był pierwotnie rozwinięty.

Opracowałem dodatek .NET do ładowania warstw CIGS Bureau TIGER / Line Data do mapy w ArcGIS 10.0, a dodatek binarny nadal działa w ArcGIS 10.4. Niestety, gdy chciałem zmodyfikować dodatek, próbowałem wprowadzić rozwiązanie do wersji Visual Studio kompatybilnej z ArcGIS 10.4 i zalałem ogromną liczbę komunikatów o błędach z powodu niekompatybilnych wywołań ArcObjects i funkcji Visual Studio.

Opracowywanie dodatków w Pythonie wymaga korzystania z ArcPy zamiast ArcObjects, więc dokumentacja jest bardziej dostępna, a proces zmiany kodu w nowej wersji ArcGIS powinien być znacznie łatwiejszy.

Główną wadą używania Pythona zamiast .NET jest to, że zbudowanie interfejsu GUI w Pythonie jest znacznie trudniejsze. Można używać pakietów takich jak wxPython, ale istnieje wiele trudności w zmuszeniu ich do działania w ArcGIS. Interfejs użytkownika Toolbox jest znacznie bardziej ograniczony niż okna dialogowe, które można wbudować w .NET.

JDMorganArkansas
źródło
1

Patrzysz na środowisko pulpitu, więc .NET jest z pewnością opcją. Będziesz jednak ograniczony, co możesz zrobić z .NET, ponieważ większość ArcGIS Server jest dostępna do uruchamiania na wielu platformach.

Moje dwa centy: Jeśli wykonujesz głębokie prace nad interfejsem użytkownika, sugeruję .NET, ponieważ możesz łatwo podnieść interfejs użytkownika. Jeśli tak naprawdę używasz skryptów i korzystasz z głębszych części analizy ArcGIS Python, możesz znacznie łatwiej przenieść się na serwer (lub „chmurę”).

Darrell O'Donnell
źródło