PythonアドインとArcGIS for Desktopの.NETアドインの長所と短所は何ですか?


11

私はESRI .NETヘルプで見つけました:

Python

すべてのArcGIS Desktopアプリケーションには、Pythonと呼ばれる組み込みスクリプト言語が含まれています。ArcGISの多くの領域、特にジオプロセシングは、単純化されたPythonアプリケーションプログラミングインターフェイス(API)を介してアクセスできるため、一般的なタスクを簡単に作成および自動化できます。Pythonスクリプトは簡単に共有でき、外部の開発環境なしで作成できます。科学、工学、数学などの分野に焦点を当てたさまざまなパブリックドメインPythonモジュールがあります。すべての長所を備えたPythonは、すべてのプログラミングタスクに適しているわけではありません。カバレッジは改善されていますが、ArcGISのすべての領域が現在Pythonに公開されているわけではありません。さらに、Pythonでの編集およびデバッグエクスペリエンスは、Visual Studioなどの商用開発環境に含まれているものほど洗練されていたり、使いやすいものではありません。最後に、ArcGISイベントをリッスンして応答したり、COMインターフェイスを実装したり、Pythonを使用してESRIの多くのCOM拡張ポイントにプラグインすることはできません。

ArcGIS Desktopのヘルプ:

ArcGIS 10.1は、デスクトップアドインを作成するための言語のリストにPythonを導入し、デスクトップ機能を拡張する簡単なソリューションを提供します。Pythonアドインの開発を簡素化するには、Pythonアドインウィザードをダウンロードして使用し、カスタマイズの種類を宣言する必要があります。ウィザードは、アドインが機能するために必要なすべての必要なファイルを生成します。

Pythonと.NETアドインの機能が同じ場合 Pythonで.NETと同じことができるということですか??


「Pythonと.NETにはアドインを作成するための同じ機能がある」とはどこに記載されていますか?
PolyGeo

申し訳ありませんが、私は言いたいことを
言い表せ

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using Pythonそれ、変だよ。PythonはCOMで正常に動作します。
ネイサンW

実際、comtypeを介してArcObjectsを使用する(簡単な)Pythonアドインを作成しました。ただし、PythonでCOMインターフェイスを実装しようとはしていません。それが可能かどうか、または.NETと比較してどれだけ難しいかはわかりません。また、どちらのタイプのアドインもCOMによる自動登録を許可しないため、より高度な機能の一部は、インストーラーまたは(ESRI)RegAsmで登録できる従来のCOMコンポーネントでより適切に処理されます。
blah238

1
これはArcGISではありませんが、これがMapInfoにPythonを使用してCOMインターフェイスを実装した方法です。nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks 。 )
ネイサンW

回答:


24

この質問に対する答えはイエスとノーです。.NetでできることをすべてPythonで行うことはある程度の努力で可能ですが、簡単で可能なことは2つの非常に異なることです。それに続いて、最も単純な解釈はnoであり、Pythonアドインは.Netアドインほど多くのことを実行できません。ただし、Pythonアドイン実行できるタスクは、実装とテストがはるかに簡単で高速です。

純粋に技術的な観点から見ると、ArcGIS Desktop Add-In Frameworkは次の機能を提供します。

  • 一連の一般的なデスクトップ統合ポイントとコンポーネントを記述するための明確に定義されたXMLベースのスキーマ:ボタン、ツールバー、メニュー、ツール、マルチアイテムメニュー、拡張機能、およびこれらを宣言的な方法で簡単に接続する方法コードをArcGISデスクトップに
  • .esriaddinデスクトップカスタマイズコードを配布するためのファイル形式とファイル構造()。
  • インストール、検証、キャッシュされたインストールのメカニズム.esriaddins。したがって、インジェストされたアドインのソースファイルが変更された場合、変更されたファイルはローカルデスクトップアドインキャッシュに再ロードされます。
  • アドインのコードのセキュリティおよび認証メカニズムのセット:.esriaddinファイルのデジタル署名、アドインのインストールを許可するために必要な認証レベルの管理制御。

