当前位置: 首页 > news >正文

海量空间数据库实施策略-栅格数据 7

· 金字塔

在对前面一些因素的分析中,我们始终采用了未创建金字塔的存储数据进行讨论。这并非是对金字塔可以提高浏览速度作用的故意无视,而是我们希望排除掉金字塔的影响来获取我们需要的单个角度的信息。

现在,让我们来看一下金字塔的原理。金字塔通过在不同的比例尺下预先进行重采样并保存结果,避免了原始的栅格数据在小比例尺下实时重采样的过程,因此,此举能大大提高小比例尺下栅格数据的浏览效率。

image

图 8 栅格金字塔的原理

但是,从金字塔的原理可以知道,在与数据实际分辨率相近的比例尺下,金字塔并不能起任何加速显示的过程,因此,前面的章节中分析了没有金字塔情况下的各种现象,在这种情况下完全符合。同时,在创建了金字塔的比例尺下,前面的讨论也并非没有意义,它们同样也可以对金字塔本身的效率提供参考的价值。

· 分幅

一个大的栅格数据,到底是用单幅存储比较好呢,还是存为多幅较小的数据较好?换句话说,有时候拿到很多分幅的栅格数据,是不是有必要将它们都拼接起来?这里也进行一个比较。

比如用上面使用过的4.72G的大TIFF数据,分割成16幅同样以TIFF格式存储的栅格文件,分别进行全图预览和小范围预览的效率比较:

压缩格式/压缩比

全图预览耗时

某小范围预览耗时

单幅

26.7秒

0.08秒

多幅(16幅)

17.7秒

0.08秒

可见,适度的分幅有助于提高大范围数据访问的效率。不过,如果创建了金字塔,两者的效率应该区别不大。另外,在实际情况中,本身分幅的影像应该会有压盖和色差的问题,通过拼接也可能减小存储的空间和提高访问效率。

· 并发访问

对于使用文件形式存储的栅格,或许有人会对其在并发访问环境下的能力有所怀疑。在这里,分别使用文件、File Geodatabase和ArcSDE存储相同的数据,在ArcGIS Server上发布服务运行 20个实例,然后比较他们在50个用户并发访问下的性能:

压缩格式/压缩比

单用户访问耗时

并发访问响应时间

文件(TIFF)

2.2秒

0.76秒

托管FileGDB(JPEG/75%)

20.3秒

2.13秒

ArcSDE(JPEG/75%)

20.3秒

1.78秒

可见,使用文件存储的栅格数据在并发访问的环境下不会有任何问题,其性能和单用户访问时一样都是比较好的。同时,虽然单用户访问下File Geodatabase和ArcSDE的性能差不多,但是在多用户并发情况下ArcSDE的性能会更好一些,这应该和数据库的缓存有关。

· 其它因素

在考虑栅格数据如何存储的时候,除了一些性能上的考虑,还必须考虑许多其它方面的因素。

比如,虽然在一些情况下不将栅格数据入库的效率可能较好,但是有些场合下可能还必须使用ArcSDE存储,因为ArcSDE可以提供安全、多用户访问、数据共享等方面的特性。

另外,比如Mosaic Dataset有时候性能不一定有预先镶嵌的Raster Dataset好,但是使用它可以保留所有的原始影像信息、同时使用各种类型多时相多分辨率的数据、方便地使用栅格计算函数、可以直接发布为Image Service,这些功能性的优势在很多场合下比单纯的访问性能好一点要重要得多。

image

图 9 使用Mosaic Dataset的栅格函数

相关文章:

  • HIVE中内连接和左半连接不一致问题
  • 海量空间数据库实施策略-栅格数据 8
  • Entity Framework 并发处理(转)
  • 总结 — 各种数据访问方式
  • 《海量空间数据库实施策略-栅格数据》PDF版本
  • WhyEngine游戏合集2014贺岁版
  • 基于属性的编辑器框架
  • Windows Phone 7 SDK 正式版本RTW
  • 解读Linux命令格式(转)
  • 通过手机摄像头实现动作追踪一----单帧的识别
  • PL/SQL Developer 9.x 注册码
  • 公司到底是怎么看我们的——Leo网上答疑47
  • Ext 2.2在IE 9运行居然说Ext-all.j运行错误,晕死了
  • 解决局域网文件共享设置
  • Socket 编程IO Multiplexing
  • 0基础学习移动端适配
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • VuePress 静态网站生成
  • vue总结
  • 不上全站https的网站你们就等着被恶心死吧
  • 机器学习中为什么要做归一化normalization
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 什么软件可以剪辑音乐?
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一道闭包题引发的思考
  • 仓管云——企业云erp功能有哪些?
  • 我们雇佣了一只大猴子...
  • #100天计划# 2013年9月29日
  • #if和#ifdef区别
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (分类)KNN算法- 参数调优
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)Android布局类型(线性布局LinearLayout)
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)基于IDEA的JAVA基础10
  • (原創) 未来三学期想要修的课 (日記)
  • .Family_物联网
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [20171106]配置客户端连接注意.txt
  • [20181219]script使用小技巧.txt
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BUUCTF 2018]Online Tool(特详解)
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [LeetCode] Max Points on a Line
  • [LOJ161] 仙人掌计数