Python için Arama Paketi istemci kitaplığını Azure Haritalar - sürüm 1.0.0b2
Bu paket, Arama için Azure Haritalar Hizmetleri için bir Python SDK'sı içerir. Azure Haritalar Hizmetleri hakkında daha fazla bilgiyi burada bulabilirsiniz
Kaynak kodu | API başvuru belgeleri | Ürün belgeleri
Bildirim
Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için lütfen https://github.com/Azure/azure-sdk-for-python/issues/20691
Başlarken
Önkoşullar
- Bu paketi kullanmak için Python 3.6 veya üzeri gereklidir.
- Azure aboneliği ve Azure Haritalar hesabı.
- Dağıtılmış bir Haritalar Hizmetleri kaynağı. Kaynağı Azure Portal veya Azure CLI aracılığıyla oluşturabilirsiniz.
Azure CLI kullanıyorsanız, istediğiniz ve <account-name>
öğesini değiştirin <resource-group-name>
ve parametresi aracılığıyla <sku-name>
gereksinimlerinize göre uygun bir fiyatlandırma katmanı seçin. Daha fazla ayrıntı için lütfen bu sayfaya bakın.
az maps account create --resource-group <resource-group-name> --account-name <account-name> --sku <sku-name>
Paketi yükleme
Azure Haritalar Hizmet Arama SDK'sını yükleyin.
pip install azure-maps-search
MapsSearchClient Oluşturma ve Kimliğini Doğrulama
Azure Haritalar Arama API'sine erişmek üzere bir istemci nesnesi oluşturmak için bir kimlik bilgisi nesnesi gerekir. Azure Haritalar Search istemcisi kimlik doğrulaması için iki yolu da destekler.
1. Abonelik Anahtarı Kimlik Bilgileri ile kimlik doğrulaması yapma
Azure Haritalar Abonelik Anahtarınızla kimlik doğrulaması yapabilirsiniz.
Azure Haritalar Abonelik Anahtarı oluşturulduktan sonra anahtarın değerini ortam değişkeni olarak ayarlayın: AZURE_SUBSCRIPTION_KEY
.
Ardından parametresi olarak credential
bir AZURE_SUBSCRIPTION_KEY
AzureKeyCredential örneğine geçirin.
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. Azure Active Directory kimlik bilgileriyle kimlik doğrulaması
Azure Kimlik kitaplığını kullanarak Azure Active Directory (AAD) belirteci kimlik bilgileriyle kimlik doğrulaması yapabilirsiniz. AAD kullanarak kimlik doğrulaması için bazı ilk kurulumlar gerekir:
- azure-identity yükleme
- Yeni bir AAD uygulaması kaydetme
- Hizmet sorumlunuza uygun rolü atayarak Azure Haritalar erişimi verin. Lütfen Kimlik doğrulamasını yönetme sayfasına bakın.
Kurulumdan sonra, hangi kimlik bilgisiazure.identity
türünü kullanacağınızı seçebilirsiniz.
Örneğin, istemcinin kimliğini doğrulamak için DefaultAzureCredential kullanılabilir:
Ardından, AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
İstemci seçeneklerinde öğesini belirterek kullanmayı planladığınız Azure Haritalar kaynağını da belirtmeniz clientId
gerekir. Azure Haritalar kaynağı istemci kimliği, Azure Haritalar kaynağının Kimlik Doğrulaması bölümlerinde bulunabilir. Lütfen nasıl bulabileceğinize ilişkin belgelere bakın.
from azure.maps.search import MapsSearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
search_client = MapsSearchClient(credential=credential)
Önemli kavramlar
Python için Azure Haritalar Search istemci kitaplığı, ayrılmış bir istemci nesnesi kullanarak bileşenlerin her biriyle etkileşim kurmanızı sağlar.
eşitleme istemcileri
MapsSearchClient
, Python için Azure Haritalar Search istemci kitaplığını kullanan geliştiriciler için birincil istemcidir.
Bir MapsSearchClient
sınıf başlatıldıktan sonra, erişebileceğiniz Azure Haritalar Arama hizmeti farklı özelliklerini anlamak için bu istemci nesnesi üzerindeki yöntemleri keşfedebilirsiniz.
Zaman Uyumsuz İstemciler
Bu kitaplık, Python 3.5+ üzerinde desteklenen tam bir zaman uyumsuz API içerir. Bunu kullanmak için önce aiohttp gibi bir zaman uyumsuz aktarım yüklemeniz gerekir. Daha fazla bilgi için bkz. azure-core belgeleri .
Zaman uyumsuz istemciler ve kimlik bilgileri artık gerekli olmadığında kapatılmalıdır. Bu nesneler zaman uyumsuz bağlam yöneticileridir ve zaman uyumsuz close
yöntemler tanımlar.
Örnekler
Aşağıdaki bölümlerde, en yaygın Azure Haritalar Arama görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanmaktadır:
Koordinat konumunu sokak adresine çevirmek için Ters Adres Araması yapma
Koordinat konumunu insan tarafından anlaşılabilen bir caddeye çevirin
param ve batchid ile zaman uyumsuz belirsiz arama toplu işlemini alma
Adres için enlem ve boylam koordinatları isteme
Kimliği doğrulanmış bir istemciyi kullanarak adresi enlem ve boylam koordinatlarına dönüştürebilirsiniz. Bu işleme coğrafi kodlama da denir. Yanıt, koordinatları döndürmenin yanı sıra sokak, posta kodu, belediye ve ülke/bölge bilgileri gibi ayrıntılı adres özelliklerini de döndürür.
from azure.maps.search import MapsSearchClient
search_result = client.search_address("400 Broad, Seattle");
Adres veya İlgi Çekici Nokta arama
Bir adresi veya ilgi çekici noktayı (POI) aramak için Benzer Arama'yı kullanabilirsiniz. Aşağıdaki örnekler belirli bir ülkeninFrance
kapsamı (bu örnekte) üzerinde arama pizza
yapmayı demostrate.
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
Koordinat konumunu sokak adresine çevirmek için Ters Adres Araması yapma
Koordinatları okunabilir sokak adreslerine çevirebilirsiniz. Bu işleme ters coğrafi kodlama da denir. Bu genellikle GPS akışlarını kullanan ve belirli koordinat noktalarında adresleri bulmak isteyen uygulamalar için kullanılır.
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
Koordinat konumunu insan tarafından anlaşılabilen bir caddeye çevirin
Arama Adresi Ters Caddeler Arası API'sini kullanarak koordinat konumunu insan tarafından anlaşılabilen bir caddeye çevirin. Çoğu zaman, bir cihazdan veya varlıktan GPS akışı alan ve koordinatın nerede olduğunu bilmek isteyen uygulamaları izlemede bu gereklidir.
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
param ve batchid ile zaman uyumsuz belirsiz arama toplu işlemini alma
Bu örnek, zaman uyumsuz toplu iş yöntemiyle konuma ve lat/lon'a göre benzer arama gerçekleştirmeyi gösterir. Bu işlev hem hem batch_id
de search_queries
nesnesini kabul ediyor ve döndüriyorAsyncLRO
. batch_id
Burada son 14 gün sonra LRO nesnesini almak için kullanılabilir.
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
yöntemi begin_fuzzy_search_batch()
de parametresi olarak kabul eder batch_id
. batch_id
Burada son 14 gün sonra LRO nesnesini almak için kullanılabilir.
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
Belirsiz arama toplu eşitlemesi alınamaz
Bu örnek, fuzzy_search_batch aramasında hata olup olmadığının nasıl denetlendiğini gösterir.
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.")
Geometri içinde arama
Bu örnek, GeoJson nesnesiyle giriş olarak verilen hedef ve birden çok farklı geometri gibi pizza
belirli bir hedefe göre geometri içinde arama yapmayı gösterir.
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)
Arama için mevcut kitaplıkla çalışma
Bu örnek, gibi pizza
belirli bir hedefe göre geometri içinde arama yapmak için gibi shapely
diğer mevcut paketlerle nasıl çalışileceğini gösterir.
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)
Sorun giderme
Genel
Haritalar Arama istemcileri , Azure Core'da tanımlanan özel durumları tetikler.
Bu liste, atılan özel durumları yakalamak için başvuru için kullanılabilir. Özel durumun belirli hata kodunu almak için özniteliğini error_code
kullanın, örneğin. exception.error_code
Günlüğe Kaydetme
Bu kitaplık , günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumları (URL'ler, üst bilgiler vb.) hakkındaki temel bilgiler BİlGİ düzeyinde günlüğe kaydedilir.
İstek/yanıt gövdeleri ve kaydedilmemiş üst bilgiler de dahil olmak üzere ayrıntılı HATA AYıKLAMA düzeyi günlüğe kaydetme, istemcide şu bağımsız değişkenle logging_enable
etkinleştirilebilir:
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)
Benzer şekilde, logging_enable
istemci için etkinleştirilmemiş olsa bile tek bir işlem için ayrıntılı günlüğe kaydetmeyi etkinleştirebilir:
service_client.get_service_stats(logging_enable=True)
Ek
Hala sorunlarla mı karşılaşılıyor? Hatalarla karşılaşırsanız veya önerileriniz varsa lütfen projenin Sorunlar bölümünde bir sorun oluşturun.
Sonraki adımlar
Daha fazla örnek kod
Haritalar Arama örneklerimizi (Zaman Uyumsuz Sürüm örnekleri) kullanmaya başlayın.
SDK'nın GitHub deposunda çeşitli Azure Haritalar Arama Python SDK'sı örnekleri sağlanır. Bu örnekler, Haritalar Arama ile çalışırken yaygın olarak karşılaşılan ek senaryolar için örnek kod sağlar
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
Notlar:
--pre
bayrağı isteğe bağlı olarak eklenebilir; için yayın öncesi ve geliştirme sürümlerini eklemektirpip install
. Varsayılan olarak,pip
yalnızca kararlı sürümleri bulur.
Daha ayrıntılı bilgi için bkz . Örneklere Giriş
Diğer belgeler
Azure Haritalar Arama hakkında daha kapsamlı belgeler için docs.microsoft.com Azure Haritalar Arama belgelerine bakın.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .
Azure SDK for Python