在做专题图的时候,经常需要使用一些背景地图(通常是地形地貌数据),而这些背景数据准备起来还特别麻烦:
1. 多数数据有可能涉密,导致很难获取(即使是之前的1:400万地形图,现在网上公开的数据也找不到了!)
2. 数据获取后在配色、标注等方面还需要仔细考虑,也是比较难的。
因此就想到能否利用网上这些公开的地图商的数据作为背景数据,比如google maps、openstreetmap等。
首先想到的WMS服务,QGIS自身支持WMS服务,网上搜索了一些对应的WMS服务提供商,发现最大的问题:速度太慢,而且现在可用的WMS服务也很少。无意中看到TMS服务(tile map server):
发现gdal支持这个,利用一个xml文件就可以将其封装为一个图像文件,可以直接在QGIS中打开,最重要的是速度很快!
openstreetmap的封装xml,参考OSM Help:
<GDAL_WMS> <Service name="TMS"> <ServerUrl>http://tile.openstreetmap.org/${z}/${x}/${y}.png</ServerUrl> </Service> <DataWindow> <UpperLeftX>-20037508.34</UpperLeftX> <UpperLeftY>20037508.34</UpperLeftY> <LowerRightX>20037508.34</LowerRightX> <LowerRightY>-20037508.34</LowerRightY> <TileLevel>18</TileLevel> <TileCountX>1</TileCountX> <TileCountY>1</TileCountY> <YOrigin>top</YOrigin> </DataWindow> <Projection>EPSG:900913</Projection> <BlockSizeX>256</BlockSizeX> <BlockSizeY>256</BlockSizeY> <BandsCount>3</BandsCount> <Cache /> </GDAL_WMS>
google maps的tms封装文件:
<GDAL_WMS> <!-- Data is subject to term of use detailed at http://code.google.com/intl/nl/apis/maps/terms.html and http://www.google.com/intl/en_ALL/help/terms_maps.html --> <Service name="TMS"> <ServerUrl>http://mt.google.com/vt/lyrs=m&x=${x}&y=${y}&z=${z}</ServerUrl> <!-- Map --> <!-- <ServerUrl>http://mt.google.com/vt/lyrs=s&x=${x}&y=${y}&z=${z}</ServerUrl> --> <!-- Satellite --> <!-- <ServerUrl>http://mt.google.com/vt/lyrs=y&x=${x}&y=${y}&z=${z}</ServerUrl> --> <!-- Hybrid --> <!-- <ServerUrl>http://mt.google.com/vt/lyrs=t&x=${x}&y=${y}&z=${z}</ServerUrl> --> <!-- Terrain --> <!-- <ServerUrl>http://mt.google.com/vt/lyrs=p&x=${x}&y=${y}&z=${z}</ServerUrl> --> <!-- Terrain, Streets and Water --> </Service> <DataWindow> <UpperLeftX>-20037508.34</UpperLeftX> <UpperLeftY>20037508.34</UpperLeftY> <LowerRightX>20037508.34</LowerRightX> <LowerRightY>-20037508.34</LowerRightY> <TileLevel>20</TileLevel> <TileCountX>1</TileCountX> <TileCountY>1</TileCountY> <YOrigin>top</YOrigin> </DataWindow> <Projection>EPSG:900913</Projection> <BlockSizeX>256</BlockSizeX> <BlockSizeY>256</BlockSizeY> <BandsCount>3</BandsCount> <MaxConnections>5</MaxConnections> <Cache/> </GDAL_WMS>
同时,在使用TMS服务,如同此blog所言,也要注意其存在如下问题:
1. TMS是分辨率固定的图片文件组合起来的瓦片式图像,因此其图像不能无极缩放(在QGIS感觉是无极缩放,其实不是)
2. Google Maps & OSM 的TMS服务,其投影方式是固定的,投影代码是EPSG:900913(Mercator)
发表回复