ここでアドインフレームワークに欠けているのは、ボタンなどの背後にある動作または機能の正式な契約です。.NetSDK for ArcGISをインストールすると、プロジェクト管理ダイアログでアドインウィザードの形式でVisual Studio統合が得られます。 、ドキュメント、コードスニペット、ArcObjectsバインディングなどです。アドインフレームワークが提供するエントリポイントを過ぎると、.Netアドインを使用して、ArcObjects APIの残りの部分をバンドルすることもできます。 、および既に使用する一般的なタスクのコードスニペットのライブラリを含む。ArcGISにはそのようなPython Developer SDKはありません。arcgisscripting/ arcpyを通じて公開されているPythonのすべての機能は既に製品にバンドルされています。.Net SDKが大きなダウンロードとして提供される場合、Pythonで最も近いのは、比較的小さなアドインウィザードのダウンロードです。

一方、Python COMインターフェイスを使用/実装できますが、PythonからのCOMの使用はArcGIS SDKにバンドルされておらず、ArcGISヘルプシステムに記載されていません。ArcGISでの開発が初めての場合、これは、自分何をしているのかを本当に理解していない限り、あなたを押しのけるための十分な障壁になるはずです。ここではPythonでCOMを実行できますが、チューリングターピットに近いため、COMおよびArcObjectsの詳細に精通している専門家レベルのユーザーでない限り、費やす時間を正当化するのは困難です。

arcpyでできること見ることお勧めします。次のようなタスクの多くを自動化できるジオプロセシングツールを呼び出すと、マップドキュメントのバッチ操作をやって、とPythonは、アドインを使用すると、特定の明確に定義されたイベントシンク使ってみましょう、いくつかのダイアログコントロールを arcpyの基本機能に加えて。ドキュメントの説明に基づいてPythonでタスクを実行する方法が考えられない場合(Pythonアドインウィザードで公開されていないイベントにフックするか、ArcObjectsでのみ利用可能なものを使用する必要があります) 、次に.Netアドインで開発を行います。

申し訳ありませんが、これは一生懸命の「はい」または「いいえ」の回答よりも微妙ですが、アドインでPythonまたは.Netのどちらのルートに行くべきかについて多少の注意を払う必要があります。

この開示を追加する必要があると思います。ArcGISのアドインにPython固有の機能の多くを設計および開発しました。


1

あなたはデスクトップ環境を見ているので、.NETは確かにオプションです。ただし、多くのArcGIS Serverを複数のプラットフォームで実行できるようになったため、.NETでできることは制限されます。

私の2セント:あなたが深いUIの仕事をしているなら、UIをかなり簡単に立てることができるので、.NETをお勧めします。実際にスクリプトを作成しているだけで、ArcGIS Pythonのより深い分析部分を使用している場合、サーバー(または「クラウド」)にはるかに簡単に移動できます。


1

.NETでアドインを開発する場合の欠点の1つは、ArcGISの新しいバージョンごとに、互換性のないバージョンのArcObjectsと互換性のないバージョンのVisual Studioが使用されることです。.NETアドインによって生成されたバイナリは、通常、それ以降のバージョンのArcGISと互換性がありますが、元のバージョンよりも後のバージョンのArcGISでアドインに変更を加えたくない場合のみ発展した。

国勢調査局TIGER / Line DataレイヤーをArcGIS 10.0のマップにロードするための.NETアドインを開発しましたが、バイナリアドインはArcGIS 10.4でも引き続き機能します。残念ながら、アドインに変更を加えたいと思ったとき、ArcGIS 10.4と互換性のあるVisual Studioのバージョンにソリューションを持ち込もうとしましたが、ArcObjectsとの機能の互換性がないため、膨大な数のエラーメッセージが殺到しましたVisual Studio。

Pythonでアドインを開発するには、ArcObjectsではなくArcPyを使用する必要があるため、ドキュメントにアクセスしやすくなり、ArcGISの新しいバージョンのコードを修正するプロセスがはるかに簡単になります。

.NETの代わりにPythonを使用する主な欠点は、PythonでGUIインターフェースを構築するのがはるかに難しいことです。wxPythonなどのパッケージを使用できますが、ArcGISで動作させるには多くの困難があります。ツールボックスのユーザーインターフェイスは、.NETで構築できるダイアログボックスよりもはるかに制限されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.