Usually, the recommended way to create an address locator is to use the CreateAddressLocator geoprocessing tool located in the Geocoding toolbox.
The following code requires references to the ESRI.ArcGIS.Geoprocessor and ESRI.ArcGIS.GeocodingTools assemblies, as well as a using and imports statement for each.
[C#]
string dataGDB = @"C:\Program Files\ArcGIS\DeveloperKit\SamplesNET\data\Atlanta.gdb";
string featureclass = "streets";
// Put quotes around the path name so that it works with spaces.string referenceData = "\"" + System.IO.Path.Combine(dataGDB, featureclass) + "\" 'Primary table'";
string locatorName = "Street Locator";
string addressLocatorStyle = "US Streets";
// The field mapping syntax is "'What geocoding needs' NAME_OF_FIELD_IN_DATASET;"string fieldMapping = "'House From Left' L_F_ADD;" +
"'House To Left' L_T_ADD;" +
"'House From Right' R_F_ADD;" +
"'House To Right' R_T_ADD;" +
"'Prefix Direction' PREFIX;" +
"'Prefix Type' PRE_TYPE;" +
"'Street Name' NAME;" +
"'Street Type' TYPE;" +
"'Suffix Direction' SUFFIX";
Geoprocessor gp = new Geoprocessor();
CreateAddressLocator addressLocatorGPTool = new CreateAddressLocator(addressLocatorStyle,
referenceData, fieldMapping, System.IO.Path.Combine(dataGDB, locatorName));
gp.Execute(addressLocatorGPTool, null);
Using the underlying ArcObjects
ESRIFDOAddressLocator—The following code illustrates how to use the locator workspace, address locator style, and address locator reference data objects to create a new ESRIFDOAddressLocator.
[VB.NET]
Dim pLocatorManager As ESRI.ArcGIS.Location.ILocatorManager2
Dim pLocatorWorkspace As ESRI.ArcGIS.Geodatabase.ILocatorWorkspace
Dim pLocatorStyle As ESRI.ArcGIS.Geodatabase.ILocatorStyle
Dim pWorkspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2
Dim pFeatureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace
Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset
Dim pReferenceDataTables As ESRI.ArcGIS.Location.IReferenceDataTables
Dim pEnumReferenceDataTable As ESRI.ArcGIS.Location.IEnumReferenceDataTable
Dim pReferenceDataTableEdit As ESRI.ArcGIS.Location.IReferenceDataTableEdit
Dim pLocator As ESRI.ArcGIS.Geodatabase.ILocator
' Open the default local locator workspace to get the locator style.
pLocatorManager = New ESRI.ArcGIS.Location.LocatorManagerClass
pLocatorWorkspace = pLocatorManager.GetLocatorWorkspaceFromPath("")
' Get the locator style to base the new locator.
pLocatorStyle = pLocatorWorkspace.GetLocatorStyle("US Streets with Zone")
' Open the feature class to use as reference data.
pWorkspaceFactory = New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass
pFeatureWorkspace = pWorkspaceFactory.OpenFromFile("D:\workspace\arcobjects\location\redlands.mdb", 0)
pDataset = pFeatureWorkspace.OpenFeatureClass("Streets")
' Set the feature class as the primary reference data table for the locator.
pDataset = pFeatureWorkspace.OpenFeatureClass("Streets")
pReferenceDataTables = pLocatorStyle
pEnumReferenceDataTable = pReferenceDataTables.Tables
pEnumReferenceDataTable.Reset()
pReferenceDataTableEdit = pEnumReferenceDataTable.Next
pReferenceDataTableEdit.Name_2 = pDataset.FullName
' Store the new locator in the same workspace as the reference data.If pReferenceDataTables.HasEnoughInfo Then
pLocatorWorkspace = pLocatorManager.GetLocatorWorkspaceFromPath("D:\workspace\arcobjects\location\redlands.mdb")
pLocator = pLocatorWorkspace.AddLocator("New Redlands Locator", pLocatorStyle, "", Nothing)
EndIf
ArcSDE Locator—The following code illustrates how to use the locator workspace and address locator style objects to create a new ArcSDE locator.
[VB.NET]
Dim pConnectionProperties As ESRI.ArcGIS.esriSystem.IPropertySet
Dim pWorkspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2
Dim pLocatorManager As ESRI.ArcGIS.Location.ILocatorManager2
Dim pLocatorStyle As ESRI.ArcGIS.Geodatabase.ILocatorStyle
Dim pLocatorWorkspace As ESRI.ArcGIS.Geodatabase.ILocatorWorkspace
Dim pLocator As ESRI.ArcGIS.Geodatabase.ILocator
Dim pFeatureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace
Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset
Dim pReferenceDataTables As ESRI.ArcGIS.Location.IReferenceDataTables
Dim pEnumReferenceDataTable As ESRI.ArcGIS.Location.IEnumReferenceDataTable
Dim pReferenceDataTableEdit As ESRI.ArcGIS.Location.IReferenceDataTableEdit
' Open an ArcSDE workspace.
pConnectionProperties = New ESRI.ArcGIS.esriSystem.PropertySetClass
With pConnectionProperties
.SetProperty("server", "mendota")
.SetProperty("instance", "esri_sde")
.SetProperty("database", "arcobjects")
.SetProperty("user", "sde")
.SetProperty("password", "sde")
.SetProperty("version", "SDE.Default")
EndWith
pWorkspaceFactory = New ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass
pFeatureWorkspace = pWorkspaceFactory.Open(pConnectionProperties, 0)
' Open the database locator workspace for the ArcSDE workspace.
pLocatorManager = New ESRI.ArcGIS.Location.LocatorManagerClass
pLocatorWorkspace = pLocatorManager.GetLocatorWorkspace(pFeatureWorkspace)
' Get the U.S. streets locator style.
pLocatorStyle = pLocatorWorkspace.GetLocatorStyle("SDE.US Streets")
' Open the feature workspace containing the reference data.' Set the reference data on the new locator.
pDataset = pFeatureWorkspace.OpenFeatureClass("sde.SDE.altanta_st")
pReferenceDataTables = pLocatorStyle
pEnumReferenceDataTable = pReferenceDataTables.Tables
pEnumReferenceDataTable.Reset()
pReferenceDataTableEdit = pEnumReferenceDataTable.Next
pReferenceDataTableEdit.Name_2 = pDataset.FullName
' Store the locator if the reference data is properly specified.If pReferenceDataTables.HasEnoughInfo Then
pLocator = pLocatorWorkspace.AddLocator("My New SDE Locator", pLocatorStyle, "", Nothing)
EndIf