卫星影像这样呈现在你的眼前

地图显示原理

不知道你有没有思考过一个问题,全球的卫星影像是如此巨大的一张图片它是如何呈现在我们的电脑或手机上的?是通过一种什么样的巧妙方式呢?相信你看完这篇文章,你不仅可以知道其中的原理,还能自己动手搭建一个属于自己的地图服务。

谈及地图服务就不得不提“地图瓦片”。地理数据通常分为两大类,一类是矢量数据(点、线,面),另一类则是栅格数据,也就是我们常说的图片,但无论是矢量数据还是栅格图片,我们要想将海量的数据(例如:1PB)发布为一个高效的地图服务,就不得不对其进行“切片”处理,好比小朋友玩的拼图一样,先将不同分辨率的大图切割成一张张的小图,当我们浏览到某个区域的时候再将该区域的小图拼接起来就行了,不需要显示的区域我们就不需要理会它们。

如上图所示,你所看到的就是一个切片的处理过程,这个过程完成以后形成了一个形似“金字塔”的结构,我们也称这个结构为“瓦片金字塔”。它将一张图一分为四,层层划分下去,直达最高分辨率,这种结构也叫“四叉树”,“金字塔”的每一层的分辨率相差2倍。

对于栅格我们通常把瓦片大小定义为256像素x256像素,实际运用中我们通常会对“金字塔”做一些简单的微调,例如上图定义的金字塔最低分辨率只有一张瓦片,这种情况在发布投影为墨卡托的地图时非常完美,不知道什么是墨卡托投影的朋友你可以直接将其看做投影后是一张正方形的地图就行了,但这种切片方式并不适合发布WGS84投影的影像(尽管OGC WMTS规范这样要求),因为三维GIS引擎加载这样的瓦片不太合理,全球的经度范围是 -180到180度,纬度范围是-90度到90度,纬度是经度的一半,那么意味着如果是用一张瓦片来显示0级,那么这张瓦片就显示不完全,这让三维地球显示很为难啊!就像下面这样。


解决这个问题其实也很简单,把0级一张瓦片调整为0级两张瓦片不就行了,这样一张瓦片的跨度刚好是90度。


我们继续以0级为2张瓦片为基准继续往下,清楚了瓦片的划分规则以后,就需要确定一个在切片过程中非常重要的参数“空间分辨率”,它定义了金字塔的不同层级,我们知道瓦片的大小是256x256像素,同时也知道0级需要显示2张瓦片,那么在WGS84坐标系下,0级的分辨率是 360÷256×2=0.703125,这就是0级瓦片一个像素代表的经纬度距离,基于划片一分为4的划分规则,可以得出如下规律:

级别

横向瓦片

纵向瓦片

分辨率

0

2

1

0.703125

1

4

2

0.3515625

2

8

4

0.17578125

n

...

...

...

当我们需要的电脑或手机需要显示某个区域的影像时,可以将屏幕坐标换算为WGS84地理坐标,这样我们可以知道这个范围内需要显示那些瓦片,当我们的手指在屏幕上缩放地图,实际上相当于在改变分辨率,通过访问不同分辨率范围的瓦片,地图在我们的面前呈现出放大缩小的特性。

发布地图演示

要发布地图并呈现在我们面前,至少需要三部分,分别是:地图数据、地图服务、前端显示框架,这里我们以全国7.2TB 0.6米分辨率作为演示数据,地图服务使用MEServer,前端显示框架使用OpenLayers,要想直接看效果的可以访问 轻量级GIS运用解决方案,离线地图服务搭建,分布式卫星影像下载,数字高程,MapEdges。

数据准备

数据存储使用了自研的存储格式 FTD,感兴趣的可以参考 轻量级地图瓦片存储数据库 FTD,高效且免费的地图瓦片存储数据库。


配置服务


显示地图

展开阅读全文

页面更新:2024-04-02

标签:影像   栅格   瓦片   切片   金字塔   像素   眼前   分辨率   区域   地图   数据   卫星

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top