About the Executing geoprocessing tools Sample
[C#]
copyfeatures.cs
/*
* copyfeatures.cs : This C# sample uses the Geoprocessor class in conjunction with geoprocessing tools classes to
* execute a series of geoprocessing tools. This sample will extract features to a new feature class based on a
* location and an attribute query.
*/
using System;
using System.Collections;
using System.Text;
using ESRI.ArcGIS.DataManagementTools;
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.AnalysisTools;
namespace copyfeatures
{
class copyfeatures
{
static void Main(string[] args)
{
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 1: Make feature layers using the MakeFeatureLayer tool for the inputs to the SelectByLocation tool.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize the Geoprocessor
Geoprocessor GP = new Geoprocessor();
// Initialize the MakeFeatureLayer tool
MakeFeatureLayer makefeaturelayer = new MakeFeatureLayer();
makefeaturelayer.in_features = @"C:\gp\nfld.gdb\wells";
makefeaturelayer.out_layer = "Wells_Lyr";
RunTool(GP, makefeaturelayer, null);
makefeaturelayer.in_features = @"C:\gp\nfld.gdb\bedrock";
makefeaturelayer.out_layer = "bedrock_Lyr";
RunTool(GP, makefeaturelayer, null);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 2: Execute SelectLayerByLocation using the feature layers to select all wells that intersect the bedrock geology.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize the SelectLayerByLocation tool
SelectLayerByLocation SelectByLocation = new SelectLayerByLocation();
SelectByLocation.in_layer = "Wells_Lyr";
SelectByLocation.select_features = "bedrock_Lyr";
SelectByLocation.overlap_type = "INTERSECT";
RunTool(GP, SelectByLocation, null);
/////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 3: Execute SelectLayerByAttribute to select all wells that have a well yield > 150 L/min.
/////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize the SelectLayerByAttribute tool
SelectLayerByAttribute SelectByAttribute = new SelectLayerByAttribute();
SelectByAttribute.in_layer_or_view = "Wells_Lyr";
SelectByAttribute.selection_type = "NEW_SELECTION";
SelectByAttribute.where_clause = "WELL_YIELD > 150";
RunTool(GP, SelectByAttribute,null);
////////////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 4: Execute CopyFeatures tool to create a new feature class of wells with well yield > 150 L/min.
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize the CopyFeatures tool
CopyFeatures CopyFeatures = new CopyFeatures();
CopyFeatures.in_features = "Wells_Lyr";
CopyFeatures.out_feature_class = @"C:\gp\nfld.gdb\wells_c";
// Set the output Coordinate System environment
GP.SetEnvironmentValue("outputCoordinateSystem",
@"C:\Program Files\ArcGIS\Desktop10.0\Coordinate Systems\Projected Coordinate Systems\UTM\Nad 1983\NAD 1983 UTM Zone 21N.prj");
RunTool(GP, CopyFeatures, null);
}
private static void RunTool(Geoprocessor geoprocessor, IGPProcess process, ITrackCancel TC)
{
// Set the overwrite output option to true
geoprocessor.OverwriteOutput = true;
// Execute the tool
try
{
geoprocessor.Execute(process, null);
ReturnMessages(geoprocessor);
}
catch (Exception err)
{
Console.WriteLine(err.Message);
ReturnMessages(geoprocessor);
}
}
// Function for returning the tool messages.
private static void ReturnMessages(Geoprocessor gp)
{
if (gp.MessageCount > 0)
{
for (int Count = 0; Count <= gp.MessageCount - 1; Count++)
{
Console.WriteLine(gp.GetMessage(Count));
}
}
}
}
}
[Visual Basic .NET]
copyfeatures.vb
'
'* copyfeatures.cs : This VB.NET sample uses the Geoprocessor class in conjunction with geoprocessing tools classes to
'* execute a series of geoprocessing tools. This sample will extract features to a new feature class based on a
'* location and an attribute query.
'
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.Text
Imports ESRI.ArcGIS.Geoprocessor
Imports ESRI.ArcGIS.AnalysisTools
Imports ESRI.ArcGIS.DataManagementTools
Imports ESRI.ArcGIS.esriSystem
Namespace copyfeatures
Friend Class copyfeatures
Shared Sub Main(ByVal args As String())
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////
' STEP 1: Make feature layers using the MakeFeatureLayer tool for the inputs to the SelectByLocation tool.
'/////////////////////////////////////////////////////////////////////////////////////////////////////////
' Initialize the Geoprocessor
Dim GP As Geoprocessor = New Geoprocessor
' Set the OverwriteOutput setting to True
GP.OverwriteOutput = True
' Initialize the MakeFeatureLayer tool
Dim makefeaturelayer As MakeFeatureLayer = New MakeFeatureLayer()
makefeaturelayer.in_features = "C:\gp\nfld.gdb\wells"
makefeaturelayer.out_layer = "Wells_Lyr"
RunTool(GP, makefeaturelayer, Nothing)
makefeaturelayer.in_features = "C:\gp\nfld.gdb\bedrock"
makefeaturelayer.out_layer = "bedrock_Lyr"
RunTool(GP, makefeaturelayer, Nothing)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
' STEP 2: Execute SelectLayerByLocation using the feature layers to select all wells that intersect the bedrock geology.
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
' Initialize the SelectLayerByLocation tool
Dim SelectByLocation As SelectLayerByLocation = New SelectLayerByLocation()
SelectByLocation.in_layer = "Wells_Lyr"
SelectByLocation.select_features = "bedrock_Lyr"
SelectByLocation.overlap_type = "INTERSECT"
RunTool(GP, SelectByLocation, Nothing)
'///////////////////////////////////////////////////////////////////////////////////////////////
' STEP 3: Execute SelectLayerByAttribute to select all wells that have a well yield > 150 L/min.
'///////////////////////////////////////////////////////////////////////////////////////////////
' Initialize the SelectLayerByAttribute tool
Dim SelectByAttribute As SelectLayerByAttribute = New SelectLayerByAttribute()
SelectByAttribute.in_layer_or_view = "Wells_Lyr"
SelectByAttribute.selection_type = "NEW_SELECTION"
SelectByAttribute.where_clause = "WELL_YIELD > 150"
RunTool(GP, SelectByAttribute,Nothing)
'//////////////////////////////////////////////////////////////////////////////////////////////////////
' STEP 4: Execute CopyFeatures tool to create a new feature class of wells with well yield > 150 L/min.
'//////////////////////////////////////////////////////////////////////////////////////////////////////
' Initialize the CopyFeatures tool
Dim copy_features As ESRI.ArcGIS.DataManagementTools.CopyFeatures = New ESRI.ArcGIS.DataManagementTools.CopyFeatures()
copy_features.in_features = "Wells_Lyr"
copy_features.out_feature_class = "C:\gp\nfld.gdb\wells_150"
' Set the output Coordinate System environment
GP.SetEnvironmentValue("outputCoordinateSystem", "C:\Program Files\ArcGIS\Desktop10.0\Coordinate Systems\Projected Coordinate Systems\UTM\NAD 1983\NAD 1983 UTM Zone 21N.prj")
RunTool(GP, copy_features, Nothing)
End Sub
Private Shared Sub RunTool(ByVal geoprocessor As Geoprocessor, ByVal process As IGPProcess, ByVal TC As ITrackCancel)
' Set the overwrite output option to true
geoprocessor.OverwriteOutput = True
Try
geoprocessor.Execute(process, Nothing)
ReturnMessages(geoprocessor)
Catch err As Exception
Console.WriteLine(err.Message)
ReturnMessages(geoprocessor)
End Try
End Sub
' Function for returning the tool messages.
Private Shared Sub ReturnMessages(ByVal gp As Geoprocessor)
' Print out the messages from tool executions
Dim Count As Integer
If gp.MessageCount > 0 Then
For Count = 0 To gp.MessageCount - 1
Console.WriteLine(gp.GetMessage(Count))
Next
End If
End Sub
End Class
End Namespace