Share via


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

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:

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:

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 (Francei 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)

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, pizzatill 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ör pip install. Som standard pip 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.