Azure Maps Search Package-klientbibliotek för Python – version 1.0.0b2
Det här paketet innehåller en Python SDK för Azure Maps Services for Search. Läs mer om Azure Maps Services här
| Källkod API-referensdokumentation | Produktdokumentation
Friskrivning
Stöd för Azure SDK Python-paket för Python 2.7 upphörde den 1 januari 2022. Mer information och frågor finns i https://github.com/Azure/azure-sdk-for-python/issues/20691
Komma igång
Förutsättningar
- Python 3.6 eller senare krävs för att använda det här paketet.
- En Azure-prenumeration och ett Azure Maps-konto.
- En distribuerad Maps Services-resurs. Du kan skapa resursen via Azure-portalen eller Azure CLI.
Om du använder Azure CLI ersätter <resource-group-name>
du och <account-name>
väljer en lämplig prisnivå baserat på dina behov via parametern <sku-name>
. Mer information finns på den här sidan .
az maps account create --resource-group <resource-group-name> --account-name <account-name> --sku <sku-name>
Installera paketet
Installera SDK för Azure Maps Service Search.
pip install azure-maps-search
Skapa och autentisera MapsSearchClient
Om du vill skapa ett klientobjekt för att komma åt Azure Maps Search-API:et behöver du ett autentiseringsobjekt. Azure Maps Search-klienten stöder också två sätt att autentisera.
1. Autentisera med autentiseringsuppgifter för prenumerationsnyckel
Du kan autentisera med din Azure Maps-prenumerationsnyckel.
När Azure Maps prenumerationsnyckeln har skapats anger du värdet för nyckeln som miljövariabel: AZURE_SUBSCRIPTION_KEY
.
Skicka sedan en AZURE_SUBSCRIPTION_KEY
som credential
parameter till en instans av AzureKeyCredential.
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
credential = AzureKeyCredential(os.environ.get("AZURE_SUBSCRIPTION_KEY"))
search_client = MapsSearchClient(
credential=credential,
)
2. Autentisera med autentiseringsuppgifter för Azure Active Directory
Du kan autentisera med autentiseringsuppgifter för Azure Active Directory-token (AAD) med hjälp av Azure Identity-biblioteket. Autentisering med hjälp av AAD kräver viss inledande konfiguration:
- Installera azure-identity
- Registrera ett nytt AAD-program
- Bevilja åtkomst till Azure Maps genom att tilldela lämplig roll till tjänstens huvudnamn. Se sidan Hantera autentisering.
Efter installationen kan du välja vilken typ av autentiseringsuppgift du azure.identity
vill använda.
Till exempel kan DefaultAzureCredential användas för att autentisera klienten:
Ange sedan värdena för klient-ID, klient-ID och klienthemlighet för AAD-programmet som miljövariabler: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
Du måste också ange den Azure Maps resurs som du vill använda genom att ange clientId
i klientalternativen. Det Azure Maps resursklient-ID:t finns i avsnitten Autentisering i den Azure Maps resursen. Läs dokumentationen om hur du hittar den.
from azure.maps.search import MapsSearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
search_client = MapsSearchClient(credential=credential)
Viktiga begrepp
Med Azure Maps Search-klientbiblioteket för Python kan du interagera med var och en av komponenterna med hjälp av ett dedikerat klientobjekt.
Synkronisera klienter
MapsSearchClient
är den primära klienten för utvecklare som använder Azure Maps Search-klientbiblioteket för Python.
När du har initierat en MapsSearchClient
klass kan du utforska metoderna i det här klientobjektet för att förstå de olika funktionerna i Azure Maps tjänsten Search som du kan komma åt.
Asynkrona klienter
Det här biblioteket innehåller ett fullständigt asynkront API som stöds i Python 3.5+. Om du vill använda den måste du först installera en asynkron transport, till exempel aiohttp. Mer information finns i azure-core-dokumentationen .
Asynkrona klienter och autentiseringsuppgifter bör stängas när de inte längre behövs. Dessa objekt är asynkrona kontexthanterare och definierar asynkrona close
metoder.
Exempel
I följande avsnitt finns flera kodfragment som täcker några av de vanligaste Azure Maps sökuppgifter, inklusive:
Gör en omvänd adresssökning för att översätta koordinatplatsen till gatuadressen
Översätta koordinatplatsen till en mänsklig begriplig korsgata
Begär latitud- och longitudkoordinater för en adress
Du kan använda en autentiserad klient för att konvertera en adress till latitud- och longitudkoordinater. Den här processen kallas även geokodning. Förutom att returnera koordinaterna kommer svaret också att returnera detaljerade adressegenskaper som gata, postnummer, kommun och land-/regioninformation.
from azure.maps.search import MapsSearchClient
search_result = client.search_address("400 Broad, Seattle");
Sök efter en adress eller punkt av intresse
Du kan använda Fuzzy Search för att söka efter en adress eller en orienteringspunkt (POI). I följande exempel är det demostrate hur man söker efter över omfånget för pizza
ett visst land (France
i det här exemplet).
from azure.maps.search import MapsSearchClient
fuzzy_search_result = client.fuzzy_search(query: "pizza", country_filter: "fr" );
result_address = fuzzy_search_result.results[0].address
Gör en omvänd adresssökning för att översätta koordinatplatsen till gatuadressen
Du kan översätta koordinater till läsbara gatuadresser. Den här processen kallas även omvänd geokodning. Detta används ofta för program som använder GPS-flöden och vill identifiera adresser vid specifika koordinatpunkter.
from azure.maps.search import MapsSearchClient
coordinates=(47.60323, -122.33028)
reverse_search_result = client.reverse_search_address(coordinates=coordinates);
result_summary = reverse_search_result.summary
Översätta koordinatplatsen till en mänsklig begriplig korsgata
Översätt koordinatplatsen till en mänsklig begriplig korsgata med hjälp av API:et reverse cross street för sökadress. Oftast behövs detta för att spåra program som tar emot ett GPS-flöde från en enhet eller tillgång och vill veta var koordinaten finns.
from azure.maps.search import MapsSearchClient
coordinates=(47.60323, -122.33028)
reverse_search_result = client.reverse_search_cross_street_address(coordinates=coordinates);
result_address = reverse_search_result.results[0].address
Hämta en asynkron fuzzy-sökbatch med param och batchid
Det här exemplet visar hur du utför fuzzy-sökning efter plats och lat/lon med en asynkron batchmetod. Den här funktionen accepterar både search_queries
och batch_id
och returnerar ett AsyncLRO
-objekt. Här batch_id
kan du använda för att hämta LRO-objektet senare, vilket varar i 14 dagar.
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
async with maps_search_client:
result = await maps_search_client.begin_fuzzy_search_batch(
search_queries=[
"350 5th Ave, New York, NY 10118&limit=1",
"400 Broad St, Seattle, WA 98109&limit=6"
]
)
batch_id = result.batch_id
Metoden begin_fuzzy_search_batch()
accepterar batch_id
också som parameter. Här batch_id
kan du använda för att hämta LRO-objektet senare, vilket varar i 14 dagar.
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
async with maps_search_client:
result = await maps_search_client.begin_fuzzy_search_batch(
batch_id=batch_id
)
result = result.response
Det gick inte att hämta fuzzy search batch sync
Det här exemplet visar hur du kontrollerar om det finns fel i sökningen efter fuzzy_search_batch.
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
result = maps_search_client.fuzzy_search_batch(
search_queries=[
"350 5th Ave, New York, NY 10118&limit=1",
"400 Broad St, Seattle, WA 98109&lim"
]
)
for item in result.items:
count = 0
if item.response.error is not None:
count = count+1
print(f"Error: {item.response.error.message}")
print(f"There are total of {count} search queries failed.")
Sök inuti geometri
Det här exemplet visar hur du utför sökning inuti geometri med angivet mål, till exempel pizza
och flera olika geometri som indata med GeoJson-objekt.
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
geo_json_obj1 = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[
[-122.143035,47.653536],
[-122.187164,47.617556],
[-122.114981,47.570599],
[-122.132756,47.654009],
[-122.143035,47.653536]
]]
},
"properties": {}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.126986,47.639754]
},
"properties": {
"subType": "Circle",
"radius": 100
}
}
]
}
result1 = maps_search_client.search_inside_geometry(
query="pizza",
geometry=geo_json_obj1
)
print("Search inside geometry with standard GeoJson object as input, FeatureCollection:")
print(result1)
Arbeta med befintligt bibliotek för sökning
Det här exemplet visar hur du arbetar med andra befintliga paket, till exempel shapely
att utföra sökning i geometri genom att ange mål, pizza
till exempel .
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
from shapely.geometry import Polygon
geo_interface_obj = Polygon([
[-122.43576049804686, 37.7524152343544],
[-122.43301391601562, 37.70660472542312],
[-122.36434936523438, 37.712059855877314],
[-122.43576049804686, 37.7524152343544]
])
result3 = maps_search_client.search_inside_geometry(
query="pizza",
geometry=geo_interface_obj
)
print("Search inside geometry with Polygon from third party library `shapely` with geo_interface as result 3:")
print(result2)
Felsökning
Allmänt
Maps Search-klienter genererar undantag som definierats i Azure Core.
Den här listan kan användas som referens för att fånga undantag som genereras. Om du vill hämta den specifika felkoden för undantaget använder du error_code
attributet , t.ex exception.error_code
. .
Loggning
Det här biblioteket använder standardloggningsbiblioteket för loggning. Grundläggande information om HTTP-sessioner (URL:er, rubriker osv.) loggas på INFO-nivå.
Detaljerad loggning på FELSÖKNINGsnivå, inklusive begärande-/svarskroppar och oredigerade huvuden, kan aktiveras på en klient med logging_enable
argumentet :
import sys
import logging
from azure.maps.search import MapsSearchClient
# Create a logger for the 'azure.maps.search' SDK
logger = logging.getLogger('azure.maps.search')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
logging_enable
På samma sätt kan aktivera detaljerad loggning för en enda åtgärd, även om den inte är aktiverad för klienten:
service_client.get_service_stats(logging_enable=True)
Ytterligare
Stöter du fortfarande på problem? Om du stöter på buggar eller har förslag kan du skicka in ett problem i avsnittet Problem i projektet.
Nästa steg
Mer exempelkod
Kom igång med våra Maps Search-exempel (Async-versionsexempel).
Flera Azure Maps Search Python SDK-exempel är tillgängliga för dig på SDK:s GitHub-lagringsplats. De här exemplen innehåller exempelkod för ytterligare scenarier som ofta påträffas när du arbetar med Maps Search
set AZURE_SUBSCRIPTION_KEY="<RealSubscriptionKey>"
pip install azure-maps-search --pre
python samples/sample_authentication.py
python sample/sample_fuzzy_search.py
python samples/sample_get_point_of_interest_categories.py
python samples/sample_reverse_search_address.py
python samples/sample_reverse_search_cross_street_address.py
python samples/sample_search_nearby_point_of_interest.py
python samples/sample_search_point_of_interest_category.py
python samples/sample_search_point_of_interest.py
python samples/sample_search_structured_address.py
Anmärkningar:
--pre
flaggan kan läggas till om du vill, det är att inkludera förhandsversioner och utvecklingsversioner förpip install
. Som standardpip
hittar endast stabila versioner.
Mer information finns i Exempelintroduktion
Ytterligare dokumentation
Mer omfattande dokumentation om Azure Maps Search finns i Azure Maps Search-dokumentationen om docs.microsoft.com.
Bidra
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.
När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.
Azure SDK for Python
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för