Skip to content

Return bad results from MapsSearchClient::get_reverse_geocoding() #45199

@JohnMiner3

Description

@JohnMiner3
  • Package Name: azure.maps.search
  • Package Version: latest
  • Operating System: Windows
  • Python Version: 3.12.7

Describe the bug

I wrote a function to geocode a location given an address using the library. That works fine. But if I reverse geocode a location it returns the wrong address.

To Reproduce
Steps to reproduce the behavior:

  1. Run the code at the bottom in a Jupyter notebook. It looks like about 41 pct of the reverse lookups are wrong. See image below.
Image
  1. This code was test on a Databricks cluster also with the same results. I had a total of 234 sample addresses.
Image

Expected behavior

This is basic math. x = sqrt(sqr(x))

The same should be with the maps functions. a = reverse-geocode(geocode(a))

Screenshots

Bad reverse lookup.

Image

Using another tool comes up with correct location.

Image

Additional context

The python function output shows what is wrong. If we geocode an address to get coordinates. The reverse geo-code of those coordinates should produce the same result.

Test Maps Search Client

from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
api_key = "<your key here>"

def get_additional_address_info(api_key, raw_address):

# create object
azmaps = MapsSearchClient(credential=AzureKeyCredential(api_key))

# initialize variables
longitude = 0.0
latitude = 0.0
address = {'formattedAddress': '', 'postalCode': ''}
coordinates = [0.0, 0.0]

# Perform geocoding
try:
    retval1 = azmaps.get_geocoding(query=raw_address)

    if retval1.get('features'):
        coordinates = retval1['features'][0]['geometry']['coordinates']
        print(coordinates)
        longitude, latitude = coordinates

except Exception as e:
    pass

# Reverse geocoding  
try:
    retval2 = azmaps.get_reverse_geocoding(coordinates=coordinates)

    if retval2.get('features'):
        address = retval2['features'][0]['properties']['address']

except Exception as e:
    pass

return { "address": address['formattedAddress'], "postalCode": address['postalCode'], "longitude": longitude, "latitude": latitude }

Test function

raw_address = "780 Lynnway, Lynn, MA, United States 01905"
retval3 = get_additional_address_info(api_key, raw_address)
print(retval3)

Metadata

Metadata

Assignees

No one assigned

    Labels

    customer-reportedIssues that are reported by GitHub users external to the Azure organization.needs-triageWorkflow: This is a new issue that needs to be triaged to the appropriate team.questionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions