你当前正在访问 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 服务的详细信息
免责声明
对 Python 2.7 的 Azure SDK Python 包支持已于 2022 年 1 月 1 日结束。 有关详细信息和问题,请参阅 https://github.com/Azure/azure-sdk-for-python/issues/20691
入门
先决条件
- 使用此包需要 Python 3.7 或更高版本。
- 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 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_KEY
AzureKeyCredential 的实例。
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
- 注册 新的 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.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 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。