栅格金字塔

 

如果上面的部分都已经看过了,那么如何在ArcMap中更好的渲染一个栅格数据你已经知道了。可仅展示好一个栅格数据是不够的,我们还需要知道如何快速的展示一个栅格数据。

讲金字塔之前,先解释一下重采样的概念。

现如今我们有的影像数据大都是几十M到几十G不止。这样大小的栅格数据在ArcMap中是不能直接显示的。还记得我们前面举的那个例子么,一个606.903 MB的3波段8bit的栅格数据,共有15781列13442行。这个行列数已经是目前我们所使用的屏幕分辨率的10倍以上,也就是说在一个1600x900的显示器上,是根本没有办法把这么多象元全部显示出来的。所以,在显示的时候会进行栅格数据的重采样(Resample),得到能够适应显示器的一个较小行列数的栅格。简单一点说,可以理解为栅格数据的抽稀。

ArcGIS中提供的重采样(Resample)的方法有最邻近(Nearest), 双线性(bilinear),卷积(cubic),和Majority。这四种方式决定了结果栅格的象元值与原始数据象元值之间的关系。具体可以在Layer Properties图层属性的Display页下进行设置。

稍微罗嗦一下这四种方式的具体取值方法,不感兴趣的可以跳过。

最邻近,直接选取距离当前位置最近的象元值。此方法不改变底层像元值,速度最快。

双线性,通过当前位置的四个最邻近像元取值,具体就是根据这四个像元到中心的加权平均距离计算得到。

卷积,类似双线性,但是需要16个最邻近的像元参与运算。

众数,选择窗口范围内出现频率最高的那个像元值。

小结:根据图中的选项列表,我们可以看到,对于离散数据,合适用最邻近与众数,而连续型数据一般适合双线性和卷积。结合上文的取值方法具体来说,最邻近的结果最忠实于原数据,几何变形最小,众数较最邻近结果平滑。双线性和卷积得可以得到平滑的结果,但是都需要消耗系统资源进行重采样的计算。尤其是卷积需要更多的像元参与运算,消耗的时间也会更长。此外,卷积的结果栅格的值域范围可能超出原有数据的值域范围,对于精度要求很高的高程数据,这种重采样方式就不适用来。

现在我们再来说说金字塔。

为啥要使用金字塔捏?

介个主要还是为了提升栅格数据的显示的效率了。试想一下我们要加载一个栅格数据,电脑要进行的操作是将所有的数据全部从磁盘/数据库中取出来,然后经过重采样显示在屏幕上是要经过一段时间的。而对于现今常用的栅格数据来说,这个数据量一般都是几百M甚至几十G的,且不说从磁盘中读取出来需要时间,就是重采样的过程,也是要消耗很长的时间的。所以呢,通过每个比例尺下显示最合适分辨率的栅格,每次读取返回的数据量变小,显示的性能也就提升了。为什么数据量变小了呢,就是说在全图范围下显示较低分辨率的栅格(要小很多很多),而在大比例尺下,由于已经放大到一个较小的区域,所以要返回的数据量也还是很小的。这也就是金字塔文件能够提示栅格数据显示性能的原因了。

金字塔的创建过程其实也就是一个重采样的过程。而金字塔文件则是一组不同分辨率的栅格的组合。但是由于金字塔文件中,栅格的分辨率逐级递减,也就是说第2级金字塔是第1级金字塔分辨率的2倍,这种递减的方式使得Majority这种采样方式就不再适用了,采样方式仅限其他三种。

不是每一个数据都带有金字塔文件。好像MrSID, ECW这类文件,出于他们的压缩算法,每个文件都包括内置的金字塔。而tif,img格式之类的文件都是需要单独创建的。也就是在ArcMap中第一次加载的时候,系统会提示是否要创建金字塔文件?点击是,就会开始创建的过程了。

创建好的金字塔是什么格式的呢?

首先要说的是,不管创建了多少层级的金字塔,都是存在同一个文件里面,这个文件的文件名与原始栅格数据同名。然后需要注意的是,在10.0版本之前,所有ArcGIS支持读写的栅格的金字塔文件都是.rrd为后缀的(reduced resolution dataset),而10.0版本后,借由GDAL的强大功能,除img格式的金字塔仍是rrd之外,其他格式的栅格金字塔更新为.ovr格式(overview)。

