Select to view content in your preferred language

Geocoding Addresses using .NET

713
2
Jump to solution
08-31-2022 07:12 PM
JR99
by
Occasional Contributor

I'm creating a feature class via .NET code that contains non-geocoded address data.

ArcPy has a function arcpy.geocoding.GeocodeAddresses which allows the geocoding of address data.

Is there somthing similar in the ArcGIS Pro SDK?

 

I'm aware of the ArcGISRuntime - LocatorTask. GeocodeAsync() function but I'd prefer to use something inbuilt to the .NET SDK rather than needing to use another package.

I'd also prefer not to have a call the python function from .NET to perform the task.

0 Kudos
1 Solution

Accepted Solutions
JR99
by
Occasional Contributor

I've managed to find sample code here:

arcgis-pro-sdk-community-samples/SimpleGeocode.cs at master · Esri/arcgis-pro-sdk-community-samples ...

/*

Copyright 2019 Esri

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and
limitations under the License.

*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Mapping;

namespace GeocodingTools
{
/// <summary>
/// A simple button illustrating how to use the Geocoding API to geocode an address. The results are displayed in a simple messagebox.
/// </summary>
internal class SimpleGeocode : Button
{
protected override async void OnClick()
{
string text = "380 New York St, Redlands, CA, 92373, USA";

// geocode
IEnumerable<ArcGIS.Desktop.Mapping.Geocoding.GeocodeResult> results = await MapView.Active.LocatorManager.GeocodeAsync(text, false, false);

// show results
string msg = "results : " + results.Count().ToString() + "\r\n";
foreach (var result in results)
msg = msg + result.ToString() + "\r\n";

ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(msg, "Geocode Results");
}
}
}

 

The GeocodeResult object contains a MapPoint object, so I'm expecting I'll be able to add that to the feature class to geocode it.

View solution in original post

0 Kudos
2 Replies
JR99
by
Occasional Contributor

Additionally (or alternately), would anybody be able to point me towards some sample code to use ArcGISRuntime - LocatorTask. GeocodeAsync() from within an ArcGIS Pro add-in.  I found some in a UWP example and whilst I can connect to the inhouse server, it doesn't return any results.

0 Kudos
JR99
by
Occasional Contributor

I've managed to find sample code here:

arcgis-pro-sdk-community-samples/SimpleGeocode.cs at master · Esri/arcgis-pro-sdk-community-samples ...

/*

Copyright 2019 Esri

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and
limitations under the License.

*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Mapping;

namespace GeocodingTools
{
/// <summary>
/// A simple button illustrating how to use the Geocoding API to geocode an address. The results are displayed in a simple messagebox.
/// </summary>
internal class SimpleGeocode : Button
{
protected override async void OnClick()
{
string text = "380 New York St, Redlands, CA, 92373, USA";

// geocode
IEnumerable<ArcGIS.Desktop.Mapping.Geocoding.GeocodeResult> results = await MapView.Active.LocatorManager.GeocodeAsync(text, false, false);

// show results
string msg = "results : " + results.Count().ToString() + "\r\n";
foreach (var result in results)
msg = msg + result.ToString() + "\r\n";

ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(msg, "Geocode Results");
}
}
}

 

The GeocodeResult object contains a MapPoint object, so I'm expecting I'll be able to add that to the feature class to geocode it.

0 Kudos