About the Geoprocessing field mapping Sample
[C#]
FieldMapping.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geoprocessing;
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.ConversionTools;
namespace GPFieldMapping
{
class FieldMapping
{
[STAThread]
static void Main(string[] args)
{
if (!ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine))
{
if (!ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop))
{
System.Windows.Forms.MessageBox.Show("This application could not load the correct version of ArcGIS.");
return;
}
}
LicenseInitializer aoLicenseInitializer = new LicenseInitializer();
if (!aoLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseProductCode.esriLicenseProductCodeBasic, esriLicenseProductCode.esriLicenseProductCodeStandard, esriLicenseProductCode.esriLicenseProductCodeAdvanced },
new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork }))
{
System.Windows.Forms.MessageBox.Show("This application could not initialize with the correct ArcGIS license and will shutdown. LicenseMessage: " + aoLicenseInitializer.LicenseMessage());
aoLicenseInitializer.ShutdownApplication();
return;
}
// Run the geoprocessing code
RunGPFieldMapping();
aoLicenseInitializer.ShutdownApplication();
}
private static void RunGPFieldMapping()
{
// Initialize the Geoprocessor
ESRI.ArcGIS.Geoprocessor.Geoprocessor GP = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
GP.OverwriteOutput = true;
// Create the GPUtilites object
IGPUtilities gputilities = new GPUtilitiesClass();
// Create a DETable data element object
IDETable inputTableA = (IDETable)gputilities.MakeDataElement(@"C:\data\citiblocks.gdb\census", null, null);
// Create an array of input tables
IArray inputtables = new ArrayClass();
inputtables.Add(inputTableA);
// Initialize the GPFieldMapping
IGPFieldMapping fieldmapping = new GPFieldMappingClass();
fieldmapping.Initialize(inputtables, null);
// Create a new output field
IFieldEdit trackidfield = new FieldClass();
trackidfield.Name_2 = "TRACTID";
trackidfield.Type_2 = esriFieldType.esriFieldTypeString;
trackidfield.Length_2 = 50;
// Create a new FieldMap
IGPFieldMap trackid = new GPFieldMapClass();
trackid.OutputField = trackidfield;
// Find field map "STFID" containing the input field "STFID". Add input field to the new field map.
int fieldmap_index = fieldmapping.FindFieldMap("STFID");
IGPFieldMap stfid_fieldmap = fieldmapping.GetFieldMap(fieldmap_index);
int field_index = stfid_fieldmap.FindInputField(inputTableA, "STFID");
IField inputField = stfid_fieldmap.GetField(field_index);
trackid.AddInputField(inputTableA, inputField, 5, 10);
// Add the new field map to the field mapping
fieldmapping.AddFieldMap(trackid);
// Execute Table to Table tool using the FieldMapping
TableToTable tblTotbl = new TableToTable();
tblTotbl.in_rows = inputTableA;
tblTotbl.out_path = @"C:\data\citiblocks.gdb";
tblTotbl.out_name = "census_out";
tblTotbl.field_mapping = fieldmapping;
object sev = null;
try
{
GP.Execute(tblTotbl, null);
System.Windows.Forms.MessageBox.Show(GP.GetMessages(ref sev));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
System.Windows.Forms.MessageBox.Show(GP.GetMessages(ref sev));
}
}
}
}
[Visual Basic .NET]
FieldMapping.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Geoprocessing
Imports ESRI.ArcGIS.Geoprocessor
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.ConversionTools
Namespace GPFieldMapping
Friend Class FieldMapping
<STAThread()> _
Shared Sub Main(ByVal args As String())
If (Not ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine)) Then
If (Not ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)) Then
System.Windows.Forms.MessageBox.Show("This application could not load the correct version of ArcGIS.")
End If
End If
Dim aoLicenseInitializer As LicenseInitializer
aoLicenseInitializer = New LicenseInitializer
'ESRI License Initializer generated code.
If (Not aoLicenseInitializer.InitializeApplication(New esriLicenseProductCode() {esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseProductCode.esriLicenseProductCodeBasic, esriLicenseProductCode.esriLicenseProductCodeStandard, esriLicenseProductCode.esriLicenseProductCodeAdvanced}, _
New esriLicenseExtensionCode() {esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork})) Then
System.Windows.Forms.MessageBox.Show("This application could not initialize with the correct ArcGIS license and will shutdown. LicenseMessage: " + aoLicenseInitializer.LicenseMessage())
aoLicenseInitializer.ShutdownApplication()
Return
End If
' Run geoprocessing code
RunGPFieldMappinig()
' Shutdown application
aoLicenseInitializer.ShutdownApplication()
End Sub
Private Shared Sub RunGPFieldMappinig()
' Initialize the Geoprocessor
Dim GP As ESRI.ArcGIS.Geoprocessor.Geoprocessor = New ESRI.ArcGIS.Geoprocessor.Geoprocessor()
GP.OverwriteOutput = True
' Create the GPUtilites object
Dim gputilities As IGPUtilities = New GPUtilitiesClass()
' Create a DETable data element object
Dim inputTableA As IDETable = CType(gputilities.MakeDataElement("C:\data\citiblocks.gdb\census", Nothing, Nothing), IDETable)
' Create an array of input tables
Dim inputtables As IArray = New ArrayClass()
inputtables.Add(inputTableA)
' Initialize the GPFieldMapping
Dim fieldmapping As IGPFieldMapping = New GPFieldMappingClass()
fieldmapping.Initialize(inputtables, Nothing)
' Create a new output field
Dim trackidfield As IFieldEdit = New FieldClass()
trackidfield.Name_2 = "TRACTID"
trackidfield.Type_2 = esriFieldType.esriFieldTypeString
trackidfield.Length_2 = 50
' Create a new FieldMap
Dim trackid As IGPFieldMap = New GPFieldMapClass()
trackid.OutputField = trackidfield
' Find field map "STFID" containing the input field "STFID". Add input field to the new field map.
Dim fieldmap_index As Integer = fieldmapping.FindFieldMap("STFID")
Dim stfid_fieldmap As IGPFieldMap = fieldmapping.GetFieldMap(fieldmap_index)
Dim field_index As Integer = stfid_fieldmap.FindInputField(inputTableA, "STFID")
Dim inputField As IField = stfid_fieldmap.GetField(field_index)
trackid.AddInputField(inputTableA, inputField, 5, 10)
' Add the new field map to the field mapping
fieldmapping.AddFieldMap(trackid)
' Execute Table to Table tool using the FieldMapping
Dim tblTotbl As TableToTable = New TableToTable()
tblTotbl.in_rows = inputTableA
tblTotbl.out_path = "C:\data\citiblocks.gdb"
tblTotbl.out_name = "census_out"
tblTotbl.field_mapping = fieldmapping
Dim sev As Object = Nothing
Try
GP.Execute(tblTotbl, Nothing)
System.Windows.Forms.MessageBox.Show(GP.GetMessages(sev))
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(GP.GetMessages(sev))
End Try
End Sub
End Class
End Namespace