Pythonプログラムを実行するボタンをArcMapに作成しますか?


10

ツールバーのボタンがクリックされたときにArcMap内で実行するスクリプトがあり、これまでのところ、スクリプトをスクリプトツールにすることしかできません。ジオプロセシングツールとしてではなく、コマンドとして実行する必要があります。

これをジオプロセシングツールとして実行すると、コマンドラインウィンドウから同じコードを実行する場合よりも時間がかかります。ArcObjectsの調査を開始したばかりですが、必要な場合はそれを使い始めたいと思います。

ボタンを作成するためのサンプルコードまたはリソースがあれば、それは素晴らしいことです。


これをArcMapまたはArcGIS Engineスタンドアロンアプリケーションで実行しようとしていますか?
MathiasWestin

私は、ArcMapの10でこれをやりたい
タナー

回答:


8

入力または出力パラメーターが必要ない場合は、このサンプルを使用して、カスタムコマンドでスクリプトを実行できます。.NETアプリケーションでのArcPyの活用、C#の例:

// Executes a shell command synchronously.
// Example of command parameter value is
// "python " + @"C:\scripts\geom_input.py".
//
public static void ExecuteCommand(object command)
{
    try
    {
        // Create the ProcessStartInfo using "cmd" as the program to be run,
        // and "/c " as the parameters.
        // "/c" tells cmd that you want it to execute the command that follows,
        // then exit.
        System.Diagnostics.ProcessStartInfo procStartInfo = new
            System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

        // The following commands are needed to redirect the standard output.
        // This means that it will be redirected to the Process.StandardOutput StreamReader.
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;

        // Do not create the black window.
        procStartInfo.CreateNoWindow = true;

        // Now you create a process, assign its ProcessStartInfo, and start it.
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();

        // Get the output into a string.
        string result = proc.StandardOutput.ReadToEnd();

        // Display the command output.
        Console.WriteLine(result);
    }
    catch (Exception objException)
    {
        Console.WriteLine(objException.Message);
        // Log the exception and errors.
    }
}

1
これはpython固有ではないことにも注意してください。任意の外部コマンドを実行するために使用できます。
マットウィルキー

しかし、それはうまくいきました、@タナー?
Richard

正直なところ、私はそれを動作させることはできませんでしたが、当時の私のプログラミング経験は、限られたPythonしかありませんでした。時間があって、ボタンを作る必要があったら、今はフェアショットを出せると思います。
タナー

5

ツールバー/カスタマイズの[ツールの追加...]を使用して、スクリプトをカテゴリに追加します。次に、スクリプトを選択したツールバーにプルします。


それが私がしたことです。この方法を使用すると、スクリプトはスクリプトツールとして実行され、ジオプロセシングウィンドウが表示されるため、スクリプトの実行にはるかに長い時間がかかります。
Tanner

3

ツールバーの横の空白の領域を右クリック>カスタマイズウィンドウを開く>コマンドタブをクリック>リストの一番下までスクロールし、[UIコントロール]をクリック> [新しいUIコントロールを選択]>必要なコントロールのタイプを選択「作成および編集」をクリックします。これにより、新しいコントロールのVBAエディターが開き、コードを呼び出してコードを呼び出すイベントを聞いて定義することができます。VBAは10に無料で含まれていますが、VBAのライセンスファイルをリクエストして、そのライセンスを登録する必要があります。これについてESRIに連絡すると、ライセンスが無料で提供されます。10年後、これは消えます...

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