[Visual Basic 6.0]
Public Function GetAttachedLocator(pDataset As esriGeoDatabase.IDataset) As esriLocation.IAttachedLocator
'+++ returns the AttachedLocator for a dataset, if one exists
Dim pLocatorManager As esriLocation.ILocatorManager
'+++ use a LocatorManager object to retrieve the AttachedLocator for the dataset
Set pLocatorManager = New esriLocation.LocatorManager
If pLocatorManager.HasLocatorAttached(pDataset.FullName) Then
Set GetAttachedLocator = pLocatorManager.GetLocatorFromDataset(pDataset)
End If
End Function
[Visual Basic .NET]
Sub RematchTableSample()
' Open a workspace from a file geodatabase
Dim obj As System.Object = Activator.CreateInstance(Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory"))
Dim workspaceFactory As IWorkspaceFactory2 = obj
Dim featureWorkspace As IFeatureWorkspace = workspaceFactory.OpenFromFile("C:\UnitedStates.gdb", 0)
' Open the Feature Class to rematch
Dim featureClass As IFeatureClass = featureWorkspace.OpenFeatureClass("US_Locations")
' Get the Locator that is attached to the Feature Class
obj = Activator.CreateInstance(Type.GetTypeFromProgID("esriLocation.LocatorManager"))
Dim locatorManager As ILocatorManager2 = obj
Dim attachedLocator As IAttachedLocator = locatorManager.GetLocatorFromDataset(featureClass)
Dim advancedGeocoding As IAdvancedGeocoding = attachedLocator.Locator
' Modify the geocoding properties on the Locator and rematch the Feature Class
Dim geocodingProperties As IGeocodingProperties = advancedGeocoding
geocodingProperties.MinimumMatchScore = 100
With attachedLocator
advancedGeocoding.RematchTable(.InputTable, .InputFieldNamesList, .InputJoinFieldName, .OutputTable, _
.OutputFieldNamesList, .OutputJoinFieldName, "", Nothing)
End With
End Sub
[C#]
public void RematchTable()
{
// Get the Workspace
System.Object obj = Activator.CreateInstance(Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory"));
IWorkspaceFactory2 workspaceFactory = obj as IWorkspaceFactory2;
IWorkspace workspace = workspaceFactory.OpenFromFile(@"C:\UnitedStates.gdb", 0);
// Open the feature class of geocoded addresses that you will rematch
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("US_Locations");
// Get the locator that is attached to the feature class
obj = Activator.CreateInstance(Type.GetTypeFromProgID("esriLocation.LocatorManager"));
ILocatorManager locatorManager = obj as ILocatorManager2;
IAttachedLocator attachedLocator = null;
IAdvancedGeocoding2 advancedGeocoding = null;
IDatasetName datasetName = (featureClass as IDataset).FullName as IDatasetName;
if (locatorManager.HasLocatorAttached(datasetName))
{
attachedLocator = locatorManager.GetLocatorFromDataset((IDataset)featureClass);
advancedGeocoding = (IAdvancedGeocoding2)attachedLocator.Locator;
}
// Modify the Geocoding properties on the locator and rematch the feature class
IGeocodingProperties geocodingProperties = (IGeocodingProperties)advancedGeocoding;
geocodingProperties.MinimumMatchScore = 100;
advancedGeocoding.RematchTable(attachedLocator.InputTable, attachedLocator.InputFieldNamesList,
attachedLocator.InputJoinFieldName, (IFeatureClass)attachedLocator.OutputTable,
attachedLocator.OutputFieldNamesList, attachedLocator.OutputJoinFieldName, "", null);
}