Azure / Azure/azure-sdk-for-python
Return bad results from MapsSearchClient::get_reverse_geocoding()
- Lingua principale
- Python
- Stelle
- 5.6k
- Fork
- 3.4k
- Merge medio
- 2g 2h
- PR unite (30g)
- 202
Descrizione
- **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.
2. This code was test on a Databricks cluster also with the same results. I had a total of 234 sample addresses.
**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.
Using another tool comes up with correct location.
**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 = ""
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)
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia individuando azure.maps.search e il punto di ingresso MapsSearchClient::get_reverse_geocoding(). Riproduci il problema con il codice del Jupyter notebook e l'indirizzo di esempio forniti, quindi confronta le coordinate di geocoding e l'indirizzo della feature restituita per determinare se la discrepanza si trova nella chiamata dell'SDK o nella risposta del servizio; il lavoro è completato quando il risultato di reverse geocoding segnalato è spiegato o corretto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- azure, python
- Ambito
- api
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100