查看: 695|回复: 7

PyQGIS入门「1、瓦片地图加载」

[复制链接]

310

主题

337

帖子

957

积分

高级飞友

Rank: 4

积分
957
飞币
618
注册时间
2017-7-6
发表于 2023-1-16 17:25:26 | 显示全部楼层 |阅读模式
引言
QGIS是一款开源的GIS地理化工具,QGIS可以通过内嵌的Python空间进行脚本编写和二次开发。本期为PyQGIS系列内容的第一期,请大家点击关注期待后续的内容。
本文使用的QGIS版本为 QGIS 3.16.7

PyQGIS入门「1、瓦片地图加载」-1.jpg

一、手动加载瓦片地图(OpenStreetMap)

1、QGIS默认配置了OpenStreetMap,配置方法如下:

PyQGIS入门「1、瓦片地图加载」-2.jpg

2、双击XYZ Tiles中的OpenStreetMap即可加载OpenStreetMap:

PyQGIS入门「1、瓦片地图加载」-3.jpg



二、Python加载瓦片地图(OpenStreetMap)

1、使用的函数:
iface.addRasterLayer(map_uri,map_name, "wms")注:
map_url:图层地址(对应图层的源url)
map_name:图层名称
"wms":通常使用Web 地图服务 (WMS) 协议,默认填写”wms”
2、OpenSreetMap源url分析
1)图层右键查看属性
得到URL为OpenSreetMap的地址,源为当前图层的源url。
URL:https://tile.openstreetmap.org/{z}/{x}/{y}.png源:
crs=EPSG:3857&format&type=xyz&url=https://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png&zmax=19&zmin=0
PyQGIS入门「1、瓦片地图加载」-4.jpg

2)源url构造解读
将源url解码:
crs=EPSG:3857&format&type=xyz&url=https://tile.openstreetmap.org/{z}/{x}/{y}.png&zmax=19&zmin=0可以看到参数url即为OpenSreetMap的地址。也就是说,我们将URL编码后即可得到该图层的源url。
3、实战演示
1)QGIS的Python控制台
QGIS提供了一个集成的python控制台,可以从插件→python控制台菜单中打开。启动QGIS的python控制台时,会自动执行以下语句,因此使用图层加载函数时无需额外导入qgis.core。
from qgis.core import *import qgis.utils2)OpenSreetMap url编码
from urllib import parseurl = 'tile.openstreetmap.org/{z}/{x}/{y}.png'encode_url = parse.quote(url)3)生成瓦片地图图层
map_url ="type=xyz&url=https://" + encode_urlmap_layer =iface.addRasterLayer(map_url, "OpenStreetMap", "wms")4、效果演示

PyQGIS入门「1、瓦片地图加载」-5.jpg



<hr>

如果你觉得文章还不错,请 点赞、分享、关注、转发 ,PyQGIS 将是一期系列内容,下期内容很快更新。

38

主题

834

帖子

1653

积分

金牌飞友

Rank: 6Rank: 6

积分
1653
飞币
815
注册时间
2017-9-10
发表于 2023-1-16 17:40:20 | 显示全部楼层
转发了

42

主题

769

帖子

1532

积分

金牌飞友

Rank: 6Rank: 6

积分
1532
飞币
759
注册时间
2017-8-28
发表于 2023-1-16 17:45:40 | 显示全部楼层
转发了

47

主题

841

帖子

1666

积分

金牌飞友

Rank: 6Rank: 6

积分
1666
飞币
821
注册时间
2017-9-11
发表于 2023-1-16 17:52:52 | 显示全部楼层
666

31

主题

798

帖子

1584

积分

金牌飞友

Rank: 6Rank: 6

积分
1584
飞币
776
注册时间
2017-8-19
发表于 2023-1-16 18:04:22 | 显示全部楼层
转发了

41

主题

822

帖子

1638

积分

金牌飞友

Rank: 6Rank: 6

积分
1638
飞币
799
注册时间
2017-8-24
发表于 2023-1-16 18:13:03 | 显示全部楼层
转发了

41

主题

845

帖子

1671

积分

金牌飞友

Rank: 6Rank: 6

积分
1671
飞币
824
注册时间
2017-8-23
发表于 2023-1-16 18:26:59 | 显示全部楼层
转发了

47

主题

825

帖子

1652

积分

金牌飞友

Rank: 6Rank: 6

积分
1652
飞币
825
注册时间
2017-8-18
发表于 2023-1-16 18:37:15 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表