考研长安(1)-栅格数据的编码方法详解

熊猫的异想天开 2019-08-01 05:28:38
大家好,这是熊猫的异想天开,今天想记录一下GIS中有关栅格数据的一些编码方法,希望自己回头复习时候可以看看,有需要的的朋友也可以收藏一下。由于我是手机写的,发现不能编辑字体和将每一幅图片插到相应的位置,我就先介绍一下图片吧。 1)第一幅图是直接栅格编码,“行”也就是从左到右了,“行主序”可以看出是奇数行从左到右偶数行从右到左,“Morton”是四叉树中的一种编码。 2)第二幅图是链码及其对细线的表示。 3)第三幅图就是所谓的7-4(c) 4)第四幅图为7-4(c)的块码表示 接下来先赘述一下栅格数据结构定义、特点以及决定每个栅格单元代码的方式。 栅格结构是最简单、最直接的空间数据结构,是将地球表面划分为大小均匀紧密相邻的网格阵列,每个网格作为一个像元或像素由行、列定义,并包含一个代码表示该像素的属性类型或量值,或仅仅包括指向其属性的指针。 栅格结构最显著的特点也就是:属性明显,定位隐含。 决定每个栅格单元代码的方式有4种,分别为:中心点法、面积占优法、重要性法和百分比法。 中心点法:就是用处于栅格中心处的地物类型或现象特性决定栅格代码。 面积占优法:以占矩形区域面积最大的地物类型或现象特性决定栅格单元的代码。 重要性法:根据栅格内不同地物的重要性,选取最重要的地物类型决定相应的栅格单元代码。 百分比法:根据矩形区域内各地理要素所占面积的百分比数确定栅格单元的代码。 接下来奔向主体,给大家解释一下栅格编码的方法。 首先栅格编码有两种:直接栅格编码和压缩栅格编码。 直接栅格编码就是将栅格数据看作是一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐个像元记录,也可以奇数行地从左到右而偶数行地从右向左记录,为了特定目的还可以采用其他特殊的顺序。 压缩编码方法就是用尽可能少的数据量记录尽可能多的信息,其类型又有信息无损编码和信息有损编码之分。目前有一系列栅格数据压缩编码方法,如链码、游程长度编码、块码和四叉树编码等。 1)链码(Chain Codes) 链码又称为弗里曼链码或边界链码,链码可以有效地压缩栅格数据,而且对估算面积、长度、转折方向的凹凸度等运算十分方便,比较适合于存储图形数据。 链码是以3*3的方格中间是起始点,右边设定为0,然后按照逆时针递增到7,即链码的八个方向序号。图中的细线的链码为(3,0)21100066567,其中(3,0)为起始点坐标,3为列,0为行,之后的数值序列描述了方向。 任意一条细线都可用链码序列表示为: C=a1a2...an,0<=ai<=7 如果始点和终点是重合的话,则说明这个曲线就是闭合的。 (重点:要记住链码的形式也就是始点接一串代表了方向的数字,其中坐标第一个代表y,第二个代表x,代表方向的数值是从右边以0为开始然后逆时针递增到7。) 2)游程长度编码(Run-Length Codes) 游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其编码方案是:只在各行(或列)数据的代码发生变化时依次记录代码以及相同的代码重复个数,从而实现数据的压缩。 例如对7-4(c)图所示栅格数据,可沿行方向进行如下游程长度编码:(0,1),(4,2),(7,5);(4,5),(7,3);(4,4),(8,2),(7,2);(0,2),(4,1),(8,3),(7,2);(0,0),(8,4),(7,1),(8,1);(0,3),(8,5);(0,4),(8,4);(0,5),(8,3)。 只用了44个数字就可以表示,如果用直接编码的方法就须要用64个整数来表示,所以游程长度编码压缩数据是十分有效又简便的。 (重点:你要知道这种方法是记录出现的代码的值以及代码出现的次数,每一个用逗号隔开,一行结束用分号隔开,最后是个句号) 另一种游程长度编码方案就是逐个记录各行(或列)代码发生变化的位置和相应代码, (重点:你要知道先记录的是代码发生变化的位置也就是第一个变化了的第一个数值的位置,然后记录该位置的代码值,同样每行每列结束用分号隔开。) 块码 块码是游程长度编码扩展到二维的情况,采用方形区域作为记录单元,每个记录单元包括相邻的若干栅格,数据结构由初始位置(行、列号)和半径,再加上记录单位的代码组成。 (重点:前面的两个数字为初始位置的行号和列好,然后是半径,这个半径就要构成一个正方形了,然后是这个方形所代表的数值,其实也就是把这个区域划分为大小不等的正方形块,最小的正方形就一个数,相当于一个点了) 块码具有可变的分辨率,即当代码变化小时图块大,就是说在区域图斑内部分辨率低,反之,以小块记录区域边界地段分辨率高,以此达到压缩的目的。 四叉树编码下次写吧,用手机码字手都痛了。
...全文
3961 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 hookee 的回复:
hookee 2019-08-02
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 1 楼 潇湘忆梦 的回复:
那你可能不会结贴了
其实我想写博客的 怎么是帖子 能教下我吗
潇湘忆梦 2019-08-01
  • 打赏
  • 举报
回复
那你可能不会结贴了

10,612

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