📜  如何在 pyqgis 中添加底图 - Python (1)

📅  最后修改于: 2023-12-03 15:24:19.325000             🧑  作者: Mango

如何在 PyQGIS 中添加底图 - Python

在 PyQGIS 中添加底图是进行 GIS 数据处理和可视化的重要步骤之一。在本文中,我们将讨论如何在 PyQGIS 中添加常见的底图类型,包括 WMS、XYZ 和 WMTS。

添加 WMS 底图

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 底图

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 底图

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 中添加底图,具体选择哪种方法需要根据底图类型和数据源而定。在添加底图时,还需要注意设置坐标系、样式等参数,以确保符合预期的显示效果。