Klientská knihovna balíčku vyhledávání Azure Maps pro Python – verze 1.0.0b2
Tento balíček obsahuje sadu Python SDK pro službu Azure Maps Services for Search. Další informace o Azure Maps Services najdete tady.
Zdrojový kód | Referenční dokumentace k | rozhraní API Dokumentace k produktu
Právní omezení
Podpora balíčků Azure SDK Python pro Python 2.7 skončila 1. ledna 2022. Další informace a dotazy najdete na https://github.com/Azure/azure-sdk-for-python/issues/20691
Začínáme
Požadavky
- K použití tohoto balíčku se vyžaduje Python 3.6 nebo novější.
- Předplatné Azure a účet Azure Maps.
- Nasazený prostředek služby Maps Services Prostředek můžete vytvořit prostřednictvím webu Azure Portal nebo Azure CLI.
Pokud používáte Azure CLI, nahraďte <resource-group-name>
a <account-name>
podle vlastního výběru a pomocí parametru <sku-name>
vyberte správnou cenovou úroveň na základě vašich potřeb. Další podrobnosti najdete na této stránce .
az maps account create --resource-group <resource-group-name> --account-name <account-name> --sku <sku-name>
Instalace balíčku
Nainstalujte sadu SDK služby Azure Maps Service Search.
pip install azure-maps-search
Vytvoření a ověření klienta MapsSearchClient
Pokud chcete vytvořit objekt klienta pro přístup k rozhraní AZURE MAPS Search API, budete potřebovat objekt přihlašovacích údajů. Klient služby Azure Maps Search také podporuje dva způsoby ověřování.
1. Ověření pomocí přihlašovacích údajů klíče předplatného
K ověření můžete použít klíč předplatného Azure Maps.
Po vytvoření klíče předplatného Azure Maps nastavte hodnotu klíče jako proměnnou prostředí: AZURE_SUBSCRIPTION_KEY
.
Pak jako parametr předejte AZURE_SUBSCRIPTION_KEY
credential
instanci 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. Ověřování pomocí přihlašovacích údajů Azure Active Directory
K ověření můžete použít přihlašovací údaje tokenu Azure Active Directory (AAD) pomocí knihovny Identit Azure. Ověřování pomocí AAD vyžaduje určité počáteční nastavení:
- Instalace azure-identity
- Registrace nové aplikace AAD
- Přiřazením vhodné role k instančnímu objektu udělte přístup k Azure Maps. Projděte si stránku Správa ověřování.
Po nastavení můžete zvolit, jaký typ přihlašovacích údajůazure.identity
se má použít.
Například DefaultAzureCredential se dá použít k ověření klienta:
Dále nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
Budete také muset určit Azure Maps prostředek, který chcete použít, zadáním parametru clientId
v možnostech klienta. ID klienta prostředku Azure Maps najdete v částech Ověřování prostředku Azure Maps. Informace o tom, jak ji najít, najdete v dokumentaci .
from azure.maps.search import MapsSearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
search_client = MapsSearchClient(credential=credential)
Klíčové koncepty
Klientská knihovna Azure Maps Search pro Python umožňuje interakci s každou komponentou pomocí vyhrazeného objektu klienta.
Synchronizace klientů
MapsSearchClient
je primární klient pro vývojáře, kteří používají klientskou knihovnu Azure Maps Search pro Python.
Jakmile jste inicializovali MapsSearchClient
třídu, můžete prozkoumat metody tohoto klientského objektu, abyste porozuměli různým funkcím Azure Maps Search, ke kterým máte přístup.
Asynchronní klienti
Tato knihovna obsahuje kompletní asynchronní rozhraní API podporované v Pythonu 3.5 nebo novějším. Abyste ho mohli používat, musíte nejdřív nainstalovat asynchronní přenos, například aiohttp. Další informace najdete v dokumentaci k azure-core .
Asynchronní klienti a přihlašovací údaje by se měly zavřít, když už je nepotřebujete. Tyto objekty jsou správci asynchronního kontextu a definují asynchronní close
metody.
Příklady
Následující části obsahují několik fragmentů kódu, které pokrývají některé z nejběžnějších úloh Azure Maps vyhledávání, mezi které patří:
Provedení zpětného vyhledávání adresy pro překlad souřadnicového umístění na adresu ulice
Získání dávky asynchronního vyhledávání přibližných shod s parametry param a batchid
Nepodařilo se získat přibližnou synchronizaci dávkového vyhledávání
Vyžádání souřadnic zeměpisné šířky a délky pro adresu
Ověřeného klienta můžete použít k převodu adresy na souřadnice zeměpisné šířky a délky. Tento proces se také označuje jako geokódování. Kromě vrácení souřadnic vrátí odpověď také podrobné vlastnosti adresy, jako jsou například ulice, PSČ, obec a informace o zemi/oblasti.
from azure.maps.search import MapsSearchClient
search_result = client.search_address("400 Broad, Seattle");
Vyhledání adresy nebo bodu zájmu
K vyhledání adresy nebo bodu zájmu (POI) můžete použít funkci Přibližné vyhledávání. Následující příklady demostrují, jak hledat pizza
v rozsahu konkrétní země (France
v tomto příkladu).
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
Provedení zpětného vyhledávání adresy pro překlad souřadnicového umístění na adresu ulice
Souřadnice můžete přeložit na adresy ulic, které jsou čitelné pro člověka. Tento proces se také označuje jako reverzní geokódování. To se často používá pro aplikace, které využívají informační kanály GPS a chtějí zjistit adresy v konkrétních souřadnicích.
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
Překlad umístění souřadnic na srozumitelnou křížovou ulici
Umístění souřadnic můžete přeložit na srozumitelnou křížovou ulici pomocí rozhraní API Prohledat adresu Reverse Cross Street. Nejčastěji je to potřeba při sledování aplikací, které přijímají informační kanál GPS ze zařízení nebo prostředku a chtějí vědět, kde se souřadnice nachází.
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
Získání dávky asynchronního vyhledávání přibližných shod s parametry param a batchid
Tato ukázka ukazuje, jak provést přibližné vyhledávání podle umístění a lat/lon pomocí asynchronní dávkové metody. Tato funkce přijímá objekt search_queries
a batch_id
a vrací ho AsyncLRO
. Pomocí batch_id
následujícího příkazu můžete později načíst objekt LRO, který trvá 14 dní.
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
Metoda begin_fuzzy_search_batch()
také přijímá batch_id
jako parametr . Pomocí batch_id
následujícího příkazu můžete později načíst objekt LRO, který trvá 14 dní.
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
Nepodařilo se získat přibližnou synchronizaci dávkového vyhledávání
Tato ukázka ukazuje, jak zkontrolovat, jestli při hledání fuzzy_search_batch nedošlo k chybám.
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.")
Hledání uvnitř geometrie
Tato ukázka ukazuje, jak provést vyhledávání uvnitř geometrie podle daného cíle, jako pizza
je a více různých geometrií jako vstup s objektem GeoJson.
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)
Práce s existující knihovnou pro hledání
Tato ukázka ukazuje, jak pracovat s jinými existujícími balíčky, například shapely
k provádění vyhledávání uvnitř geometrie podle daného cíle, například pizza
.
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)
Poradce při potížích
Obecné
Klienti služby Maps Search vyvolávají výjimky definované v Azure Core.
Tento seznam lze použít jako referenci k zachycení vyvolaných výjimek. Pokud chcete získat konkrétní kód chyby výjimky, použijte error_code
atribut , tj exception.error_code
. .
protokolování
Tato knihovna používá k protokolování standardní knihovnu protokolování . Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na úrovni INFO.
Podrobné protokolování úrovně LADĚNÍ, včetně těl požadavků/odpovědí a nezopravovaných hlaviček, je možné povolit na klientovi s argumentem logging_enable
:
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)
Podobně logging_enable
může povolit podrobné protokolování pro jednu operaci, i když není povolené pro klienta:
service_client.get_service_stats(logging_enable=True)
Další
Stále dochází k problémům? Pokud narazíte na nějaké chyby nebo máte návrhy, nahlaste problém v části Problémy projektu.
Další kroky
Další vzorový kód
Začněte s našimi ukázkami vyhledávání v mapách (ukázky asynchronních verzí).
Několik ukázek sady Python SDK pro vyhledávání Azure Maps je k dispozici v úložišti sady SDK Na GitHubu. Tyto ukázky poskytují ukázkový kód pro další scénáře, se kterými se při práci s vyhledáváním v mapách běžně setkáte.
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
Poznámky:
--pre
Příznak lze přidat volitelně, má obsahovat předběžné a vývojové verze propip install
. Ve výchozím nastavenípip
najde pouze stabilní verze.
Další podrobnosti najdete v úvodu k ukázkům.
Další dokumentace
Podrobnější dokumentaci k Azure Maps Search najdete v dokumentaci Azure Maps Search na docs.microsoft.com.
Přispívání
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo kontaktujte s opencode@microsoft.com případnými dalšími dotazy nebo připomínkami.
Azure SDK for Python
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro