Context Hub 精选:azure-maps-route Python SDK 实战指南——路线规划、矩阵与批量路由全解析 【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载导读本文是 Context Hub 仓库中 azure-maps-route Python 包指南 的完整展开面向需要在 Python 项目中接入 Azure Maps 路线Routing能力的开发者与编码 Agent。阅读本文后你将掌握azure-maps-route1.0.0b3预览包的安装与版本固定策略、三种认证方式订阅密钥 / SAS Token / Microsoft Entra ID的完整配置、点对点路线规划与等时圈Route Range的核心调用以及矩阵、批量路由与异步客户端的正确用法和常见陷阱。文档元数据速览该文档为 Python 语言变体对应包版本1.0.0b3preview修订号 revision 1更新于 2026-03-12来源为 maintainer标签覆盖azure,azure-maps,route,routing,geospatial,python见 DOC.md 头部 frontmatter。黄金准则先用对包、用对版本、以官方类参考为准本文档所在的 Context Hub 采用先搜索、后取文档、再写代码的工作流详见 README 快速开始 与 get-api-docs 技能。针对azure-maps-route有三条必须遵守的准则仅作为固定的预览版依赖使用该包仍处于 preview 阶段必须显式锁定你验证过的版本号使用正确的 Azure Maps 凭据类型初始化MapsRouteClient订阅密钥用AzureKeyCredential、SAS Token 用AzureSasCredential、Entra 认证用DefaultAzureCredentialclient_id当方法名存在分歧时以当前 Microsoft Learn 类参考为准旧版 PyPI README 中的示例可能调用已被更名的方法如begin_get_route_matrix_result(...)不要照抄。安装与版本固定固定预览版本由于该包只有预览版preview最稳妥的安装方式是精确固定你测试过的版本python -m pip install azure-maps-route1.0.0b3如果希望安装同一发布线最新的预览构建而不是精确固定python -m pip install --pre azure-maps-route常用配套包python -m pip install azure-identity python -m pip install azure-mgmt-maps python -m pip install aiohttp它们的用途分别是azure-identity提供 Microsoft Entra ID工作负载身份或托管身份认证所需的凭据实现如DefaultAzureCredentialazure-mgmt-mapsAzure Maps 管理面 SDK用于以编程方式生成 SAS Tokenaccounts.list_sas(...)其完整用法可参考仓库中的 mgmt-maps Python 指南aiohttp作为异步传输层支撑azure.maps.route.aio命名空间下的异步客户端。提示azure-mgmt-maps属于管理面management plane不要用它做路线规划、搜索或渲染等数据面data plane请求——这些应交给azure-maps-route、azure-maps-search、azure-maps-render等数据面包见 mgmt-maps 指南的 Golden Rule。服务端前置条件在写任何代码之前需要确保以下三项已就绪一个 Azure 订阅Azure subscription一个 Azure Maps 账户 / 资源Maps account/resource一条受支持的认证路径订阅密钥subscription key、SAS Token 或 Microsoft Entra ID。使用 Azure CLI 创建 Maps 账户Gen2 类型、G2 SKUaz maps account create \ --kind Gen2 \ --account-name maps-account \ --resource-group resource-group \ --sku G2创建账户后可从 Azure 门户的 Maps 账户身份验证设置中获取订阅密钥、SAS 配置或 Entra 相关的客户端 ID 信息。若要进一步自动化管理账户如列出密钥、轮换密钥、生成 SAS可参考仓库中的 mgmt-maps 指南。认证与客户端初始化MapsRouteClient的构造以凭据为先常见的公共云场景无需显式指定 endpoint认证配置是主要输入。方式一订阅密钥Subscription Keyexport AZURE_SUBSCRIPTION_KEY...import os from azure.core.credentials import AzureKeyCredential from azure.maps.route import MapsRouteClient client MapsRouteClient( credentialAzureKeyCredential(os.environ[AZURE_SUBSCRIPTION_KEY]) )这是最直接的认证方式适合脚本与内部服务快速起步。注意统一使用AZURE_SUBSCRIPTION_KEY这一环境变量名部分旧示例混用SUBSCRIPTION_KEY容易造成混乱。方式二SAS Token1.0.0b3新增了 SAS 认证支持。SAS Token 需要先用管理面 SDKazure-mgmt-maps生成再通过AzureSasCredential传入export AZURE_MAPS_SAS_TOKEN...import os from azure.core.credentials import AzureSasCredential from azure.maps.route import MapsRouteClient client MapsRouteClient( credentialAzureSasCredential(os.environ[AZURE_MAPS_SAS_TOKEN]) )SAS Token 的生成属于管理面操作使用AzureMapsManagementClient.accounts.list_sas(...)并传入AccountSasParameterssigning_key、principal_id、max_rate_per_second、start、expiry、regions前置条件是 Maps 账户已附加用户托管标识、标识与账户同区域、且账户未禁用本地认证。生成后返回的account_sas_token正是数据面客户端需要的AzureSasCredential输入完整示例见 mgmt-maps 指南的 SAS 小节。方式三Microsoft Entra ID令牌认证基于令牌的认证除了常规的 Azure 身份环境变量外还需要Azure Maps 账户的 client IDexport AZURE_CLIENT_IDapp-client-id export AZURE_CLIENT_SECRETapp-client-secret export AZURE_TENANT_IDtenant-id export MAPS_CLIENT_IDazure-maps-account-client-idimport os from azure.identity import DefaultAzureCredential from azure.maps.route import MapsRouteClient client MapsRouteClient( credentialDefaultAzureCredential(), client_idos.environ[MAPS_CLIENT_ID], )两个必须注意的点MAPS_CLIENT_ID是 Azure Maps 账户的 client ID不是 Entra 应用注册的 client ID。前者可在 Azure 门户 Maps 账户的认证设置中获取Microsoft Learn 的 Azure Maps Python SDK 综合指南统一使用MAPS_CLIENT_ID这一命名即使旧示例使用了其他名称也请在项目中保持一致避免因环境变量命名混用导致认证失败。遗漏MAPS_CLIENT_ID是 Entra 认证最典型的配置错误令牌获取可能成功但后续服务请求依然失败同类提醒也出现在仓库中 maps-search 指南 与 maps-render 指南。核心用法获取路线方向Get Route Directionsget_route_directions()是点对点路线规划的主同步方法。当前 SDK 的接口将路线点接收为(latitude, longitude)元组列表import os from azure.core.credentials import AzureKeyCredential from azure.maps.route import MapsRouteClient client MapsRouteClient( credentialAzureKeyCredential(os.environ[AZURE_SUBSCRIPTION_KEY]) ) result client.get_route_directions( route_points[ (47.60323, -122.33028), (47.62050, -122.34930), ] ) route result.routes[0] print(route.summary.length_in_meters) print(route.summary.travel_time_in_seconds)返回结果按路线routes组织第一条路线routes[0]包含摘要信息summary其中length_in_meters为路线总长度米、travel_time_in_seconds为预计行驶时间秒。获取路线可达范围Get Route Range当需要从起点出发的可达区域等时圈 / isochrone 风格时使用get_route_range()import os from azure.core.credentials import AzureKeyCredential from azure.maps.route import MapsRouteClient client MapsRouteClient( credentialAzureKeyCredential(os.environ[AZURE_SUBSCRIPTION_KEY]) ) result client.get_route_range( coordinates(47.60323, -122.33028), time_budget_in_sec1800, ) print(result.reachable_range.center.latitude) print(result.reachable_range.center.longitude)time_budget_in_sec指定时间预算秒例如 1800 秒30 分钟返回的reachable_range.center提供可达范围中心点的经纬度。矩阵与批量操作路线矩阵Route Matrix当需要跨大量起点-终点组合的行驶时间或距离摘要而不是逐条转向turn-by-turn路线时使用矩阵 API。当前类参考中的相关方法同步矩阵request_route_matrix_sync(...)异步矩阵提交begin_request_route_matrix(...)按 ID 异步获取矩阵结果begin_get_route_matrix(...)重要约束同步矩阵上限100 个单元格cells异步矩阵上限700 个单元格异步矩阵结果保留14 天自1.0.0b2起矩阵请求必须使用RouteMatrixQuery对象而不是普通dict路线方向批量Route Directions Batch当需要在一次请求中执行大量方向查询时使用批量方向 API。相关方法同步批量request_route_directions_batch_sync(...)异步批量提交begin_request_route_directions_batch(...)批量结果获取流程begin_get_route_directions_batch(...)重要约束同步批量上限100 个查询异步批量上限700 个查询异步批量结果保留14 天设计取舍提示同步接口适合规模较小、可一次性完成的请求异步提交-获取begin/retrieve流程适合超过同步上限或需要长时间运行的批量任务。异步结果均有 14 天保留期逾期需要重新提交。异步用法先安装异步传输层如aiohttp再使用aio命名空间下的客户端。异步客户端推荐用async with上下文管理器确保正确释放资源import asyncio import os from azure.core.credentials import AzureKeyCredential from azure.maps.route.aio import MapsRouteClient async def main() - None: async with MapsRouteClient( credentialAzureKeyCredential(os.environ[AZURE_SUBSCRIPTION_KEY]) ) as client: result await client.get_route_directions( route_points[ (47.60323, -122.33028), (47.62050, -122.34930), ] ) print(result.routes[0].summary.length_in_meters) asyncio.run(main())错误处理、日志与调试Azure Maps Route 抛出的异常来自 Azure Core例如HttpResponseError。除异常对象本身外还可读取error_code属性以获取服务端错误码import logging import os import sys from azure.core.credentials import AzureKeyCredential from azure.core.exceptions import HttpResponseError from azure.maps.route import MapsRouteClient logger logging.getLogger(azure.maps.route) logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler(sys.stdout)) client MapsRouteClient( credentialAzureKeyCredential(os.environ[AZURE_SUBSCRIPTION_KEY]), logging_enableTrue, ) try: client.get_route_directions(route_points[(47.60323, -122.33028), (47.62050, -122.34930)]) except HttpResponseError as exc: print(exc) print(getattr(exc, error_code, None))注意开启logging_enableTrue后Azure SDK 日志可能包含请求细节如 URL、头信息请仅在调试时启用不要在默认生产代码中开启。此注意事项同样适用于 maps-search 与 maps-render 客户端。常见陷阱Common Pitfalls汇总文档中列出的高频踩坑点该包仍为预览版务必固定1.0.0b3或你实际验证过的具体预览版本避免意外升级引入破坏性变更旧示例方法名已失效旧版 PyPI README 示例仍使用begin_get_route_matrix_result(...)与begin_get_route_directions_batch_result(...)而当前 Microsoft Learn 类参考记录的是begin_get_route_matrix(...)与begin_get_route_directions_batch(...)两者不一致时以类参考为准Entra 认证必须额外提供 Azure Maps 账户 client ID仅有AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID不够还需要MAPS_CLIENT_ID坐标顺序陷阱当前 SDK 使用 Route v1 风格的元组输入(latitude, longitude)。不要把这些元组直接照搬到较新的 Azure Maps Routing2025-01-01REST 示例中——后者使用 GeoJSON 风格的[longitude, latitude]顺序。同类坐标顺序问题也出现在 Search 包的反向地理编码与多边形调用中见 maps-search 指南务必按包确认顺序矩阵参数类型变更针对1.0.0b1编写的矩阵代码如果仍传入普通字典plain dict在1.0.0b2上会失败必须改用RouteMatrixQuery异步结果过期异步矩阵或异步批量流程的结果在 14 天后过期需重新提交请求。版本敏感说明1.0.0b3新增基于 SAS 的认证支持AzureSasCredential路径1.0.0b2矩阵输入改为RouteMatrixQuery并移除了 Python 3.6 支持Python SDK 文档仍发布在viewazure-python-preview视图下迁移提醒Azure Maps 现已提供从 Route v1.0 到 Routing2025-01-01的官方迁移指南。新版 REST 接口改变了请求形态与行为包括将旧的GET路线方向与GET路线范围模式替换为基于POST的流程。如果需要新版 Routing 服务的特性请对照 REST 迁移指南验证而不要假定当前这个 SDK 预览包已覆盖它们。在 Context Hub 中使用本文档本文档作为 Context Hub 内容仓库中的一条 Python 变体文档content/azure/docs/maps-route/python/DOC.md可通过 CLI 按需获取。其 frontmatter 遵循 内容指南 的规范含name、description、metadata.languages、metadata.versions、metadata.revision、metadata.updated-on、metadata.source、metadata.tags字段。日常使用方式chub search azure maps route # 检索相关文档 chub get azure/maps-route --lang py # 获取 Python 语言变体编码 Agent 在编写 Azure Maps 路线相关代码前应优先通过chub get拉取本文档而不是依赖训练数据中的记忆参见 get-api-docs 技能若在实践中发现文档未覆盖的坑点可用chub annotate记录本地备注用chub feedback向维护者反馈形成取文档-写代码-沉淀经验的闭环。关联阅读仓库中与本主题强相关的其他 Azure Maps 文档可组合使用以覆盖完整的地图数据面与管理面能力azure-maps-search Python 指南地理编码、反向地理编码、批量搜索与多边形边界azure-maps-render Python 指南地图瓦片、静态地图、版权信息azure-mgmt-maps Python 指南Maps 账户的创建、密钥管理与 SAS Token 生成1.0.0b3SAS 认证的前置依赖Context Hub 内容指南了解文档 frontmatter 与版本维护规范Context Hub CLI 参考chub get、chub annotate、chub feedback的完整用法。说明本文所有方法名、参数、限制数值如同步 100 / 异步 700 单元格、14 天保留期均直接继承自 maps-route Python DOC.md 原文并以该文档为准涉及 SAS 生成流程的细节交叉参考了仓库内 mgmt-maps 指南 的对应实现说明。安装与运行以azure-maps-route1.0.0b3预览版为适用前提。赞分享【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载相关推荐Context Hub 实战指南使用 azure-mgmt-mapsAzure Maps Management SDK for Python 2.1.0管理 Maps 资源Context Hub 实战指南使用 azure mgmt mapsAzure Maps Management SDK for Python 2.1.0管Context Hub 精选Azure Machine Learning Python SDKazure-ai-ml 1.31.0完整实战指南Context Hub 精选Azure Machine Learning Python SDKazure ai ml 1.31.0完整实战指南 导读 本文Context Hub 精选文档Azure Speech SDK for Pythonazure-cognitiveservices-speech完整实战指南Context Hub 精选文档Azure Speech SDK for Pythonazure cognitiveservices speech完整实战上一篇免费窗口大小调整工具3步强制修改任何窗口尺寸下一篇免费AI象棋分析工具完整指南从读懂盘面到自动走棋一次讲透创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考