We recommend using Visual Studio 2017

Maximizing Address Find Rates in MapPoint .NET Version 3.0


IMPORTANT: MapPoint Web Service was retired on November 18, 2011. Please see Bing Maps for a list of current Bing Maps APIs.

Alasdair Turner
Microsoft Corporation

March 2003

Applies to:
    Microsoft® MapPoint® .NET Developer Web Services Version 3.0

Summary: Use the FindAddress method or the batch geocoding service to maximize your address find rates in MapPoint .NET 3.0. (5 printed pages)


How the FindAddress Method and Batch Geocoding Work
Threshold Score Calculation


A common task that most first-time MapPoint .NET users perform is finding their home address using the FindAddress method. It returns a list of found address results based on an input address, ordered by how well the results match the search criteria. Normally, the address is successfully returned, and with the help of the rendering functionality of the BestMapView property, users see a map of the location of their home. Sometimes, however, users do not receive the expected result because the address is incorrectly formatted.

When addresses are not found, simply changing the formatting of the address, or removing extra information such as a person's name in the address line, often allows the service to find a particular address. Similarly, users using the batch geocoding service (designed for processing large amounts of data, or data that is updated regularly) might encounter very low match rates for the address data. Reformatting the data within the spreadsheets that are used to generate the XML file being passed to the service can also solve the problem. Passing data in a different format to the batch geocoder can mean the difference between a one percent match rate and a 100 percent match rate.

The following sections demonstrate how the FindAddress method and batch geocoding functionality works, why a FindAddress method query may not work, and how to increase the match rates when using the FindAddress method or the batch geocoding service.

How the FindAddress Method and Batch Geocoding Work

The FindAddress method and batch geocoding are very similar in functionality. The main difference is that the FindAddress method is a SOAP service, and batch geocoding is a Microsoft Windows® service that is accessed through the MapPoint .NET Customer Service extranet. They both use seven possible properties and input parameters. The FindAddress method and batch geocoding both search through the MapPoint .NET data. The properties and their corresponding input parameters are as follows:

  • AddressLine property
  • PrimaryCity property
  • SecondaryCity property
  • Subdivision property
  • PostalCode property
  • CountryRegion property
  • FormattedAddress property (not used in this example)

The user must provide the AddressLine parameter, and at least one of the PrimaryCity, SecondaryCity, Subdivision, or PostalCode parameters. The CountryRegion property is required for batch geocoding, but not for the FindAddress method. For the FindAddress method, if the CountryRegion property is omitted, the CountryRegion property specified in the UserInfoFindHeader.Context property is used. If there is no country specified in the UserInfoFindHeader.Context property, the FindAddress method defaults to the United States. A best practice is to fill in as many of the address parameters as possible, thus maximizing your find rate. If a street but no house number is specified, the service finds a random point on the designated street. If the street spans a long distance, adding a city or postal code increases the accuracy of the result, but still does not guarantee that the result is close to the location you want.

Both the FindAddress method and batch geocoding contain code that streamlines addresses. For example, apartment numbers are removed, as are room and suite numbers. Streamlining addresses normally works well, but when an address has both a suite number and a room number, neither is automatically removed. This situation reduces the likelihood that the requested address will be found. We recommend removing all apartment, suite, and room numbers from an incoming AddressLine parameter to maximize your find rate.

Threshold Score Calculation

Each found address result is given a score between 1 and 0, and then returned to the user in order from highest to lowest score. For MapPoint .NET Developer Web Services version 3.0, a good result has a score of 0.95. A result is considered a good-but-ambiguous match if there is more than one result with a score of 0.90. For example, the address of 302 85th Street, Seattle, WA, returns three 302 85th Street addresses: one for N 85th Street, one for NE 85th Street, and one for NW 85th Street. In a case where neither a good match nor a good-but-ambiguous match is found, and a postal code was provided in the initial request, the FindAddress method and batch geocoding service geocodes to the PostalCode property.

Note   For MapPoint .NET Basic Services version 2.0, scores are calculated slightly differently: a good result has a score of 0.90, and a good-but-ambiguous result has a score of 0.85. Also, the FindAddress method does not geocode to the PostalCode property.

The threshold score is a way of minimizing results that are returned to the user. Most users are not interested in results that have a score of less than 0.85, which is the default value that MapPoint .NET uses for the ThresholdScore property. If the first query does not return any results, the ThresholdScore property can be lowered to increase the number of returned results. A valid threshold score value must be a number between 1 and 0.

If you do not see your address in the list of addresses returned from your FindAddress method query, lower the ThresholdScore property to zero. The following Microsoft Visual Basic® .NET code shows how to lower the ThresholdScore property from the default value of 0.85 to 0.5:

     Dim myFindOptions As New MapPointNET.FindOptions()
     Dim myThresholdScore As Double
     myThresholdScore = 0.5
     myFindOptions.ThresholdScore = myThresholdScore


The following tips will help you increase your address match rates:

  • Keep the AddressLine parameter simple. Remove all apartment, suite, and room numbers.
  • Remove Post Office Box addresses from your search. Batch geocoding simply skips the record; the FindAddress method returns a SOAP exception specifying the problem.
  • Addresses that use a named building or location such as The School of Fine Art, or The Baldwin Museum of Science, will not be found because there is only street address data. It is best to use a street address, or at the very least a street name. In a case where both a named residence and a street address are used, remove the residence name and use only the address and street.
  • Remove any company or personal names from the AddressLine. For example, if the address were Microsoft Corporation, One Microsoft Way, remove the phrase Microsoft Corporation.
  • For the United Kingdom and Canada, be aware that postal code data is very detailed. Often a single postal code will represent a block of houses or a small neighborhood. If the specific street address cannot be found, a postal code result may provide a location that is close enough.
  • For United States addresses, MapPoint .NET does not use all digits of a nine-digit ZIP Code. When a nine-digit ZIP Code is passed to the server, the service ignores the final four digits, so it is not necessary to remove these digits from the ZIP Code.

Address Formats

The FindAddress method and batch geocoding functionality works in the 17 countries currently supported by MapPoint .NET. These countries are Austria, Belgium, Canada, Denmark, Finland (Helsinki only), France, Germany, Italy, Luxembourg, Norway (Oslo only), Portugal, Spain, Sweden, Switzerland, The Netherlands, United Kingdom, and United States.

The following table shows how the parts of a country's address map to the properties of the Address class.

Table 1. Supported Country Address Format

PropertyAustria, Belgium, Denmark, Finland, France, Germany, Luxembourg, Norway, Sweden, Switzerland, The NetherlandsCanadaItaly, Portugal, SpainUnited KingdomUnited States
AddressLineStreet AddressStreet AddressStreet AddressAddress Line 1Street Address
PrimaryCityCityCityCityAddress Line 2City
SecondaryCity   City 
Subdivision ProvinceProvinceCountyState
PostalCodePostcodePostal CodePostcodePostcodeZIP Code


The FindAddress method is the most fundamental technique for finding the latitude and longitude of locations, in addition to the latitude and longitude BestMapView property used to render your found location. The FindResults object returned using the FindAddress method is in a format that is easy to pass to the RenderServiceSoap.GetMap method, and therefore is a recommended entry point in learning how to use the MapPoint .NET service.

This article showed you how to maximize the accuracy of results returned from the FindAddress method. These simple tips will increase your match rates, and the accuracy of your latitude and longitude operations.

Additional Resources

Introducing MapPoint .NET Developer Web Services

FindAddress method

ThresholdScore method

Alasdair Turner is a software test engineer in the Microsoft MapPoint Business Unit, and has been a member of the quality assurance team for MapPoint .NET technologies for the last two years.