ArcGIS for Desktop의 Python 추가 기능과 .NET 추가 기능의 장단점은 무엇입니까?


11

ESRI .NET 도움말에서 찾았습니다.

파이썬

모든 ArcGIS Desktop 응용 프로그램에는 Python이라는 내장 스크립팅 언어가 포함되어 있습니다. 단순화 된 Python API (응용 프로그래밍 인터페이스)를 통해 ArcGIS의 여러 영역 (특히 지리 처리)에 액세스 할 수 있으므로 일반적인 작업을 쉽게 작성하고 자동화 할 수 있습니다. Python 스크립트는 쉽게 공유되며 외부 개발 환경없이 생성 할 수 있습니다. 과학, 공학 및 수학과 같은 영역에 중점을 둔 다양한 공개 Python 모듈이 있습니다. 모든 장점을 갖춘 Python은 모든 프로그래밍 작업에 적합하지 않습니다. 적용 범위가 개선되고 있지만 ArcGIS의 모든 영역이 현재 Python에 노출되어있는 것은 아닙니다. 또한 Python의 편집 및 디버깅 경험은 Visual Studio와 같은 상용 개발 환경에 포함 된 것만 큼 정교하거나 사용하기 쉽지 않습니다.마지막으로 ArcGIS 이벤트를 수신 및 응답하거나 COM 인터페이스를 구현하거나 Python을 사용하여 ESRI의 여러 COM 확장 성 지점에 연결할 수 없습니다.

ArcGIS Desktop 도움말에서 :

ArcGIS 10.1은 데스크탑 애드 인 제작을위한 언어 목록에 Python을 도입하여 데스크탑 기능을 확장 할 수있는 쉬운 솔루션을 제공합니다. Python 추가 기능 개발을 단순화하려면 Python 추가 기능 마법사를 다운로드하여 사용하여 사용자 정의 유형을 선언해야합니다. 마법사는 추가 기능이 작동하는 데 필요한 모든 필수 파일을 생성합니다.

Python과 .NET 애드 인의 기능이 동일합니까? 파이썬에서 .NET과 같은 일을 할 수 있다는 것을 의미합니까 ??


"Python과 .NET은 추가 기능을 만드는 동일한 기능을 가지고 있습니다"는 어디에 있습니까?
PolyGeo

죄송합니다, 무슨 뜻인지 잘못 표현했습니다. (게시물 업데이트)
user7172

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using Python이상하다. 파이썬은 COM에서 잘 작동합니다.
Nathan W

실제로, 나는 comtypes를 통해 ArcObjects를 사용하는 (사소한) 파이썬 애드 인을 만들었습니다. 그러나 파이썬에서 COM 인터페이스를 구현하려고 시도하지 않았습니다. 그것이 가능한지 또는 .NET과 비교하기가 얼마나 어려운지 잘 모르겠습니다. 또한 추가 기능을 사용하여 COM에 자동 등록 할 수 없으므로 고급 구성 요소 중 일부는 설치 프로그램 또는 (ESRI) RegAsm으로 등록 할 수있는 기존 COM 구성 요소를 사용하는 것이 좋습니다.
blah238

1
이는 ArcGIS 아니지만이 내가 맵 인포 파이썬을 사용하여 COM 인터페이스를 구현 만든 방법입니다 nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks 내가 그 다음 .NET 쉽게 말할 것을 : )
Nathan W

답변:


24

이 질문에 대한 대답은 '예'입니다. .Net에서 할 수있는 모든 작업을 Python에서 수행하는 것이 약간의 노력으로 가능하지만, 두 가지 매우 다른 일이 쉽고 가능합니다. 그에 따라 가장 간단한 해석은 no 이므로 Python Add-Ins는 .Net Add-Ins만큼 할 수 없습니다. 그러나 Python Add-In 수행 할 수있는 작업은 구현 및 테스트가 훨씬 쉽고 빠릅니다.

순수한 기술적 관점에서 ArcGIS Desktop Add-In Framework는 다음과 같은 기능을 제공합니다.

  • 버튼, 도구 모음, 메뉴, 도구, 다중 항목 메뉴 및 확장과 같은 일련의 공통 데스크탑 통합 지점 및 구성 요소를 설명하기위한 잘 정의 된 XML 기반 스키마와 이러한 구성 요소를 선언적 방식으로 쉽게 연결하는 방법 ArcGIS 데스크탑에 대한 코드
  • .esriaddin데스크탑 사용자 정의 코드를 배포하기위한 파일 형식 및 파일 구조 ( ).
  • 설치, 확인 및 캐싱 installed 메커니즘으로, 설치된 .esriaddins애드 인의 소스 파일이 변경된 경우 변경된 파일을 로컬 데스크탑 애드 인 캐시로 다시로드합니다.
  • 추가 기능의 코드에 대한 일련의 보안 및 인증 메커니즘 : .esriaddin파일의 디지털 서명, 추가 기능 설치를 허용하는 데 필요한 인증 수준에 대한 관리 제어.

