使用python控制台从WMS(tile downloader)准备脱机映射

本研究解释了如何通过在Python控制台中的脚本的帮助下下载图块,从WMS/WFS或任何加载在QGIS地图视图中的地图中准备离线地图。skript还生成所有瓷砖的马赛克以供进一步使用。

通过Web映射服务(WMS)访问栅格/矢量地图是非常常见和高效的。它具有安全、集中和灵活的地图样式等优点。例如谷歌地图、雅虎、必应、modis、陆地卫星、NASA、NRSC(印度)发布的地图。WMS的缺点/局限性在于它通过互联网或内部网工作。在调查过程中,尤其是在实地调查中,可能无法始终获得互联网连接。与任何离线图像格式(如geotiff、jpg、img等)相比,WMS的工作速度也很慢。

QGIS的使用

QGIS提供了一个工具来连接/访问任何WMS服务。WMS连接基于简单的URL,一旦建立连接,可以在QGIS地图视图上看到地图。如果我们将qgis mapview中可见范围的地图保存为JPG(文件>另存为图像),它将创建具有特定区域地理坐标信息的世界文件,例如sample.jpg是地图,sample.jpgw具有坐标。这意味着下载的图像是地理参考的。我们可以手动下载网格格式的图块,稍后离线使用。如果区域很小或低分辨率图像很好,可以手动下载。

QGIS with WMS tiles

带WMS瓷砖的QGIS

Python控制台

在“python控制台”中编写了一个简短的脚本,并在qgis官方网站上的pyqgis开发人员手册中提供了帮助。脚本基本上由以下4个组件组成:

  1. 第一块瓷砖的X、Y坐标(左上和右下)

  2. 要下载的瓷砖尺寸(例如0.001 x 0.001度)

  3. 要下载的瓷砖数量(根据地图的全部范围和瓷砖大小计算)

  4. 用于存储输出分片/文件的输出目录

该脚本首先在两个简单的for循环中工作,该循环定义了QGIS地图视图中地图的范围,并运行行/列。一旦设置了地图范围,地图就会加载到QGIS中。在用户定义的目录中将map保存为jpg之前,引入了3秒的延迟(取决于Internet连接)。一旦执行脚本,目录中创建的所有图块都可以直接加载到qgis中,或者通过栅格>杂项>合并或构建虚拟栅格(目录)来准备单个马赛克。这两种工具都生成马赛克,但在合并中的基本区别是创建独立于图块的图像,而虚拟栅格在所有单个图块中生成链接(图块是必需的)。

Python script and directory where tiles are stored

存储块的python脚本和目录

该方法的局限性是,服务器端的映射更改不会反映在脱机(下载的映射)中。在这种情况下,用户必须重复该过程并生成新的脱机映射。第二个限制是离线创建的地图将是图像格式,不能用于专题地图或图像分类。通过一些额外的努力,一些土地利用地图可以转换成矢量,但有些数据会丢失。

范围

生成的马赛克是纯图像,即使是从专题地图(7-8色)下载的。使用诸如重新分类之类的高级工具,可以将此栅格的层/带堆叠转换为多边形矢量。WMS有几个请求,如getcapabilities、getmap、getfeatureinfo等。使用getgeatureinfo属性可以检索每个多边形的信息。脚本可以转换为插件,这样任何不了解脚本的人都可以使用脚本。

结论

以上经验表明,QGIS可以在任何高级级别上使用。有了基本的编程技能,人们可以编写一个小脚本或插件来提高工作质量和节省时间。在QGIS中,访问全球开发的插件库是最好的QGIS。Pyqgis开发人员的食谱是编写脚本的一个很好的资源,现在借助gdal工具,栅格数据处理非常容易。

作者

本文由普纳(印度)的Prashant Kadgi于2014年5月撰写,目前担任GIS应用咨询服务顾问。自2009年以来,他在印度和世界不同地区的NRM、林业、电子政务、软件开发项目中使用GIS&RS。