栅格金字塔

 

如果上面的部分都已经看过了,那么如何在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. 5、OpenCV Python ROI和泛洪填充

    __author__ = "WSX" import cv2 as cv import numpy as np #泛洪填充 从一个点开始 ,填充周围和他相似的点,直到遇到一个边界 # ...

  2. mysql 字段类型VARCHAR转换成DECIMAL

    在我们写代码的实际业务中,有时候实体类用的是String,数据库中自然是VARCHAR类型,但是如果这个实体的属性值放的是数字类型,你查询的时候又需要对它进行排序.sql怎么写呢. 别担心mysql提 ...

  3. Install AntContrib

    link: http://www.neiland.net/blog/article/how-to-install-ant-contrib/ Step 1: Get ANT-Contrib And In ...

  4. fsockopen函数被禁用的解决方法

    判断fsockopen 是否可用:function_exists('fsockopen');如果没有开启 一.开启fsockopen函数 修改php.ini,将 disable_functions = ...

  5. Gym - 101615 D Rainbow Roads dfs序

    题目传送门 题目大意: 给出一颗树,每条边都有一个颜色,对一个点来说,如果其他所有点到这个点的简单路径,相连的边颜色都不同,这个点即合法点,统计所有的合法点. 思路: 对于一个节点来说 1.如果这个节 ...

  6. Array to List

    List<OisDiscountIndex> discountIndexes = Arrays.asList(new OisDiscountIndex[trades.size()]);

  7. 阿里云 Ubuntu14.04 部署 LAMP

    1.更新软件源 sudo apt-get update 2.安装Apache sudo apt-get install apache2 3.查看Apache是否安装成功 apache2 –v 如下所示 ...

  8. MB Star C5 Functions

    The MB STAR C5 notion and brand combination for hardware and software program components will be the ...

  9. thinkphp控制器的使用

    控制器的使用 2.1url如何调用控制器 以典型的URL为例  http://localhost/shop/index.php/home/index/test /*home/controller/in ...

  10. 20篇关于商品管理系统和uml技术的相关文献

    1.基于UML技术的商品管理系统设计与实现 2.UML技术在行业资源平台系统建模中的应用 3.基于JSP的商品信息管理系统设计与开发 4.基于UML技术的客户关系管理系统实现 5.商品管理系统 6.基 ...