一、栅格数据
1、栅格数据:栅格数据结构实际就是像元阵列,每个像元由行列确定它的位置。由于栅格结构是按一定的规则排列的,所表示的实体位置很容易隐含在网络文件的存储结构中,且行列坐标可以很容易地转为其它坐标系下的坐标。在网络文件中每个代码本身明确地代表了实体的属性或属性的编码。
    2、栅格数据的优点:在栅格数据结构中,点实体表示为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实体由聚集在一起的相邻像元结合表示。这种数据结构很适合计算机处理,因为行列像元阵列非常容易存储、维护和显示。

3、栅格数据的缺点:用栅格数据表示的地表是不连续的,是量化和近似离散的数据,是地表一定面积内(像元地面分辨率范围内)地理数据的近似性,如平均值、主成分值或按某种规则在像元内提取的值等;另一方面,栅格数据的比例尺就是栅格大小与地表相应单元大小之比。像元大小相对于所表示的面积较大时,对长度、面积等的度量有较大影响,这种影响还与计算长度、面积的方法有关。如图1(a)中a点与c点之间的距离是5个单位,但在图1(b)中,ac之间的距离可能是7,也可能是4,取决于算法。如以像元边线计算则为7,以像元为单金大会则为4。同样,图1(a)中三角形的面积为6个平方单位,而图1(b)中则为7个平方单位,这种误差随像元的增大而增加。
图1:栅格数据对量测量的影响
二、栅格数据的取值方法:
栅格数据的取得,可在专题地图上均匀地划分网格(相当于将一透明方格纸覆盖在地图上),每一单位格子覆盖部分的属性数据便成为图中各点的值,最后形成栅格数字地图文件。也可以用数字化仪跟踪,得到矢量栅格数据后再转换为网格,或用扫描数字化方法,逐步扫描专题地图,将扫描数据重采样和再编码得到栅格数据文件
栅格数据的获取需尽可能保持原图或原始数据的精度。在决定代码时尽可能保持地表的真实性,保证最大的信息容量。图形用网格覆盖后,常常会在同一格子下对应了几种不同的属性值,而每一个单元只能取一个值,在这种情况下,有不同的取值方法:
中心点法:用处于栅格中心处的地物类型或现象特性决定栅格代码。
面积占优法:以占栅格最大的地物类型或现象特征决定栅格代码。
长度占优法:当覆盖的格网过中心部位时,横线占据该格中的大部分长度的属性值定为该栅格的代码。
重要性法:根据栅格内不同地物的重要性,选取最主要的地物类型决定相应的栅格单元代码。对于特别重要的地理实体,其所在的区域尽管面积很小或不在中心,也采取保留的原则,台稀有金属矿区域等。
为了逼近原始数据精度,除了采用上述几种取值方法外,还可以采用缩小单个栅格单元的面积,增加栅格单元总数的方法,这样行列数也相应增加,每个栅格单元可代表更细小的地物类型,然而增加栅格个数、提高精度的同时也带来了一个严重的问题,那就是数据量的大幅度增加,数据冗余严重。为了解决这一矛盾,现已发展了一系列栅格数据压缩编码方法,如键码、游程长度编码、块码和四分树编码等。
三、编码方法
1、直接栅格编码
这是最简单直观而又非常重要的一种栅格结构编码方法,通常称这种编码的图像文件为网格文件或栅格文件,栅格结构不论采用何种压缩编码方法,其逻辑原型都是直接编码网格文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐个象元记录,也可以奇数行地从左到右而偶数行地从右向左记录,为了特定目的还可采用其他特殊的顺序。
2、压缩编码方法
目前有一系列栅格数据压缩编码方法,如键码、游程长度编码、块码和四叉树编码等。其目的,就是用尽可能少的数据量记录尽可能多的信息,其类型又有信息无损编码和信息有损编码之分。信息无损编码是指编码过程中没有任何信息损失,通过解码操作可以完全恢复原来的信息,信息有损编码是指为了提高编码效率,最大限度地压缩数据,在压缩过程中损失一部分相对不太重要的信息,解码时这部分难以恢复。在地理信息系统中多采用信息无损编码,而对原始遥感影像进行压缩编码时,有时也采取有损压缩编码方法。
1)链码(Chain Codes
链码又称为弗里曼链码[Freeman]或边界链码,链码可以有效地压缩栅格数据,而且对于估算面积、长度、转折方向的凹凸度等运算十分方便,比较适合于存储图形数据。缺点是对边界进行合并和插入等修改编辑工作比较困难,对局部的修改将改变整体结构,效率较低,而且由于链码以每个区域为单位存储边界,相邻区域的边界将被重复存储而产生冗余。
2)游程长度编码(Run-Length Codes
游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其方法有两种方案:一种编码方案是,只在各行(或列)数据的代码发生变化时依次记录该代码以及相同的代码重复的个数,从而实现数据的压缩。
游程长度编码在栅格压缩时,数据量没有明显增加,压缩效率较高,且易于检索,叠加合并等操作,运算简单,适用于机器存储容量小,数据需大量压缩,而又要避免复杂的编码解码运算增加处理和操作时间的情况。
3)块码(Block codes
块码是游程长度编码扩展到二维的情况,采用方形区域作为记录单元,每个记录单元包括相邻的若干栅格,数据结构由初始位置(行、列号)和半径,再加上记录单位的代码组成。
块码具有可变的分辨率,即当代码变化小时图块大,就是说在区域图斑内部分辨率低;反之,分辨率高以小块记录区域边界地段,以此达到压缩的目的。因此块码与游程长度编码相似,随着图形复杂程度的提高而降低效率,就是说图斑越大,压缩比越高;图斑越碎,压缩比越低。块码在合并、插入、检查延伸性、计算面积等操作时有明显的优越性。然而在某些操作时,则必须把游程长度编码和块码解码,转换为基本栅格结构进行。
4)四叉树(Quadtrees
四叉树又称四元树或四分树,是最有效的栅格数据压缩编码方法之一,绝大部分图形操作和运算都可以直接在四叉树结构上实现,因此四叉树编码既压缩了数据量,又可大大提高图形操作的效率。四叉树将整个图像区逐步分解为一系列被单一类型区域内含的方形区域,最小的方形区域为一个栅格象元,分割的原则是,将图像区域划分为四个大小相同的象限,而每个象限又可根据一定规则判断是否继续等分为次一层的四个象限,其终止判据是,不管是哪一层上的象限,只要划分到仅代表一种地物或符合既定要求的少数几种地物时,则不再继续划分,否则一直划分到单个栅格象元为止。四叉树通过树状结构记录这种划分,并通过这种四叉树状结构实现查询、修改、量算等操作。
四叉树中象限的尺寸是大小不一的,位于较高层次的象限较大,深度小即分解次数少,而低层次上的象限较小,深度大即分解次数多,这反映了图上某些位置单一地物分布较广而另一些位置上的地物比较复杂,变化较大。正是由于四叉树编码能够自动地依照图形变化而调整象限尺寸,因此它具有极高的压缩效率。

GIS中的栅格数据结构相关推荐

  1. GIS中的栅格分析工具和技术

    (本文首发于"水经注GIS"公号,关注公号免费领取地图数据) 栅格分析是分析格网数据集中包含的空间信息的过程. 格网中的每个像元都包含一个值或类,这些值或类可能与土壤.土地覆被.高 ...

  2. GIS中最短路径的实现

    (January 11) http://www.handandaily.com GIS中最短路径的实现 张燕,付仲良 ,黄庆彬 本文提出了一种基于矢量角度的最短路径搜索算法,设计出一种类似于面向对象的 ...

  3. (转)向SDE库中写入栅格和矢量数据

    说明:本类使用了上一篇文章中的打开sdeworkspace的类库. 本类是实现了向SDE中写入栅格和矢量数据,在SDE for Sql2005+ae9.3上测试通过. 使用时注意里面有一些向数据库中写 ...

  4. 聊聊GIS中的坐标系|再版

    目录 1. 经纬度(例: 119.32°E, 32.48°N)与米(∟, 直角坐标) 2. 为什么有两种表达(不同点) 3. 内在联系(相同点) 4. 常用坐标系统 4.1. 一对名词:WKID与EP ...

  5. 聊聊GIS中那些坐标系

    聊聊GIS中那些坐标系 </h1><div class="clear"></div><div class="postBody&q ...

  6. ArcGIS空间数据:矢量和栅格数据结构详解

    文章目录 矢量数据结构 矢量数据简介 Shapefile矢量格式 栅格数据结构 地理数据库中的栅格 栅格管理策略 栅格数据的地理属性 栅格的地理属性通常包括 地理数据集中的栅格块表 实体栅格表示 矢量 ...

  7. Python中ArcPy栅格裁剪栅格:批量对齐栅格图像范围并统一行数与列数

      本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法.   首先明确一下我们的需求.现有某一地区的多张栅格遥感影像 ...

  8. GIS 中矢量多边形网格化问题研究

    GIS 中矢量多边形网格化问题研究   2005-6-21 15:41:34    作者- 朱良峰,吴信才 ,刘修国    来源- 中国地质大学研究生   阅读768次   [大 中 小]   摘要: ...

  9. ArcGis如何插入图片_拒绝描图,GIS中图片矢量化变为GIS图层。

    相信很多小伙伴在做设计或者项目时,都会遇到将总规的用地类型图转为GIS图层,然后计算面积的情况,大家想到的做法都是建立shapfile线以及面图层一点一点的描,今天就和大家聊一下GIS中如何将用地类型 ...

  10. GIS中的坐标系定义与转换

    GIS中的坐标系定义与转换 青岛海洋地质研究所 戴勤奋 2002-3-27 14:22:47 ----------------------------------------------------- ...

最新文章

  1. 仿百度GIF验证码 GIFEncoder 跳动验证码 随机背景色、颜色、字体、子大小、偏移、干扰线等...
  2. 无休止加班的真正原因!你们公司是这样吗?
  3. 使用字节缓冲流在文件中写内容
  4. CMake 进行调试
  5. 火焰和烟雾的训练图像数据集_游戏开发者是烟雾和镜子的大师
  6. shiro学习(14):springMVC结合shiro完成认证
  7. javascript正则表达式入门
  8. mysql中怎么在列中使用时间函数_mysql中关于时间的函数使用教程
  9. java调用数据库存储过程_Java调用SQL Server的存储过程详解
  10. JAVA b2b2c多用户商城系统源码-服务发现服务端EurekaServer微服务
  11. 设计模式--适配器1模式实现C++
  12. 提高计算机访问硬盘的速度慢,嫌电脑速度不够快?教你5招提升硬盘性能!
  13. 计算机装打印机,电脑怎么安装打印机
  14. JavaScript实现累加和累乘
  15. “烧”不起原创欲减少成本投入,奈飞还能稳坐流媒体龙头宝座么?
  16. 短信跳转到微信关注公众号的方案
  17. chapter2 基因组学
  18. 惠普打印机驱动下载(电脑系统和打印机型号自动匹配)
  19. 如何挑选无线路由器?
  20. Ubuntu18.04 MOOS-ivp 编译运行

热门文章

  1. Swift零基础学习之用TableView做个景点App
  2. Navicat-在创建函数时提示Access violation at address ... in module ‘navicat.exe‘
  3. Matlab中pickic_高颜值甜品DIY |春季甜品Picnic野餐系列,一起过个惬意慵懒的午后时光❗️...
  4. 前端技术教学第一周 10.15
  5. Plotting timeseries
  6. ps裁剪和裁切的区别_PS图片的裁剪和裁切的含义和应用
  7. 4.7 电源管理 第五部分 ---- Windows CE设备驱动开发之电源管理
  8. win7万能声卡驱动_驱动精灵万能网卡版下载-驱动精灵万能网卡版免费下载
  9. C++ printf打印二进制,三进制,八进制,十六进制等(利用itoa)
  10. ABAP clear、refresh、free的区别