com.supermap.data
类 EncodeType

java.lang.Object
  继承者 com.supermap.data.Enum
      继承者 com.supermap.data.EncodeType

public class EncodeType
extends Enum

该类定义了数据集存储时的压缩编码方式类型常量。

对矢量数据集,支持四种压缩编码方式,即单字节,双字节,三字节和四字节编码方式,这四种压缩编码方式采用相同的压缩编码机制,但是压缩的比率不同。其均为有损压缩。需要注意的是点数据集、纯属性数据集以及 CAD 数据集不可压缩编码。对光栅数据,可以采用四种压缩编码方式,即 DCT、SGL、LZW 和 COMPOUND。其中 DCT 和 COMPOUND 为有损压缩编码方式,SGL 和 LZW 为无损压缩编码方式。

对矢量的压缩编码方式,以线数据集的单字节编码为例,说明其压缩编码的机制。

假设未压缩的线数据集的空间数据是以双精度数据类型存储的,现使用单字节压缩编码方式对其进行压缩存储。

如图所示为线数据集中的一个对象,其最小外接矩形的宽度为 Width,高度为 Height,则用单字节编码进行压缩的比率为:

ratio = max(Width,Height)/255

其中255是单字节所能表示的最大数值。设线对象的左下角点的坐标为(x0,y0),则对于线对象上的某个点(x,y),其编码后的坐标为:

x’=byte[(x-x0)/ratio]

y’=byte[(y-y0)/ratio]

因而编码之后的点的坐标以字节型数据类型存储,则数据集的存储空间为未编码时存储空间的1/8。显然在将双精度(8Byte) 类型编码成字节(1Byte) 类型时,精度是有损失的。对于坐标值来说,最大精度损失值为 ratio。对于其他矢量压缩编码方式,其原理一样,压缩后坐标精度的最大损失为

ratio = max(Width, Height)/ maxValue

其中,Width 和 Height 为几何对象的最小外接矩形的宽度和高度,maxValue 为编码方式的数据类型所能表示的数值的最大值(单字节编码最大值为255,双字节编码最大值为65535,三字节编码最大值为16777215,四字节编码最大值为4294967295)。

对于影像和栅格数据集,根据其像素格式(PixelFormat)选择合适的压缩编码方式,对提高系统运行的效率,节省存储空间非常有利。下表列出了影像和栅格数据集不同像素格式对应的合理的编码方式。


字段摘要
static EncodeType BYTE
          单字节编码方式。
static EncodeType COMPOUND
          数据集复合编码方式,其压缩比接近于 DCT 编码方式,主要针对 DCT 压缩导致的边界影像块失真的问题。
static EncodeType DCT
          DCT(Discrete Cosine Transform),离散余弦编码。
static EncodeType INT16
          双字节编码方式。
static EncodeType INT24
          三字节编码方式。
static EncodeType INT32
          四字节编码方式。
static EncodeType LZW
          LZW 是一种广泛采用的字典压缩方法,其最早是用在文字数据的压缩方面。
static EncodeType NONE
          不使用编码方式。
static EncodeType PNG
          PNG 压缩编码方式,支持多种位深的图像,是一种无损压缩方式。
static EncodeType SGL
          SGL(SuperMap Grid LZW),SuperMap 自定义的一种压缩存储格式。
 
方法摘要
 
从类 com.supermap.data.Enum 继承的方法
equals, getEnums, getNameByValue, getNames, getPredefineValues, getValueByName, getValues, hashCode, isDefined, isDefined, name, parse, parse, toString, value
 
从类 java.lang.Object 继承的方法
getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

NONE

public static final EncodeType NONE
不使用编码方式。


BYTE

public static final EncodeType BYTE
单字节编码方式。使用1个字节存储一个坐标值。(只适用于线和面数据集)


INT16

public static final EncodeType INT16
双字节编码方式。使用2个字节存储一个坐标值。(只适用于线和面数据集)


INT24

public static final EncodeType INT24
三字节编码方式。使用3个字节存储一个坐标值。(只适用于线和面数据集)


INT32

public static final EncodeType INT32
四字节编码方式。使用4个字节存储一个坐标值。(只适用于线和面数据集)


DCT

public static final EncodeType DCT
DCT(Discrete Cosine Transform),离散余弦编码。是一种广泛应用于图像压缩中的变换编码方法,这种变换方法在信息的压缩能力、重构图像质量、适应范围和算法复杂性等方面之间提供了一种很好的平衡,成为目前应用最广泛的图像压缩技术。其原理是通过变换降低图像原始空间域表示中存在的非常强的相关性,使信号更紧凑地表达。该方法有很高的压缩率和性能,但编码是有失真的。由于影像数据集一般不用来进行精确的分析,所以 DCT 编码方式是影像数据集存储的压缩编码方式。(适用于影像数据集)


SGL

public static final EncodeType SGL
SGL(SuperMap Grid LZW),SuperMap 自定义的一种压缩存储格式。其实质是改进的 LZW 编码方式。SGL 对 LZW 进行了改进,是一种更高效的压缩存储方式。目前 SuperMap 中的对 Grid 数据集和 DEM 数据集压缩存储采用的就是 SGL 的压缩编码方式,这是一种无损压缩。(适用于栅格数据集)


LZW

public static final EncodeType LZW
LZW 是一种广泛采用的字典压缩方法,其最早是用在文字数据的压缩方面。LZW的编码的原理是用代号来取代一段字符串,后续的相同的字符串就使用相同代号,所以该编码方式不仅可以对重复数据起到压缩作用,还可以对不重复数据进行压缩操作。适用于索引色影像的压缩方式,这是一种无损压缩编码方式。(适用于栅格和影像数据集)


PNG

public static final EncodeType PNG
PNG 压缩编码方式,支持多种位深的图像,是一种无损压缩方式。(适用于影像数据集)


COMPOUND

public static final EncodeType COMPOUND
数据集复合编码方式,其压缩比接近于 DCT 编码方式,主要针对 DCT 压缩导致的边界影像块失真的问题。(适用于 RGB 格式的影像数据集)