注需 2个引用的区别
D:\Program Files (x86)\ArcGIS\DeveloperKit10.1\DotNet\ESRI.ArcGIS.Geoprocessor.dll
D:\Program Files (x86)\ArcGIS\DeveloperKit10.1\DotNet\ESRI.ArcGIS.Geoprocessing.dll
官网代码:
Each geoprocessing tool has a fixed set of parameters that provide the tool with the information it needs for execution. Tools usually have input parameters that define the dataset or datasets that will typically be used to generate new output data. Parameters have the following important properties:
- Name—Each tool parameter has a unique name.
- Type—The type of data expected, such as a feature class, integer, string, and raster.
- Required—Either a value must be provided for a parameter, or it is optional.
Each tool has a documentation page known as a tool reference page. For more information about parameters, see Interpreting a tool reference page.
When a tool is used in a program, its parameter values must be set correctly so it can execute when the program runs. The documentation of each tool clearly defines its parameters and properties. Once a valid set of parameter values is provided, the tool is ready to be executed.
Parameters are specified as strings or objects. Strings are text values that uniquely identify a parameter value, such as a path to a dataset or a keyword. Most tool parameters can be specified as a simple string. However, complex parameters, such as a spatial reference, can be easier to specify with an object. Each tool has its own parameter types. To get complete information on a particular tool, review the tool reference page. Interpreting a tool reference page explains how to read a tool reference page and extract information to use in .NET.
You can run a geoprocessing tool by using the Geoprocessing library methods or by the geoprocessor managed assembly methods. For information about the basic differences between the two approaches, see Executing tools. In both cases, the Execute method of the geoprocessor is called.
The Execute method uses a null reference instead of an ITrackCancel interface. The ITrackCancel interface provides access to properties and methods that determine if a cancellation has been executed by the user and also allows developers to specify what actions constitute a cancellation. Both approaches are elaborated with the following examples.
Using the geoprocessing assembly
The geoprocessing assembly is the Component Object Model (COM) interop of the Geoprocessing type library. The Execute method of the IGeoProcessor2 interface of the library is used to run a tool.
The following are the generic steps to execute a tool:
- Add a reference to ESRI.ArcGIS.Geoprocessing to your project. This is the only reference you need if you use the geoprocessing assembly.
- Create the geoprocessor object.
- Add the path to the custom toolbox if you are running a custom tool.
- Create an IVariantArray and populate it with tool parameter values. The IVariantArray is available through the esriSystem library.
- Call the Execute method on the geoprocessor.
The process is the same if you run a system tool or a custom tool.
Make sure you maintain the order of parameters as specified in the tool reference page when populating the variant array. Follow the syntax section of the tool reference page (see link at the bottom), it shows the correct ordering of parameters.
If you want to skip an optional parameter, just add an empty string to the variant array in correct order. For example, if a tool‘s third, fourth and fifth parameters are optional and you want to pass value only to the fifth parameter, then you have to pass empty strings to the third and fourth parameters to maintain correct ordering.
Passing an empty string instructs the tool to use the default value of that parameter.
Do not follow the tool‘s dialog box to get the order of parameters; follow the tool‘s Help page (browse to Interpreting a tool reference page link at the end). Parameters are arranged on a tool dialog box by "display order" not by the actual order.
Executing a system tool
The following code example shows the execution of the Buffer tool from the Analysis toolbox. The required parameters for the tool are defined. In this case, strings are used to define the input, output, and buffer distance properties, so the call to the tool is easier to read.
[C#]
using System; using System.Threading; // Add references to esriSystem for licensing and IVariantArray. using ESRI.ArcGIS.esriSystem; // Add a reference to the geoprocessing namespace. using ESRI.ArcGIS.Geoprocessing; // Call this method from your main. private static void RunBuffer() { // Create the geoprocessor. IGeoProcessor2 gp = new GeoProcessorClass(); gp.OverwriteOutput = true; IGeoProcessorResult result = new GeoProcessorResultClass(); // Create a variant array to hold the parameter values. IVariantArray parameters = new VarArrayClass(); object sev = null; try { // Populate the variant array with parameter values. parameters.Add(@"C:\data\california.gdb\cities"); parameters.Add(@"C:\data\california.gdb\cities_buff"); parameters.Add("1000 Meters"); // Execute the tool. result = gp.Execute("Buffer_analysis", parameters, null); // Wait until the execution completes. while (result.Status == esriJobStatus.esriJobExecuting) Thread.Sleep(1000); // Wait for 1 second. // Print geoprocessring messages. Console.WriteLine(gp.GetMessages(ref sev)); } catch (Exception ex) { // Print a generic exception message. Console.WriteLine(ex.Message); // Print geoprocessing execution error messages. Console.WriteLine(gp.GetMessages(ref sev)); } }
[VB.NET]
Imports System Imports System.Threading ‘ Add references to esriSystem for licensing and IVariantArray. Imports ESRI.ArcGIS.esriSystem ‘ Add a reference to the geoprocessing namespace. Imports ESRI.ArcGIS.Geoprocessing ‘ Call this method from your main. Private Sub RunBuffer() ‘ Create the geoprocessor. Dim gp As IGeoProcessor2 = New GeoProcessor() gp.OverwriteOutput = True Dim result As IGeoProcessorResult = New GeoProcessorResult() ‘ Create a variant array to hold the parameter values. Dim parameters As IVariantArray = New VarArray() Dim sev As Object = Nothing Try ‘ Populate the variant array with parameter values. parameters.Add("C:\data\california.gdb\cities") parameters.Add("C:\data\california.gdb\cities_buff") parameters.Add("1000 Meters") ‘ Execute the tool. result = gp.Execute("Buffer_analysis", parameters, Nothing) ‘ Wait until the execution completes. While (result.Status = esriJobStatus.esriJobExecuting) Thread.Sleep(1000) End While ‘ Print geoprocessing messages. Console.WriteLine(gp.GetMessages(sev)) Catch ex As Exception ‘ Print generic exception messages. Console.WriteLine(ex.Message) ‘ Print geoprocessing execution error messages. Console.WriteLine(gp.GetMessages(sev)) End Try End Sub