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?
źródło
implement a COM interface, or plug into ESRI’s many COM extensibility points using Python
To jest dziwne. Python może dobrze działać z COM.Odpowiedzi:
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:
.esriaddin
) do dystrybucji kodu dostosowywania pulpitu..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..esriaddin
plikó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.
źródło
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.
źródło
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ę”).
źródło