目录
一、优化背景
二、数据优化
2.1 去除无效值
2.1.1 栅格数据
2.1.2 瓦片数据
2.2 镶嵌数据集
2.3 生成优化
2.3.1 块存储瓦片
2.3.2 高精度
2.4 创建空间索引
一、优化背景
TIN指不规则三角网,是针对连续三维空间的不规则划分,其最小单元为不规则三角形。TIN 可以减少数据冗余,表达经度更高,同时在计算效率方面比较有优势,在地理信息系统中有广泛应用。 如交通,道路、桥梁、隧道设计、施工;水利,水利设施、水利发电等;城市建筑,施工、填挖方等。TIN地形数据是项目中最基础的底图数据,用户对地形处理效率及加载性能都有比较高的要求,因此,本文总结了一些TIN地形数据优化的经验,供用户参考。
二、数据优化
2.1 去除无效值
2.1.1 栅格数据
TIN地形是栅格数据集生成三维瓦片而来,如果栅格数据集存在无效值会导致生成TIN缓存崩溃或者合并TIN缓存后会出现黑块这种现象(见下图)。
那么针对这个问题我们可以对栅格数据集去除无效值,具体思路如下:
(1)导入 TIF 文件时,选择栅格数据集类型,勾选创建影像金字塔;
(2)选中栅格数据集,右键查看栅格数据集的属性,发现其空值并不是-9999;
(3)在该项目中,要对多个栅格生成的 TIN 地形进行合并,要求其空值统一为-9999,因此直接修改属性中的空值为-9999;
(4)将栅格数据集添加到地图中,查询无效区域的栅格值,发现其空值不是-9999,需要将其转变为新的空值:-9999;
(5)通过代数运算里面的 con 函数进行重新赋值,得到一个新的栅格数据集,并重新计算新栅格数据集的极值。此处 con 函数的作用是把小于-9999 的值(浅绿色区域)改为-9999,其它地方不变。
主要操作步骤:在菜单【数据】-【数据处理】-【栅格】-【代数运算】,通过代数运算Con函数实现,如Con([test.grid]<-9999,-9999,[test.grid]),意思是将test数据源下grid数据集值小于-9999的栅格全部赋值为-9999,其它栅格保持栅格值不变。
2.1.2 瓦片数据
有时编辑后的高精度TIN与低精度TIN合并之后,会出现塌陷的现象(见下图),这时候就需要用到TIN地形的去除无效值操作。去除无效值是去除设置的TIN地形缓存高程极值范围之外的数据。该功能可应用于交通工程领域,如在具体的项目中,经常需要使用两套精度不同的地形数据,其中低精度作为项目背景,高精度满足工程需要。
那么针对这个问题我们可以对TIN地形数据去除无效值,具体操作步骤如下:
(1)打开高精度栅格数据集的属性框,查看其高度范围,即属性框-栅格栏中的极值。
(2)选择【三维数据】——【TIN工具】——【去除无效值】功能,根据数据本身的高度范围,填写高程值范围(即步骤1中的极值)。此操作是为了将高程值范围之外的数据在后面的 TIN 合并过程中,被视为无效值处理。
(3)使用三维数据下TIN工具栏中TIN合并缓存工具,将处理后的高精度 TIN 与原来的低精度 TIN 合并。
注意:TIN合并缓存工具时一定要注意,需要将高精度地形缓存放到TIN缓存1的位置,低精度地形缓存放到TIN缓存2的位置。
2.2 镶嵌数据集
将两个或两个以上栅格数据集以地理坐标为参照组合成一个栅格数据集。下面分别展示了两种栅格数据集镶嵌的示例。
对于多幅边界相邻的栅格数据集,通过栅格镶嵌操作可直接将其拼接起来,镶嵌效果如上图1所示;对于有重叠部分的栅格数据集,系统会提供多种方法处理栅格数据集的重叠部分,具体参见参数设置中的“重叠区域取值”参数说明,镶嵌效果如上图2所示。
功能入口:
【数据】选项卡->【数据处理】->【栅格】->【栅格镶嵌】,弹出“栅格数据集镶嵌”窗口。
- 在列表框中添加需要进行镶嵌操作的栅格数据集
镶嵌数据集类型:可参与镶嵌的数据集类型有栅格数据集(GRID)和影像数据集(IMAGE)两类,栅格数据集多用来进行栅格分析,影像数据集多用来进行显示或作为底图。栅格数据集镶嵌只能在同一类数据集之间进行,因此,在添加数据集之前需要确定想要镶嵌的栅格数据集类型,这里默认为栅格数据集。选择数据集类型后,系统会根据所选的栅格数据集类型进行自动过滤。此外,将数据集添加至列表框以后,选择数据集类型的下拉列表框变为灰色,呈只读状态,如果用户想改变镶嵌数据集的类型,需要先将列表框内的数据集移除后方可选择。
- 进行栅格数据集镶嵌的参数设置。由于栅格数据集和影像数据集自身的差异性,二者的参数设置也略有不同。下面将详细介绍栅格数据集和影像数据集的各项参数。
- 栅格数据参数设置
重叠区域取值:系统提供的对地理范围上有重叠区域的待镶嵌数据集的处理方法,通过处理该区域像元值来完成数据集的镶嵌。对于栅格数据集,其像元值为地物的属性值,如高程、降水量等。取值方式包括以下五种:
同第一个数据集:取列表框中排在最前的栅格数据集的像元值作为重叠区域的值。
同最后一个数据集:取列表框中排在最后的栅格数据集的像元值作为重叠区域的值。
所有数据集的最大值:取参与镶嵌的所有栅格数据集其相应位置的像元值的最大值。
所有数据集的最小值:取参与镶嵌的所有栅格数据集其相应位置的像元值的最小值。
所有数据集的平均值:取参与镶嵌的所有栅格数据集其相应位置的像元值的平均值。
像素格式:设置结果数据集的像素格式。
同第一个数据集:取列表框中排列最前的栅格数据集的像素格式。
同最后一个数据集:取列表框中排在最后的栅格数据集的像素格式。
精度最高:选择参与镶嵌的所有栅格数据集中最大的像素格式。
精度最低:选择参与镶嵌的所有栅格数据集中最小的像素格式。
出现频率最高:选择参与镶嵌的所有栅格数据集中出现频率最高的像素格式,如果像素格式出现的频率相同,则按照数据集在列表框中的存放顺序由上到下选择。
自定义像素格式:勾选“自定义像素格式”前面的复选框后,上方“像素格式”参数将变灰不可用。自定义的像素格式包括:1位、4位、单字节、双字节、整型、长整型、单精度浮点型、双精度浮点型8种。像素格式的具体说明请参见。
无值:这里设定的是镶嵌后数据集为空值的值,即参与镶嵌的栅格数据集中单元格的值在无值数据的设置范围内时,这些单元格在结果数据集的相应位置为空值。
容限:设置无值数据的容限,假设无值数据设为 r、容限值设为 a 时,无值数据的范围是 [r-a, r+a]。
- 结果数据
数据源:结果数据集所在数据源,默认为被镶嵌数据集所在数据源。
数据集:结果数据集的名称。
编码方式:设置结果数据集的编码方式,包括 SGL、DCT、LZW、PNG、复合编码等编码方式,默认为不进行编码。具体编码方式说明请参见。 栅格数据集编码方式的变化参见下表,左侧一列为栅格数据集的原始编码方式,右侧分别列出了在不同像素格式下适用的编码方式。
创建影像金字塔:是否创建影像金字塔,默认为不勾选。在进行大数据量的栅格数据集镶嵌时,建议创建影像金字塔,以提高浏览速度。
- 进行栅格数据集镶嵌的环境设置
指定结果数据集的范围,默认为“所有数据集的并集”,即为参加镶嵌的所有数据集其范围的并集。此外,也可以选择某一栅格数据集的范围。在指定结果数据集的范围后,用户可对该数据集的范围进行微调,包括结果数据集的四个边界的位置和栅格数据集的分辨率。
- 完成栅格镶嵌相关参数的设置后,单击“确定”按钮,执行栅格镶嵌操作
2.3 生成优化
2.3.1 块存储瓦片
如果追求更高的加载性能和体验,建议生成块存储的瓦片。与影像瓦片一样性能最高的是块大文件存储、其次是 MongoDB。
注意事项:10.1及后续版本支持块存储,如果是之前版本,选择紧凑存储类型即可。
具体参数详情见SuperMap GIS的TIN地形数据处理Q&A
2.3.2 高精度
在生成TIN地形时参数里有高精度和保留精度,如果对生成TIN地形不要求保留原始数据精度值的情况下,选择高精度是性能最优的。下面看这两个参数的说明:
高精度:默认勾选“压缩”复选框,仅高精度的TIN数据支持TIN的相关运算操作,例如提取三维数据(TIN)。
保留精度:默认不勾选“带法线”复选框,保留原始数据精度值,勾选后结束层和精细层误差都会改变。主要是针对精度值比较高的DEM数据。
2.4 创建空间索引
“创建索引”能够对Tin缓存进行构建可用边界信息和空间索引的操作,该操作针对的是那些不存在可用边界信息和空间索引的Tin缓存。
操作步骤:
(1)在【三维数据】选项卡的【TIN地形】组中的【TIN工具】下拉按钮中,单击【创建索引】按钮,弹出“构建索引”对话框。具体参数设置如下:
(2)Tin缓存(.sct):用于构建索引的Tin地形缓存。单击右侧按钮,在弹出的“打开”对话框中选择Tin地形配置文件(*.sct),单击【打开】按钮即可;也可在文本框中直接输入Tin地形配置文件所在的文件夹路径及名称。
(3)单击【确定】按钮,执行构建索引操作。
注意事项:
- 可通过查看配置文件(*.sct),看Tin缓存是否具有空间索引和可用边界信息。
具体详见.sct配置文件里以下这两个标签:<sml:HasSpatialIndex>TRUE</sml:HasSpatialIndex>
<sml:HasCalculationData>TRUE</sml:HasCalculationData>
- 这个是对于TIN地形数据没有空间索引的情况下使用的,一般情况生成TIN时默认会带空间索引。