对于传统的rrd格式的金字塔,对不同层级的金字塔栅格均不支持压缩,而每一级金字塔的分辨率都是上一级的2倍,所以每一层级的金字塔文件的大小都可以直接计算出来。由于是按照1/4的级数递减,…1/4^n,整个金字塔文件的数据量前三级金字塔占了大部分。具体数值参见下表。

对于新推出的.ovr格式的文件来说,其最大的优点就是提供LZ77或者JPEG的压缩了。如何选择了jpeg压缩,可以进一步选择压缩质量(0-100),默认值仍然是75。但是要注意的是,要使用JPEG压缩的数据格式必须能够支持按照Jpeg规范存储数据。使用压缩后,显而易见的好处就是结果金字塔文件要比不压缩的要小,ovr文件大概是原始未压缩大小的8%。如果金字塔文件也进行了压缩(jpeg压缩),这个比率更可以达到2%。具体数值参见下表。

金字塔的层级到底建多少级最好呢?

这个问题可以说是金字塔所有的问题中被问到的最多的了。大家都知道创建金字塔可以加速栅格数据的显示,那么是不是建的层级数越多越好呢?可以预见到的,金字塔的层级越多,所占的磁盘空间也就越大。在创建金字塔的时候,创建层级越多所消耗的时间也就越长。

更重要的是,不知道你有没有想过,创建10-20级的金字塔是否有意义呢?

既然金字塔的原理是对原始栅格数据的向下重采样,也就是,每增加一级金字塔,分辨率x2,那么建到第16级的时候,分辨率已经达到原始数据的2的16次幂65536倍了,即使原始数据是10cm的高分辨率航空影像,最高一级金字塔的分辨率也有6554m了,是不是一个很夸张的数字?也就是说,如果原始影像是用在1:500的比例尺下的,最上一级金字塔只会在1:3276万的比例尺下才会取到。更何况,在多次重采样的过程中,原始数据的信息也会丢失大半。什么意思呢,就是在最上面一级金字塔上只能看到朦胧模糊的抽象画了。

所以呢,一般建议金字塔创建6-7级就可以满足性能上的需求了。大家也可以注意一下,比如ArcGIS online上的影像底图,或者Google Maps上的影像数据,都是多分辨率的,在大比例尺下使用高分辨率的航空影像或者高精度卫片,而在省级或者国家范围的都是用的低分辨率的卫星影片的。分辨率从20cm到1m, 30m,60m,100m等等…这样的方式既可以保证显示的速率,又可以保证信息的完整性。

说到金字塔的层级,那么我们在创建金字塔的时候,如何设置要创建的层级的数量呢?

在10.0及以后的版本中,不管是在ArcCatalog中,栅格数据上右键创建金字塔(build pyramid),还是通过GP工具进行创建,都可以在界面中直接输入。但是老版本的用户在运行工具时,并没有这个参数,这个时候就需要在环境变量里面进行设置了。见下图。

另外,老版本中对于金字塔这一个参数也仅有present/absent这两种选择,是看不到具体创建了多少层级的。只有在10.0以后的版本中,才能在栅格数据的属性列表中看到具体创建了多少层级的金字塔,见下图:

如何删掉栅格的金字塔呢?

由于在第一次将栅格数据加载到ArcMap时会自动提示金字塔的创建,可能慌忙之中创建的金字塔并不符合自己的要求,就会涉及到将现有金字塔删掉重建的问题了。如果是基于文件方式存储的栅格数据,直接浏览到当前文件夹,删到后缀为rrd或者ovr的文件,就可以快速的删除金字塔文件。但是如果数据入库了,比如file geodatabase,如何删除呢?同样,我们也可以通过运行build pyramid工具。但是这个时候,需要将pyramid level设置成0(老版本在环境变量中设置),运行完工具金字塔文件就被删除掉了。

关于栅格渲染的内容到这里就结束了。金字塔的内容一向是被关注度最高的,如果有问题我没有说清楚,或者还有那些没有提到的,欢迎在下面留言,我看到了会再做修改。

预告一下,再接下来要更新的是Image Analysis Window的内容,涉及栅格数据的显示,山影图,Pan数据的数据融合,NDVI,影像正射纠正等高级一些的内容。如果你感兴趣,就敬请期待哈~ ~\(≧▽≦)/~

