Python REST SDK fejlesztői útmutató (előzetes verzió)
Az Azure Maps Python SDK integrálható Python-alkalmazásokkal és kódtárakkal térképekkel és helyérzékeny alkalmazásokkal. Az Azure Maps Python SDK keresési, útvonal-, renderelési és földrajzi helymeghatározási API-kat tartalmaz. Ezek az API-k olyan műveleteket támogatnak, mint a cím keresése, a különböző koordináták közötti útválasztás, egy adott IP-cím földrajzi helyének lekérése.
Előfeltételek
- Azure Maps-fiók.
- Előfizetési kulcs vagy más hitelesítési mód az Azure Maps használatával.
- Python 3.8-on vagy újabb verzióban. Javasoljuk, hogy a legújabb kiadást használja. További információ: Azure SDK for Python verziótámogatási szabályzat.
Tipp.
Az Azure Maps-fiókot programozott módon is létrehozhatja, az Alábbi példa az Azure CLI használatával:
az maps account create --kind "Gen2" --account-name "myMapAccountName" --resource-group "<resource group>" --sku "G2"
Python-projekt létrehozása
Az alábbi példa bemutatja, hogyan hozhat létre Egy Python nevű demo
konzolprogramot:
mkdir mapsDemo
cd mapsDemo
New-Item demo.py
A szükséges Python-csomagok telepítése
Az Azure Maps minden szolgáltatása saját csomagban található. Az Azure Maps Python SDK használatakor csak a szükséges szolgáltatások csomagjait telepítheti.
Itt telepítjük az Azure Maps Search csomagot. Mivel még nyilvános előzetes verzióban van, hozzá kell adnia a jelzőt --pre
:
pip install azure-maps-search --pre
Azure Maps-szolgáltatások
Az Azure Maps Python SDK támogatja a Python 3.8-es vagy újabb verzióját. További információ a Python jövőbeli verzióiról: Azure SDK for Python verziótámogatási szabályzat.
Szolgáltatásnév | PyPi-csomag | Minták |
---|---|---|
Keresés | azure-maps-search | keresési minták |
Útvonal | azure-maps-route | útvonalminták |
Megjelenítés | azure-maps-render | minta renderelése |
Földrajzi hely | azure-maps-geolocation | geolokációs minta |
MapsSearchClient létrehozása és hitelesítése
Az Azure Maps keresési API-k eléréséhez használt objektum létrehozásakor MapsSearchClient
szüksége van egy credential
objektumra a hitelesítéshez. A hitelesítéshez használhat Microsoft Entra-hitelesítő adatokat vagy Azure-előfizetési kulcsot. A hitelesítéssel kapcsolatos további információkért lásd: Hitelesítés az Azure Maps használatával.
Tipp.
AzMapsSearchClient
Azure Maps keresési kódtárát használó fejlesztők számára ez az elsődleges felület. Az elérhető keresési módszerekkel kapcsolatos további információkért tekintse meg az Azure Maps Search-csomag ügyfélkódtárát .
Microsoft Entra hitelesítő adatok használata
Az Azure Identity-csomaggal hitelesíthet a Microsoft Entra-azonosítóval. A DefaultAzureCredential szolgáltató használatához telepítenie kell az Azure Identity ügyfélcsomagot:
pip install azure-identity
Regisztrálnia kell az új Microsoft Entra-alkalmazást, és hozzáférést kell adnia az Azure Mapshez úgy, hogy hozzárendeli a szükséges szerepkört a szolgáltatásnévhez. További információ: Démon gazdagépe nem Azure-erőforrásokon. A rendszer visszaadja az alkalmazás (ügyfél) azonosítóját, a címtár (bérlő) azonosítóját és az ügyfél titkos kódját. Másolja ki ezeket az értékeket, és tárolja őket biztonságos helyen. Az alábbi lépésekben szüksége lesz rájuk.
Ezután meg kell adnia a használni kívánt Azure Maps-fiókot a térképek ügyfélazonosítójának megadásával. Az Azure Maps-fiók ügyfélazonosítója az Azure Maps-fiók hitelesítési szakaszaiban található. További információ: A hitelesítés részleteinek megtekintése.
Állítsa be az alkalmazás (ügyfél) azonosítójának, a Címtár (bérlő) azonosítójának és a Microsoft Entra-alkalmazás ügyféltitkának értékeit, valamint a leképezési erőforrás ügyfélazonosítóját környezeti változóként:
Környezeti változó | Leírás |
---|---|
AZURE_CLIENT_ID | Alkalmazás (ügyfél) azonosítója a regisztrált alkalmazásban |
AZURE_CLIENT_SECRET | Az ügyfél titkos kódjának értéke a regisztrált alkalmazásban |
AZURE_TENANT_ID | Címtár (bérlő) azonosítója a regisztrált alkalmazásban |
MAPS_CLIENT_ID | Az Azure Map-fiók ügyfélazonosítója |
Most már létrehozhat környezeti változókat a PowerShellben az alábbi értékek tárolásához:
$Env:AZURE_CLIENT_ID="Application (client) ID"
$Env:AZURE_CLIENT_SECRET="your client secret"
$Env:AZURE_TENANT_ID="your Directory (tenant) ID"
$Env:MAPS_CLIENT_ID="your Azure Maps client ID"
A környezeti változók beállítása után használhatja őket a programban az AzureMapsSearch
ügyfél példányosítására. Hozzon létre egy demo.py nevű fájlt, és adja hozzá a következő kódot:
import os
from azure.identity import DefaultAzureCredential
from azure.maps.search import MapsSearchClient
credential = DefaultAzureCredential()
maps_client_id = os.getenv("MAPS_CLIENT_ID")
maps_search_client = MapsSearchClient(
client_id=maps_client_id,
credential=credential
)
Fontos
Az előző kódrészletben létrehozott egyéb környezeti változókra a kódmintában DefaultAzureCredential()
nem használt. Ha nem megfelelően állítja be ezeket a környezeti változókat, ugyanazokkal az elnevezési konvenciók használatával futásidejű hibákat fog kapni. Ha például hiányzik AZURE_CLIENT_ID
vagy érvénytelen, hibaüzenet jelenik InvalidAuthenticationTokenTenant
meg.
Előfizetési kulcs hitelesítő adatainak használata
Az Azure Maps-előfizetési kulccsal hitelesíthet. Az előfizetési kulcs az Azure Maps-fiók Hitelesítés szakaszában található, az alábbi képernyőképen látható módon:
Most létrehozhat környezeti változókat a PowerShellben az előfizetési kulcs tárolásához:
$Env:SUBSCRIPTION_KEY="your subscription key"
A környezeti változó létrehozása után elérheti azt a kódban. Hozzon létre egy demo.py nevű fájlt, és adja hozzá a következő kódot:
import os
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
# Use Azure Maps subscription key authentication
subscription_key = os.getenv("SUBSCRIPTION_KEY")
maps_search_client = MapsSearchClient(
credential=AzureKeyCredential(subscription_key)
)
Cím geokódolása
Az alábbi kódrészlet bemutatja, hogyan szerezhet be hosszúsági és szélességi koordinátákat egy egyszerű konzolalkalmazásban egy adott címhez. Ez a példa az előfizetési kulcs hitelesítő adatait használja a MapsSearchClient hitelesítéséhez. A demo.py
-ben:
import os
from azure.core.exceptions import HttpResponseError
subscription_key = os.getenv("AZURE_SUBSCRIPTION_KEY", "your subscription key")
def geocode():
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
try:
result = maps_search_client.get_geocoding(query="15127 NE 24th Street, Redmond, WA 98052")
if result.get('features', False):
coordinates = result['features'][0]['geometry']['coordinates']
longitude = coordinates[0]
latitude = coordinates[1]
print(longitude, latitude)
else:
print("No results")
except HttpResponseError as exception:
if exception.error is not None:
print(f"Error Code: {exception.error.code}")
print(f"Message: {exception.error.message}")
if __name__ == '__main__':
geocode()
Ez a mintakód az Azure Maps-előfizetési kulccsal példányosítja AzureKeyCredential
, majd az objektum példányosítására MapsSearchClient
használja. A kérésnek az Azure Maps REST-végpontokra való továbbításával MapsSearchClient
megadott módszerek. Végül a program végigvezeti az eredményeket, és kinyomtatja az egyes eredmények koordinátáit.
Batch geokódcímek
Ez a minta bemutatja, hogyan hajthat végre kötegelt keresési címet:
import os
from azure.core.exceptions import HttpResponseError
subscription_key = os.getenv("AZURE_SUBSCRIPTION_KEY", "your subscription key")
def geocode_batch():
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
try:
result = maps_search_client.get_geocoding_batch({
"batchItems": [
{"query": "400 Broad St, Seattle, WA 98109"},
{"query": "15127 NE 24th Street, Redmond, WA 98052"},
],
},)
if not result.get('batchItems', False):
print("No batchItems in geocoding")
return
for item in result['batchItems']:
if not item.get('features', False):
print(f"No features in item: {item}")
continue
coordinates = item['features'][0]['geometry']['coordinates']
longitude, latitude = coordinates
print(longitude, latitude)
except HttpResponseError as exception:
if exception.error is not None:
print(f"Error Code: {exception.error.code}")
print(f"Message: {exception.error.message}")
if __name__ == '__main__':
geocode_batch()
Fordított címkeresés létrehozása a koordináták helyének utcacímre való fordításához
A koordinátákat lefordíthatja ember által olvasható utcacímekké. Ezt a folyamatot fordított geokódolásnak is nevezik. Ezt gyakran használják GPS-hírcsatornákat használó alkalmazásokhoz, és adott koordinátákon szeretnének címeket felderíteni.
import os
from azure.core.exceptions import HttpResponseError
subscription_key = os.getenv("AZURE_SUBSCRIPTION_KEY", "your subscription key")
def reverse_geocode():
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
try:
result = maps_search_client.get_reverse_geocoding(coordinates=[-122.138679, 47.630356])
if result.get('features', False):
props = result['features'][0].get('properties', {})
if props and props.get('address', False):
print(props['address'].get('formattedAddress', 'No formatted address found'))
else:
print("Address is None")
else:
print("No features available")
except HttpResponseError as exception:
if exception.error is not None:
print(f"Error Code: {exception.error.code}")
print(f"Message: {exception.error.message}")
if __name__ == '__main__':
reverse_geocode()
Kötegelt kérelem fordított geokódoláshoz
Ez a minta bemutatja, hogyan hajthat végre fordított keresést adott koordináták alapján a kötegben.
import os
from azure.core.credentials import AzureKeyCredential
from azure.core.exceptions import HttpResponseError
from azure.maps.search import MapsSearchClient
subscription_key = os.getenv("AZURE_SUBSCRIPTION_KEY", "your subscription key")
def reverse_geocode_batch():
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
try:
result = maps_search_client.get_reverse_geocoding_batch({
"batchItems": [
{"coordinates": [-122.349309, 47.620498]},
{"coordinates": [-122.138679, 47.630356]},
],
},)
if result.get('batchItems', False):
for idx, item in enumerate(result['batchItems']):
features = item['features']
if features:
props = features[0].get('properties', {})
if props and props.get('address', False):
print(
props['address'].get('formattedAddress', f'No formatted address for item {idx + 1} found'))
else:
print(f"Address {idx + 1} is None")
else:
print(f"No features available for item {idx + 1}")
else:
print("No batch items found")
except HttpResponseError as exception:
if exception.error is not None:
print(f"Error Code: {exception.error.code}")
print(f"Message: {exception.error.message}")
if __name__ == '__main__':
reverse_geocode_batch()
Sokszögek lekérése egy adott helyhez
Ez a minta bemutatja, hogyan kereshet sokszögben.
import os
from azure.core.exceptions import HttpResponseError
from azure.maps.search import Resolution
from azure.maps.search import BoundaryResultType
subscription_key = os.getenv("AZURE_SUBSCRIPTION_KEY", "your subscription key")
def get_polygon():
from azure.core.credentials import AzureKeyCredential
from azure.maps.search import MapsSearchClient
maps_search_client = MapsSearchClient(credential=AzureKeyCredential(subscription_key))
try:
result = maps_search_client.get_polygon(
coordinates=[-122.204141, 47.61256],
result_type=BoundaryResultType.LOCALITY,
resolution=Resolution.SMALL,
)
if not result.get('geometry', False):
print("No geometry found")
return
print(result["geometry"])
except HttpResponseError as exception:
if exception.error is not None:
print(f"Error Code: {exception.error.code}")
print(f"Message: {exception.error.message}")
if __name__ == '__main__':
get_polygon()
V1 SDK-k használata kereséshez és rendereléshez
A Search V1 és a Render V1 SDK használatához további információt a Search V1 SDK csomag oldalán és a Render V1 SDK-csomagban talál.
További információk
Az Azure Maps Search-csomag ügyfélkódtára a Pythonhoz készült Azure SDK előzetes verziójának dokumentációjában.