游程编码是对具有块状地物的栅格数据进行压缩编码的一种简单可行的方法。在地理信息系统的分析研究中,大量研究对象是块状地物。例如作为分析研究基础的土地分类图中,每一地类就是由一个或多个块状地物组成的。通常,为了保持一定精度,就必须提高栅格数据的分辨率。而栅格数据的数据量同分辨率呈平方指数率的函数关系,即提高分辨率将大大提高数据量。例如一幅陆地卫星MSS图象中有3240×2340=7.58×106个栅格点。而其中,同一地块内的很多栅格点具有相同的性质,即属性相同。游程编码既考虑到数据压缩,又顾及地理信息系统中数据访问效率而采用的一种编码方式。它以行为单位,将栅格数据矩阵中属性相同的连续栅格视为一游程。根据每个游程数据结构(编码方式)的不同又分为游程终点编码和游程长度编码。
不管是游程长度编码还是游程终点编码,其实质是把栅格矩阵中行序列x1,x2……xn映射成整数对元素序列。因此,一维游程编码方式为:(gk,lk)。在游程长度编码中,gk表示栅格元素的属性值,lk表示游程的连续长度;在游程终止编码中,gk表示栅格元素属性值,lk表示游程终止点列号,其中k=1,2,3,……m(m<n)。
例如:已知由8×8个栅格单元组成的栅格数据,如图3-13所示。其中属性值分别为0,4,7,8,对其进行游程终止编码及游程长度编码,所得编码表分别如表3-9和表3-10所示。
表3-9 游程终止编码表
(0,1),(4,3),(7,8)
(4,5),(7,8)
(4,4),(8,6),(7,8)
(0,2),(4,3),(8,6),(7,8)
(0,2),(8,6),(7,7),(8,8)
(0,3),(8,8)
(0,4),(8,8)
(0,5),(8,8)
表3-9所示的第一行中,(0,1)表示属性值为0的栅格终止点为第一列,(4,3)表示属性值为4的栅格终止点为第3列,(7,8)表示属性值为7的栅格终止点为第7列。因此,从游程终止值可容易算出每个属性值所占栅格数。这里属性值为7的栅格数为8-3=5,依此类推。
表3-10 游程长度编码表
(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,2),(8,4),(7,1),(8,1)
(0,3),(8,5)
(0,4),(8,4)
(0,5),(8,3)
表3-10所示第一行中,(0,1)表示属性值为0的栅格为一个点,(4,2)表示属性值为4的栅格点数为2,(7,5)表示属性值为7的栅格点数为5,第一行中总栅格点数为1+2+5=8。
从上面两表可知游程终止编码中的每个数据对包含属性值及游程终止端列号;而游程长度编码中的每个数据对包含属性值及游程长度。这种一维游程编码方案,实质上只考虑了每一行的数据结构,但并没有考虑行与行之间的结构。换言之,它考虑了水平分解元素之间的相关性而未考虑垂直分解元素之间的相关性。因此,这种游程编码称一维游程编码。显然,如果各行中相同属性的顺序栅格数越多,即游程越长,编码效率越高。
游程编码对类型区面积较大的专题图及影象图,数据压缩率较高,易于实现叠置、合并、检索运算,这种编码方法在地理信息系统中应用很广。