概述
在“免费领取的DAT离线卫星影像如何使用? ”一文中我们讲到了,如果是一个省以内的小范围,则可以通过微图的DAT解压功能将其解压为瓦片后进行发布,但如果是一个省以上或全国乃至全球的DAT离线数据,则需要通过水经注地图发布服务中间件(WeServer)进行发布才是最方便的!
但有用户对“什么是地图发布服务中间件?”以及“中间件有什么作用?”不是很了解,本文将通过举例的方式让大家对该软件有一个初步的认识。
初识地图发布服务中间件
简单地讲,如果我们把每一张地图瓦片比作是一本书的话,你可以简单地将地图发布服务中间件(WeServer)理解为是一个图书管理员。
这样一来,我们就可以把地图显示客户端比作借阅者,而服务器中的数据存储硬盘就相当于是存储了大量书籍的图书馆。
当借阅者向图书管理员说明要借阅书籍的名称时,管理员会根据书名快速找出该本书给借阅者,只不过这里是COPY一份给借阅者,这本书的原件仍然是完好存在的。
现在,是不是对中间件的作用有一个大体的认识了?
我们回头再说回地图数据本身,地图显示客户端(如MapBOX、OpenLayers、ArcMap或QGIS等)根据当前需要显示的范围,就可以计算出需要请求的地图瓦片URL地址并向服务器中正在运行的中间件发送数据请求,中间件会根据请求的瓦片编号快速将数据返回到客户端。
也就是说,地图发布服务中间件(WeServer)的主要功能,就是根据客户端请求的瓦片编号,快速从海量数据中提取对应的地图瓦片并返回。
为什么中间件可以快速检索数据
为什么我们一直以来都在强调,当数据范围比较小的时候可以用不中间件,但当数据范围在一个省以上或全国乃至全球的时候就强烈建议用中间件呢?
想象一下你现在就是一个图书管理员,如果当图书馆的所有书都散列地放在地上,如果需要让你根据编号找到一本书,当数量不多的时候是不是会非常快?
但当图书多到一定量极的时候,虽然所有书都是按编号有序存放的,但找起来是不是也会很伤脑筋?
因此,我们应该把书放在一个个书架上,每一个书架也要有一个编号,而图书管理员应该是一个智能机器人,它可以根据编号快速计算出图书在某个书架上对应的行列位置,并将其快速提取出来。
现在回到地图发布服务中间件(WeServer)的讨论上来,大家无论是从我们水经微图软件中下载的卫星影像数据,还是我们在百度网盘为大家分享的免费影像数据都由多个的DAT文件组成,这每一个DAT文件就相当于是一个书架。
由于每一个DAT文件是有编号的,而DAT文件又有一个与之对应的IDX索引文件,如下图所示。
DAT文件
当地图发布服务中间件(WeServer)收到地图瓦片请求时,会根据瓦片编号首先计算出它属于哪一个DAT文件中,再根据IDX文件就可以计算出地图数据在DAT文件中的具体位置,整个过程不需要第三方数据库的支持,就可以通过算法干净纯粹地从海量数据中定位取出需要的地图瓦片数据。
归根到底,地图发布服务中间件(WeServer)之所以能快速地从100TB级海量数据中检索出每一张地图瓦片,除了它本身有智能机器人一样的计算能力和速度外,最重要的还是每一张地图瓦片在DAT文件中科学合理的存储有莫大关系。
DAT文件的存储方式相较于散列的瓦片存储,还有一个好处就是方便海量数据的拷贝复制,这给地图部署节省了大量的时间。
如果你无法想象它们之间的速度差距,你就想一想如果是搬一个图书馆的书的话,是一本一本地搬更快还是一个书架一个书架的搬更快呢?
DAT文件除了COPY速度快以外,存储还非常紧凑,比散列的瓦片存储更节省空间,也比MBTiles离线包小得多。
相同范围的卫星影像数据,存储为MBTiles文件后几乎是DAT文件的两倍,具体对比请参阅“免费DAT影像如何导出为MBTiles离线包 ”一文中,将全球前10级卫星影像导出为MBTiles离线包之后与DAT文件的对比。
总结
本文对什么是地图发布服务中间件(WeServer)进行了讲解说明,文中所举的例子也许有些不太切合实际的地方,这些细节不在讨论范围内,我们目的旨在通过举例让大家对地图发布服务中间件(WeServer)有一个相对直观的认识和了解!
最后,地图发布服务中间件(WeServer)的下载安装方法,请参阅“《地图发布服务中间件》下载安装教程 ”一文中的具体说明,