여기에 추가 기능 프레임 워크에없는 것은 버튼 뒤의 동작 또는 기능에 대한 공식 계약입니다. .Net SDK for ArcGIS를 설치하면 프로젝트 관리 대화 상자에서 추가 기능 마법사 형식으로 Visual Studio 통합이 이루어집니다. , 문서, 코드 스 니펫, ArcObjects 바인딩 등입니다. 따라서 추가 기능 프레임 워크가 제공하는 진입 점을 지나면 .Net 추가 기능을 사용하면 번들로 제공되는 ArcObjects API를 통해 나머지 작업을 수행 할 수 있습니다 , 이미 사용중인 일반적인 작업의 코드 스 니펫 라이브러리포함 함. ArcGIS에는 그러한 Python Developer SDK가 없습니다. 모든 Python 기능은 arcgisscripting / arcpy를 통해 노출되며 이미 제품에 번들로 제공됩니다. 따라서 .Net SDK가 큰 다운로드로 제공되는 경우 Python에서 가장 가까운 것은 상대적으로 작은 추가 기능 다운로드입니다.

반면에 Python COM 인터페이스를 소비 / 구현할 수 있지만 Python의 COM 사용은 ArcGIS SDK와 함께 제공되거나 ArcGIS 도움말 시스템에 문서화되어 있지 않습니다. ArcGIS를 처음 사용하는 경우 실제로 수행중인 작업을 모르는 경우 진입 장벽이 충분해야합니다 . 파이썬으로 COM을 할 수는 있지만 튜링 타르 핏에 가깝기 때문에 이미 COM 및 ArcObjects의 기능에 익숙하지 않은 전문가 수준의 사용자가 아니라면 소요 시간을 정당화하기가 어렵습니다.

arcpy로 할 수있는 일살펴 보는 것이 좋습니다 . 지오 프로세싱 도구 호출맵 문서의 일괄 처리 수행과 같은 많은 작업을 자동화 할 수 있으며 Python 애드 인 을 사용 하면 arcpy의 기본 기능 외에 잘 정의 된 특정 이벤트 싱크일부 대화 상자 컨트롤 을 사용할 수 있습니다. 문서의 내용에 따라 Python에서 작업을 수행 할 수있는 방법을 생각할 수없는 경우 (복잡한 사용자 인터페이스 상호 작용이 필요하거나 Python 추가 기능 마법사에 노출되지 않은 이벤트에 연결하거나 ArcObjects에서만 사용할 수있는 것을 사용하십시오) 그런 다음 .Net 애드 인에서 개발하십시오.

죄송합니다. 예 / 아니요로 대답하는 것보다 미묘한 차이가 있지만 추가 기능에서 Python 또는 .Net 경로를 사용 해야하는지 여부와 관련이 있습니다.

이 내용을 추가해야한다고 생각합니다 . ArcGIS의 애드 인에 많은 Python 관련 기능을 설계하고 개발했습니다.


2013 및 Desktop 10.1의 답변이 여전히 최신인지 궁금합니다. 예를 들어, 파이썬 애드 인을 이제 파이썬 툴박스라고합니까? 파이썬과 SDK 라이브러리에서 다른 기능이 변경되었을 수 있습니다.
intotecho

2

.NET에서 애드 인을 개발할 때의 단점 중 하나는 각각의 새 ArcGIS 버전이 서로 호환되지 않는 서로 다른 버전의 ArcObject와 서로 호환되지 않는 Visual Studio 버전을 사용한다는 것입니다. .NET 애드 인으로 생성 된 바이너리는 일반적으로 이후 버전의 ArcGIS와 호환되지만 ArcGIS 버전에서 애드 인을 원래 버전보다 나중에 변경하지 않으려는 경우에만 개발했다.

Census Bureau TIGER / Line Data 레이어를 ArcGIS 10.0의 맵에로드하기위한 .NET 애드 인을 개발했으며 이진 애드 인은 여전히 ​​ArcGIS 10.4에서 작동합니다. 불행히도, Add-In을 수정하고 싶을 때 솔루션을 ArcGIS 10.4와 호환되는 Visual Studio 버전으로 가져 오려고 시도했지만 ArcObject와 호환되지 않는 ArcObject 호출로 인해 수많은 오류 메시지가 발생했습니다. 비주얼 스튜디오.

Python에서 애드 인을 개발하려면 ArcObjects 대신 ArcPy를 사용해야하므로 설명서에보다 쉽게 ​​액세스 할 수 있으며 새 버전의 ArcGIS 코드를 수정하는 과정이 훨씬 쉬워집니다.

.NET 대신 Python을 사용할 때의 주요 단점은 Python에서 GUI 인터페이스를 작성하는 것이 훨씬 어렵다는 것입니다. wxPython과 같은 패키지를 사용할 수 있지만 ArcGIS에서 작동하는 데 많은 어려움이 있습니다. Toolbox 사용자 인터페이스는 .NET에서 빌드 할 수있는 대화 상자보다 훨씬 제한적입니다.


1

데스크탑 환경을보고 있으므로 .NET은 확실히 옵션입니다. 그러나 많은 ArcGIS Server를 여러 플랫폼에서 실행할 수 있으므로 .NET으로 수행 할 수있는 작업이 제한됩니다.

내 두 센트 : UI 작업을 많이하고 있다면 UI를 꽤 쉽게 채울 수 있으므로 .NET을 제안하는 것이 좋습니다. 실제로 스크립트 만하고 ArcGIS Python의 더 깊은 분석 부분을 사용하는 경우 훨씬 쉽게 서버 (또는 "클라우드")로 이동할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.