你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Maps Python 的呈现包客户端库 - 版本 1.0.0b2

此包包含一个 Python SDK for Azure Maps Services for Render。 在此处阅读有关 Azure Maps 服务的详细信息

源代码 | API 参考文档 | 产品文档

免责声明

对 Python 2.7 的 Azure SDK Python 包支持已于 2022 年 1 月 1 日结束。 有关详细信息和问题,请参阅 https://github.com/Azure/azure-sdk-for-python/issues/20691

入门

先决条件

如果使用 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 Service Render SDK。

pip install azure-maps-render

创建 MapsRenderClient 并对其进行身份验证

若要创建客户端对象以访问Azure Maps呈现 API,需要凭据对象。 Azure Maps Render 客户端还支持两种身份验证方法。

1. 使用订阅密钥凭据进行身份验证

可以使用Azure Maps订阅密钥进行身份验证。 创建Azure Maps订阅密钥后,将密钥的值设置为环境变量:AZURE_SUBSCRIPTION_KEY。 然后将 作为credential参数传递给 AZURE_SUBSCRIPTION_KEYAzureKeyCredential 的实例。

from azure.core.credentials import AzureKeyCredential
from azure.maps.render import MapsRenderClient

credential = AzureKeyCredential(os.environ.get("AZURE_SUBSCRIPTION_KEY"))

render_client = MapsRenderClient(
    credential=credential,
)

2.使用 Azure Active Directory 凭据进行身份验证

可以使用 Azure 标识库使用 Azure Active Directory (AAD) 令牌凭据进行身份验证。 使用 AAD 进行身份验证需要一些初始设置:

安装后,可以选择要使用的azure.identity凭据类型。 例如, 可以使用 DefaultAzureCredential 对客户端进行身份验证:

接下来,将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量:AZURE_CLIENT_ID、、 AZURE_TENANT_IDAZURE_CLIENT_SECRET

还需要通过在客户端选项中指定 来指定clientId要使用的Azure Maps资源。 可以在Azure Maps资源的“身份验证”部分找到Azure Maps资源客户端 ID。 请参阅 文档 ,了解如何查找它。

from azure.maps.render import MapsRenderClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
render_client = MapsRenderClient(
    client_id="<Azure Maps Client ID>",
    credential=credential
)

关键概念

使用适用于 Python 的 Azure Maps Render 客户端库,可以使用专用客户端对象与每个组件进行交互。

同步客户端

MapsRenderClient是开发人员使用适用于 Python 的 Azure Maps Render 客户端库的主客户端。 初始化MapsRenderClient类后,可以浏览此客户端对象上的方法,以了解可以访问的 Azure Maps Render 服务的不同功能。

异步客户端

此库包含 Python 3.5+ 上支持的完整异步 API。 若要使用它,必须先安装异步传输,例如 aiohttp。 有关详细信息,请参阅 azure-core 文档

不再需要异步客户端和凭据时,应将其关闭。 这些对象是异步上下文管理器并定义异步 close 方法。

示例

以下部分提供了几个代码片段,涵盖了一些最常见的Azure Maps呈现任务,包括:

获取地图属性

此请求允许用户请求图块集某一部分的地图版权归属信息。

from azure.maps.render import MapsRenderClient

result = maps_render_client.get_map_attribution(
    tileset_id=TilesetID.MICROSOFT_BASE,
    zoom=6,
    bounds=BoundingBox(
        south=42.982261,
        west=24.980233,
        north=56.526017,
        east=1.355233
    )
)

获取地图磁贴

此请求将返回通常要集成到地图控件或 SDK 中的矢量或光栅格式的地图图块。 可以请求的一些示例磁贴是Azure Maps道路磁贴、实时天气雷达图块。 默认情况下,Azure Maps将矢量图块用于其 Web 地图控件, (Web SDK) 和 Android SDK。

from azure.maps.render import MapsRenderClient

result = maps_render_client.get_map_tile(
    tileset_id=TilesetID.MICROSOFT_BASE,
    z=6,
    x=9,
    y=22,
    tile_size="512"
)

获取地图图块集

此请求将为磁贴集提供元数据。

from azure.maps.render import MapsRenderClient

result = maps_render_client.get_map_tileset(tileset_id=TilesetID.MICROSOFT_BASE)

获取地图静态图像

此请求将提供静态图像服务,使用从 0 到 20 的缩放级别呈现包含地图部分的用户定义矩形图像。 静态图像服务使用从 0 到 20 的缩放级别呈现包含地图部分的用户定义矩形图像。 并将结果以 png 的形式保存到文件中。

from azure.maps.render import MapsRenderClient

result = maps_render_client.get_map_static_image(img_format="png", center=(52.41064,4.84228))
# Save result to file as png
file = open('result.png', 'wb')
file.write(next(result))
file.close()

此请求将为呈现图块服务提供版权信息。

from azure.maps.render import MapsRenderClient

result = maps_render_client.get_copyright_for_world()

疑难解答

常规

Maps 呈现客户端引发 Azure Core 中定义的异常。

此列表可用于引用以捕获引发的异常。 若要获取异常的特定错误代码,请使用 error_code 属性,即 exception.error_code

Logging

此库使用标准 日志记录 库进行日志记录。 有关 HTTP 会话 (URL、标头等) 的基本信息记录在信息级别。

可以使用 参数在客户端 logging_enable 上启用详细的 DEBUG 级别日志记录,包括请求/响应正文和未执行的标头:

import sys
import logging
from azure.maps.render import MapsRenderClient

# Create a logger for the 'azure.maps.render' SDK
logger = logging.getLogger('azure.maps.render')
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-render --pre

python samples/sample_authentication.py
python sample/sample_get_copyright_caption.py
python sample/sample_get_copyright_for_tile.py
python sample/sample_get_copyright_for_world.py
python sample/sample_get_copyright_from_bounding_box.py
python sample/sample_get_map_attribution.py
python sample/sample_get_map_static_image.py
python sample/sample_get_map_tile.py
python sample/sample_get_map_tileset.py

注意: --pre 可以选择添加标志,它包括 的 pip install预发布版本和开发版本。 默认情况下, pip 仅查找稳定版本。

更多详细信息,请参阅 示例简介

其他文档

有关 Azure Maps Render 的更多文档,请参阅有关 docs.microsoft.com 的 Azure Maps Render 文档

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。