你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Maps Python 的路由包客户端库 - 版本 1.0.0b1
此包包含一个 Python SDK for Azure Maps Services for Route。 在此处阅读有关 Azure Maps 服务的详细信息
免责声明
对 Python 2.7 的 Azure SDK Python 包支持已于 2022 年 1 月 1 日结束。 有关详细信息和问题,请参阅 https://github.com/Azure/azure-sdk-for-python/issues/20691
入门
先决条件
- 使用此包需要 Python 3.6 或更高版本。
- Azure 订阅和Azure Maps帐户。
- 已部署的 Maps Services 资源。 可以通过 Azure 门户 或 Azure CLI 创建资源。
如果使用 Azure CLI,请替换 <resource-group-name>
所选的 和 <account-name>
,然后根据需要通过 <sku-name>
参数选择适当的定价层。 有关详细信息,请参阅此页。
az maps account create --resource-group <resource-group-name> --account-name <account-name> --sku <sku-name>
安装包
安装 Azure Maps 服务路由 SDK。
pip install azure-maps-route
创建 MapsRouteClient 并对其进行身份验证
若要创建客户端对象以访问Azure Maps路由 API,需要凭据对象。 Azure Maps路由客户端还支持两种身份验证方法。
1. 使用订阅密钥凭据进行身份验证
可以使用Azure Maps订阅密钥进行身份验证。
创建Azure Maps订阅密钥后,将密钥的值设置为环境变量:AZURE_SUBSCRIPTION_KEY
。
然后将 作为credential
参数传递给 AZURE_SUBSCRIPTION_KEY
AzureKeyCredential 的实例。
from azure.core.credentials import AzureKeyCredential
from azure.maps.route import MapsRouteClient
credential = AzureKeyCredential(os.environ.get("AZURE_SUBSCRIPTION_KEY"))
route_client = MapsRouteClient(
credential=credential,
)
2.使用 Azure Active Directory 凭据进行身份验证
可以使用 Azure 标识库使用 Azure Active Directory (AAD) 令牌凭据进行身份验证。 使用 AAD 进行身份验证需要一些初始设置:
- 安装 azure-identity
- 注册 新的 AAD 应用程序
- 通过将合适的角色分配给服务主体来授予对Azure Maps的访问权限。 请参阅 管理身份验证页。
设置后,可以选择要使用的azure.identity
凭据类型。
例如, 可以使用 DefaultAzureCredential 对客户端进行身份验证:
接下来,将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量:AZURE_CLIENT_ID
、、 AZURE_TENANT_ID
AZURE_CLIENT_SECRET
还需要通过在客户端选项中指定 来指定clientId
要使用的Azure Maps资源。 可以在Azure Maps资源的“身份验证”部分找到Azure Maps资源客户端 ID。 请参阅 文档 ,了解如何查找它。
from azure.maps.route import MapsRouteClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
route_client = MapsRouteClient(
client_id="<Azure Maps Client ID>",
credential=credential
)
关键概念
使用适用于 Python 的 Azure Maps 路由客户端库,可以通过使用专用客户端对象来与每个组件进行交互。
同步客户端
MapsRouteClient
是开发人员使用适用于 Python 的 Azure Maps 路由客户端库的主要客户端。
初始化MapsRouteClient
类后,可以浏览此客户端对象上的方法,以了解可以访问的Azure Maps路由服务的不同功能。
异步客户端
此库包含 Python 3.5+ 上支持的完整异步 API。 若要使用它,必须先安装异步传输,例如 aiohttp。 有关详细信息,请参阅 azure-core 文档 。
不再需要异步客户端和凭据时,应将其关闭。 这些对象是异步上下文管理器并定义异步 close
方法。
示例
以下部分提供了几个代码片段,涵盖一些最常见的Azure Maps路由任务,包括:
请求和获取路线路线
此服务请求返回源和目标之间的路由,如果指定了路点,则通过路点传递。 该路线将考虑以下因素:当前交通状况和所需星期天和一天中的时间的典型道路速度。
from azure.maps.route import MapsRouteClient
route_directions_result = client.get_route_directions(route_points=[LatLon(47.60323, -122.33028), LatLon(53.2, -106)]);
请求和获取路由范围
此服务将根据指定的燃料、能源、时间或距离预算计算一组可从出发点到达的位置。
from azure.maps.route import MapsRouteClient
route_range_result = client.get_route_range(coordinates=LatLon(47.60323, -122.33028), time_budget_in_sec=6000);
获取路由矩阵
如果已成功接受矩阵路由请求,则响应中的 Location 标头包含用于下载请求结果的 URL。
检索上一个路由矩阵请求的结果。 方法返回用于检索结果的轮询器。
from azure.maps.route import MapsRouteClient
route_matrix_result = client.begin_get_route_matrix_result(matrix_id="11111111-2222-3333-4444-555555555555");
获取路线方向批处理
检索上一个路由方向批处理请求的结果。 方法返回用于检索结果的轮询器。
from azure.maps.route import MapsRouteClient
route_directions_batch_poller_result = client.begin_get_route_directions_batch_result(batch_id="11111111-2222-3333-4444-555555555555");
疑难解答
常规
Maps 路由客户端引发 Azure Core 中定义的异常。
此列表可用于引用以捕获引发的异常。 若要获取异常的特定错误代码,请使用 error_code
属性,即 exception.error_code
。
日志记录
此库使用标准 日志记录 库进行日志记录。 有关 HTTP 会话 (URL、标头等) 的基本信息记录在信息级别。
可以使用 参数在客户端 logging_enable
上启用详细的 DEBUG 级别日志记录,包括请求/响应正文和未执行的标头:
import sys
import logging
from azure.maps.route import MapsRouteClient
# Create a logger for the 'azure.maps.route' SDK
logger = logging.getLogger('azure.maps.route')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
其他信息
仍然遇到问题? 如果遇到任何 bug 或有建议,请在项目的“ 问题 ”部分中提交问题。
后续步骤
更多示例代码
SDK 的 GitHub 存储库中提供了几个Azure Maps路由 Python SDK 示例。 这些示例提供了使用地图路线时经常遇到的其他方案的示例代码
set AZURE_SUBSCRIPTION_KEY="<RealSubscriptionKey>"
pip install azure-maps-route --pre
python samples/sample_authentication.py
python sample/sample_get_route_range.py
python samples/sample_get_route_directions.py
python samples/sample_request_route_matrix.py
python samples/async_samples/sample_authentication_async.py
python samples/async_samples/sample_get_route_range_async.py
python samples/async_samples/sample_request_route_matrix_async.py
python samples/async_samples/sample_get_route_directions_async.py
注意:
--pre
可以选择添加标志,它包括 的pip install
预发布版本和开发版本。 默认情况下,pip
仅查找稳定版本。
更多详细信息,请参阅 示例简介
其他文档
有关 Azure Maps Route 的更多文档,请参阅有关 docs.microsoft.com 的 Azure Maps Route 文档。
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com 。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。