在ArcMap中创建按钮以运行Python程序?


10

单击工具栏中的按钮时,我有一个要在ArcMap中运行的脚本,到目前为止,我只能将该脚本制作为脚本工具。我需要它作为命令而不是地理处理工具运行。

与从命令行窗口执行相同的代码相比,将其作为地理处理工具运行需要更长的时间。我刚刚开始研究ArcObjects,但是如果我需要使用它,我想开始使用它。

如果任何人都有任何示例代码或用于创建按钮的资源,那就太好了。


您是否要在ArcMap或ArcGIS Engine独立应用程序中执行此操作?
MathiasWestin 2010年

我想这样做在ArcMap 10
唐纳

Answers:


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的。它可以用来运行任何外部命令。
马特·威尔基2011年

但这有效吗,@ Tanner?
理查德

老实说,我从来没有使它起作用,但是那时我唯一的编程经验是一些有限的Python。我觉得如果我有时间并且仍然需要按下按钮,现在可以给它一个公平的机会。
Tanner

5

使用工具栏/自定义中的[添加工具...]将脚本添加到类别。然后将脚本拉到所选的工具栏。


那就是我所做的。使用该方法,脚本将作为脚本工具运行并打开一个地理处理窗口,从而使脚本执行需要更长的时间。
Tanner 2010年

3

右键单击工具栏旁边的空白区域>打开自定义窗口>单击命令选项卡>滚动到列表底部,然后单击[UI控件]>选择新的UI控件>选择所需的控件类型,然后单击创建和编辑。这将为新控件打开VBA编辑器,您可以在listen中编写代码并定义调用该代码的事件。VBA随10免费提供,但您需要为其请求许可证文件,然后注册该许可证。致电ESRI,他们应该免费为您提供许可证。十点钟后,这将消失...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.