ArcGIS ModelBuilderに任意のコードを追加しますか?


11

ArcGISモデルに任意のコードスニペットを追加する方法はありますか?

高度なラベル付けやフィールド計算の式ビルダーの「コードブロックの表示」に似たものを思い描いています

たとえば、今の私のプロジェクトでは、ツールを実行している人のユーザー名を取得することで大きなメリットが得られます。私はPythonでこれが簡単であることを知っていimport os; os.environ.get('USERNAME')ます。そのスニペットをget_username.pyに記述してArccatalogのツールボックスに追加し、そのツールをモデルに追加して、現在のツールの必要なモデルパラメーターとして使用できると思います。それはこのような小さなものには多くの作業であり、次回はインライン変数置換複合変数など、何か他のものが必要になるかもしれません。

コードスニペットツールなどは、一般的で広く役立つ方法でこれらのニーズすべてに対処できると思います。


クレイジーな考え:式ビルダーの代わりに、モデルが再利用できるように履歴を保存するpythonコマンドラインウィンドウについてはどうでしょうか。
マットウィルキー

2
実際に私が本当に望んでいるのは、arcgisツールと同じ方法でモデルビルダーに公開されるPythonライブラリ全体です。しかし、それはただのクレイジーな話です(右?)
マットウィルキー

いい案!コードスニペットを「ツール」にオンザフライで記述し、スニペットを処理して結果を返しますか?したがって、あなたの例では、「ツール」は<現在のユーザー名>を返し、それは他のダウンストリームのツールに適用できます。
-RyanKDalton

@RyanDalton、はい、そうです。
マットウィルキー

回答:


3

これを行うために再利用可能なモデルを作成する方法を明確にするために、古い投稿に対する新しい回答。

モデルを開き、挿入->モデルのみのツール->値の計算を選択します。

式に次を入力します。 getuser()

コードブロックで、次のように入力します。

def getuser():
    import getpass
    return getpass.getuser()

(@ChadCooperからのユーザー名コードスニペットのソースについては、「特定の形式のユーザー名の取得」を参照してください)

[データ型]で、[]を選択しますString

ここに画像の説明を入力してください

出力円の名前をに変更しますusername。最終結果モデルは次のようになります。 値の計算ツールを使用する

そして、このモデルを将来のモデルにドラッグし、将来のモデルまたはスクリプトで%username%という変数を参照するだけです。%username%変数にアクセスする前に、このモデルが実行されていることを確認してください。これを行うには、前提条件を使用します。


ライアンは、おそらく出力が[P]パラメーターである理由を拡張し、別のモジュールに含まれるモジュールの例を示すことができます。パラメーターが通常は入力に関するものであるため、最初にPが出力に使用される理由が非常に混乱していました。
マットウィルキー

@ mattwilkie、Pythonスクリプトはシステムからの入力を「読み取る」ため、入力パラメーターは必要ありません。ただし、出力(ユーザー名)をパラメーターにして、結果を別のモデルまたはpythonスクリプトで使用できるようにする必要があります。次のステップは、ユーザー名パラメーターを、「To」電子メールアドレスへの入力としてuesrname出力パラメーターを自動的に使用する「電子メールスクリプト」のようなものに渡すことです。
RyanKDalton

10

実際には、計算(データ管理)ツールでこれを行うことができます。

特にエレガントではなく(ツールのソースコード全体が実行されるたびにログに出力されます)、エディター(本当に単なるテキストボックス)はひどいです。

モジュールを作成し、そこから関数をインポートして呼び出すことができるようにすることをお勧めします。その後、ダイアログに非常に短いスニペットを書くだけで済みます。それ以外の場合は、あまりきれいではありません。

計算値は、Arcgis v10のすべてのライセンスレベルで使用できます。v9.xでは、Spatialまたは3D Analyst拡張機能がインストールされている場合にのみArcviewで使用できます(ref)。


ありがとうございました!これは、今日必要なもの(%USERNAME%.sdeデータベース接続への挿入)で非常にうまく機能しました。エディタはその名前にふさわしくなく、貼り付け先として問題なく動作することに同意しました。
マットウィルキー

1
re:9.x、CVヘルプページの文言は、SA / 3D拡張機能がインストールされているだけの場合にツールが使用できる可能性があることを示しています。拡張機能のライセンスまたはアクティブ化なしで使用できる場合があります。
マットウィルキー

「インポートできるモジュールを作成することをお勧めします」-それは本当に素晴らしいアイデアです!
カーティス価格

2

質問を誤解しているのかもしれませんが、ArcToolBox内のPythonスクリプトツールの機能が探しているもののようです。

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm

実際、他のいくつかのスクリプト言語も使用/結合できます(この例ではR):

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000



3
これは機能します(そして、私はその方法です)が、マットは彼の質問でこの方法を「このような小さなことのための多くの作業」と明確に呼びました:)
nmpeterson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.