📅  最后修改于: 2023-12-03 15:24:19.325000             🧑  作者: Mango
在 PyQGIS 中添加底图是进行 GIS 数据处理和可视化的重要步骤之一。在本文中,我们将讨论如何在 PyQGIS 中添加常见的底图类型,包括 WMS、XYZ 和 WMTS。
WMS(Web Map Service)是一种基于 HTTP 的地图服务,可以通过 URL 获取地图图片。要添加 WMS 底图,在 PyQGIS 中使用 QgsRasterLayer
类并指定 URL,如下所示:
url = 'http://mapserver.com/wms'
layer_name = 'layer_name'
params = {
'service': 'WMS',
'version': '1.3.0',
'request': 'GetMap',
'layers': layer_name,
'styles': '',
'crs': 'EPSG:3857',
'format': 'image/png',
'transparent': True
}
layers = QgsRasterLayer('{}?{}'.format(url, urlencode(params)), layer_name, 'wms')
QgsProject.instance().addMapLayer(layers)
url
:WMS 服务的 URL。layer_name
:要添加的图层名称。params
:WMS 请求参数,包括服务类型、请求版本、请求类型、图层名称、样式、坐标系、返回格式和透明度等。QgsRasterLayer
:QGIS 中用于加载栅格图层的类。XYZ 底图通常是一组由行列号组成的 URL,可以方便地通过 X 和 Y 坐标访问。要添加 XYZ 底图,可以使用与 WMS 类似的方法,如下所示:
url = 'http://tile.openstreetmap.org/{}/{}/{}.png'
layer_name = 'OpenStreetMap'
layers = QgsRasterLayer(url, layer_name, 'wms')
QgsProject.instance().addMapLayer(layers)
url
:XYZ 底图的 URL,包含行列号模板。layer_name
:要添加的图层名称。QgsRasterLayer
:QGIS 中用于加载栅格图层的类。WMTS(Web Map Tile Service)是一种类似于 XYZ 的地图服务,可以使用坐标范围和缩放级别来访问。WMTS 底图可以通过 QgsRasterLayer
类加载,如下所示:
url = 'http://wmts.example.com'
layer_name = 'layer_name'
params = {
'service': 'WMTS',
'version': '1.0.0',
'request': 'GetTile',
'layer': layer_name,
'style': 'default',
'format': 'image/png',
'tilematrixset': 'EPSG:3857',
'tilematrix': '{z}',
'tilerow': '{y}',
'tilecol': '{x}'
}
layers = QgsRasterLayer('{}?{}'.format(url, urlencode(params)), layer_name, 'wms')
QgsProject.instance().addMapLayer(layers)
url
:WMTS 服务的 URL。layer_name
:要添加的图层名称。params
:WMTS 请求参数,包括服务类型、请求版本、请求类型、图层名称、样式、返回格式和瓦片坐标等。QgsRasterLayer
:QGIS 中用于加载栅格图层的类。以上三种方法都可以在 PyQGIS 中添加底图,具体选择哪种方法需要根据底图类型和数据源而定。在添加底图时,还需要注意设置坐标系、样式等参数,以确保符合预期的显示效果。