栅格那点儿事(四E)的更多相关文章

  1. 栅格那点儿事(四D)

    统计值与空值 在上一篇的内容里反复提到了一个统计值.那这个统计值是怎么来的,具体是干嘛用的呢? 统计值主要就是用于栅格数据的显示和重分类,顾名思义就是一个波段中所有像元值的一个统计信息,最大值,最小值 ...

  2. 栅格那点儿事(四C)

    栅格渲染之拉伸(Stretch) 现在我们知道如何在ArcGIS中渲染栅格数据了,但是还有一个常常会碰到的问题,尤其是在使用老版本的ArcGIS的时候,为啥我加了一个栅格数据进来,啥也看不见,是黑色的 ...

  3. 栅格那点儿事(四B)---多波段栅格数据的显示

    多波段栅格数据的显示 我上面说了这么多,可能有的人会觉得平时也根本用不上.自然,说起影像数据,大家接触到对多的就是最最常见的航片或卫片.对于这种栅格数据呢,大多数的场景下,都只需实现一个效果,就是最接 ...

  4. 栅格那点儿事(四A)---栅格的显示与渲染

    栅格的显示与渲染 通过前两章的学习,应该对栅格这个东西不那么陌生了.在这一个部分,我们来看看如何展示出栅格数据最美丽的地方,在ArcGIS中栅格的显示与渲染.在进入细节之前,先来看看在ArcGIS中都 ...

  5. 栅格那点儿事(二)---细看Raster属性

    细看Raster属性 如果你已经看完了上一章,你已经了解了栅格数据是由一个个像元(Cell)按照行列方式构成的,每一个像元都有自己的像元值,并且这些像元值根据栅格类型的不同,可以代表反射值,或高程值, ...

  6. 栅格那点儿事(一)---Raster是个啥子东西

    Raster是个啥子东西 现如今,不仅是在遥感应用中能看到花花绿绿的影像了,在GIS应用中也能随处看到她们的身影.在各种在线地图中,卫星影像作为底图与矢量的道路层叠加:高程DEM作为高程来源实现地形的 ...

  7. Bootstrap 栅格系统

    1.简介 Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义classe,还有强大的m ...

  8. Bootstrap 栅格系统(转载)

    源地址:http://www.cnblogs.com/linjiqin/p/3559800.html Bootstrap 栅格系统 目录1.简介2.栅格选项3.列偏移4.嵌套列5.列排序 1.简介Bo ...

  9. Bootstrap教程:[4]栅格系统详解

    http://jingyan.baidu.com/article/6f2f55a1852aa1b5b83e6c5a.html 们都知道bootstrap3.0使用了四种栅格选项来形成栅格系统,这四种选 ...

随机推荐

  1. 黑马MySQL数据库学习day01 MySQL8和MySQL5.5暴力破解密码

  2. springloud系列搭建注册中心

    首先搭建父工程: 点击next父工程就搭建完成; pom.xml文件: <?xml version="1.0" encoding="UTF-8"?> ...

  3. clojure with postgres

    主要关注访问pg.不关心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbc http://clojure-doc.org/art ...

  4. sklearn.metrics.roc_curve使用说明

    roc曲线是机器学习中十分重要的一种学习器评估准则,在sklearn中有完整的实现,api函数为sklearn.metrics.roc_curve(params)函数. 官方接口说明:http://s ...

  5. hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心

    题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...

  6. A. Cinema Line

    A. Cinema Line time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  7. hdu2066一个人的旅行(disjkstra)

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  8. lvs 中DR模式负载均衡及keepalived

    lvs DR配置 LVS负载均衡:三种负载均衡模式:DR,TUN(ip隧道),NAT,这里我们介绍DR模式 server1: 首先,配置server机yum源 方便后期实验流畅vim /etc/yum ...

  9. esper(3)-窗口&聚合分组

    一.Insert and Remove Stream 1. select * from com.ebc.updatelistener.User 只输出newEvents,不会输出oldEvents.即 ...

  10. PHP、thinkPHP5.0开发网站文件管理功能(四)下载文件

    public function download($currdir = null){ $file = urldecode($currdir); $file = iconv('UTF-8', " ...