Sunday, July 24, 2011

Single-line batch geocoding with ArcGIS Server 10 geocode services

ArcGIS Server 10 rolled out support for single-line geocoding via Web services, which made it easier to provide a simple, search-engine experience when locating an address. While support for single-line geocoding was included with the REST and SOAP APIs, there remained some differences in functionality. For example, REST does not currently provide an operation that supports batching multiple address inputs in a single request. SOAP supports batching via the GeocodeAddresses operation, but it appears to only support multi-line addresses. In fact, batching multiple single-line address inputs is possible through a "hidden" feature. Simply associate the single-line text with the first address input field. For example, in the North American geocode service hosted by ArcGIS Online, the first address input field is named "Address". The GeocodeAddresses operation needs an address table and address input field mapping. The address input field mapping merely references the first address input field, in this example "Address". The address table includes a field that maps to "Address", and the field values contain the single-line address input text. Here's an example in .NET that uses the precompiled ArcGIS SOAP library available with the ArcGIS SOAP SDK:

GeocodeServerProxy geocodeservice = new GeocodeServerProxy();

geocodeservice.Url =

    "http://tasks.arcgisonline.com/ArcGIS/services/Locators/TA_Address_NA_10/GeocodeServer";

 

// Address input field mapping

PropertySetProperty[] propArray = {

    new PropertySetProperty(){

            Key = "Address",

            Value = "Address"

    }

};

 

PropertySet geocodePropSet = new PropertySet()

{

    PropertyArray = propArray

};           

 

// Address input fields

Field[] fieldarray = {          

    new Field()

    {

        Name = "OID",

        Type = esriFieldType.esriFieldTypeOID,

        Length = 10

    },

    new Field()

    {

        Name = "Address",

        Type = esriFieldType.esriFieldTypeString,

        Length = 100

    }

};

 

// Address inputs

int i = 0;

Record[] addressInputs = {

    new Record(){

        Values = new object[] {i++, "6525 N 15th Avenue Phoenix AZ"}

    },new Record(){

        Values = new object[] {i++, "14756 N 27th ave Seattle"}

    },new Record(){

        Values = new object[] {i++, "455 Orange Show Ln, San Bernardino, CA"}

    },new Record(){

        Values = new object[] {i++, "1514 Redwing Dr, Evansville"}

    }

};

 

RecordSet addressTable = new RecordSet()

{

        Fields = new Fields() { FieldArray = fieldarray },

        Records = addressInputs

};

 

RecordSet results = geocodeservice.GeocodeAddresses(addressTable, geocodePropSet, null);

 

Note that the suggested batch size of this service is 10, which will limit the number of inputs you can include in one request. And of course you'll want to peruse the terms of use. Links to information on the ArcGIS Server 10 geocode services hosted by ArcGIS Online are available below:

North American Address Locator
United States Street Locator

5 comments:

Brendan said...

Nice thanks for the info. It really wasn't clear when looking at the REST endpoint for the geocoding service how to send in a batch request.

Thanks.

hai said...

Dear Rex, I just go through your blog http://rexdotnet.blogspot.com/2010/09/use-google-maps-with-arcgis-silverlight.html .I cannot post comment there. Thats what i came here to post a comment. The sample application u r providing with http://rexdotnet.blogspot.com/2010/09/use-google-maps-with-arcgis-silverlight.html cannot open in VS2010 .Can u help me to open that in VS2010?

hai said...

need vb.net code also

hai said...

Dear Rex , Can u send me (customlayer) the same project in VB.NET?

Unknown said...

I love all the posts, I really enjoyed, I would like more information about this, because it is very nice., Thanks for sharing.
Signature:
download descargar facebook para android gratis para Android celular and download free facebook descargar and descargar facebook gratis , descarga facebook