com.supermap.realspace.spatialanalyst
类 SpatialGridCoding3D

java.lang.Object
  继承者 com.supermap.realspace.spatialanalyst.SpatialGridCoding3D

public class SpatialGridCoding3D
extends java.lang.Object

空间网格编码类,该类提供对数据集进行三维网格编码的功能,即对地球立体空间剖分后,地球立体网格单元被赋予网格位置代码。

网格编码可以根据《地球空间格网编码规则_GB_T 40087-2021》、《北斗网格位置码 GB/T 39409-2020》、《基础地理实体空间身份编码规则》等文件作为规范,将空间几何对象统一剖分成不同尺度的网格单元,并按统一编码规则进行标识和表达,从而为构建网格化的地球空间数据组织提供参考框架。


构造方法摘要
SpatialGridCoding3D()
           
 
方法摘要
static boolean beidouGridEncode(DatasetVector sourceDataset, SteppedListener... listeners)
          对单数据集进行北斗三维网格位置编码,只支持经纬度坐标系的数据集。
static boolean beidouGridEncode(DatasetVector sourceDataset, java.lang.String codeFieldName, SteppedListener... listeners)
          对单数据集进行北斗三维网格位置编码,只支持经纬度坐标系的数据集。
static boolean geoEntityEncode(DatasetVector sourceDataset, SteppedListener... listeners)
          对单数据集进行地理实体三维网格编码,只支持经纬度坐标系的数据集。
static boolean geoEntityEncode(DatasetVector sourceDataset, java.lang.String codeFieldName, SteppedListener... listeners)
          对单数据集进行地理实体三维网格编码,只支持经纬度坐标系的数据集。
static boolean geoSOTEncode(DatasetVector sourceDataset, SteppedListener... listeners)
          对单数据集进行基于GeoSOT的三维网格编码,只支持经纬度坐标系的数据集。
static boolean geoSOTEncode(DatasetVector sourceDataset, java.lang.String latLonFieldName, java.lang.String altitudeFieldName, SteppedListener... listeners)
          对单数据集进行基于GeoSOT的三维网格编码,只支持经纬度坐标系的数据集。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SpatialGridCoding3D

public SpatialGridCoding3D()
方法详细信息

geoSOTEncode

public static boolean geoSOTEncode(DatasetVector sourceDataset,
                                   SteppedListener... listeners)
对单数据集进行基于GeoSOT的三维网格编码,只支持经纬度坐标系的数据集。

该方法基于GeoSOT全球剖分模型,对数据集中的每个几何对象 所在的地球空间从经度、纬度、大地高三个方向进行剖分,找到所对应的四进制二维网格编码和高度域编码。详细剖分及编码方法可参考《地球空间格网编码规则_GB_T 40087-2021》。

实现思路:

  1. 先根据几何对象跨度确定层级L(点对象会计算到32级)。
  2. 如果该对象的bounds跨过了L-1层级的边界则使用中心点计算到L级;
  3. 如果没有跨越L-1层级的边界,则使用bounds的两个角点计算到L或L-1级。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型。
返回:
是否执行成功。若执行成功,则在源数据集中新增"GeoSOT_2D_Code"和"GeoSOT_H_Code"字段,分别用于存储地球表面空间的四进制二维网格位置码和高度域编码。如果数据集中已存在上述字段,则会增加_1、_2...的后缀。

geoSOTEncode

public static boolean geoSOTEncode(DatasetVector sourceDataset,
                                   java.lang.String latLonFieldName,
                                   java.lang.String altitudeFieldName,
                                   SteppedListener... listeners)
对单数据集进行基于GeoSOT的三维网格编码,只支持经纬度坐标系的数据集。

该方法基于GeoSOT全球剖分模型,对数据集中的每个几何对象 所在的地球空间从经度、纬度、大地高三个方向进行剖分,找到所对应的四进制二维网格编码和高度域编码。详细剖分及编码方法可参考《地球空间格网编码规则_GB_T 40087-2021》。

该方法会根据指定的字段名新建字段,将计算出的两类编码存储在字段中。

实现思路:

  1. 先根据几何对象跨度确定层级L(点对象会计算到32级)。
  2. 如果该对象的bounds跨过了L-1层级的边界则使用中心点计算到L级;
  3. 如果没有跨越L-1层级的边界,则使用bounds的两个角点计算到L或L-1级。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型。
latLonFieldName - 指定的存储二维网格位置码的字段名,需要是原始数据中不存在的字段。
altitudeFieldName - 指定的存储高度位置码的字段名,需要是原始数据中不存在的字段。
返回:
是否执行成功。

geoEntityEncode

public static boolean geoEntityEncode(DatasetVector sourceDataset,
                                      SteppedListener... listeners)
对单数据集进行地理实体三维网格编码,只支持经纬度坐标系的数据集。

基础地理实体是新型基础测绘产品体系中的核心成果,是推动基础测绘工作转型升级的关键。基础地理实体空间身份编码是适用于基础地理实体管理和应用的一种标识代码,具有可实现基础地理实体全球专有标识、唯一标识以及信息关联共享等特性。构建空间身份编码,可以有效提高基础地理实体数据的规范化、标准化管理,为各种应用提供更好用、更便捷的测绘地理信息服务。

地理实体编码范式采用“专有标识域+标准域+扩展域”三段划分,其中“标准域”又由二维/三维位置码+分类代码+顺序码组成,用以实现对基础地理实体的唯一标识。该方法则是对数据集中的每个几何对象,生成对应的三维位置码,详细剖分及编码方法可参考《基础地理实体空间身份编码规则》。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型。
返回:
是否执行成功。若执行成功,则在源数据集中新增"GeoEntity_3D_Code",用于存储地理实体三维网格位置码。如果数据集中已存在上述字段,则会增加_1、_2...的后缀。

geoEntityEncode

public static boolean geoEntityEncode(DatasetVector sourceDataset,
                                      java.lang.String codeFieldName,
                                      SteppedListener... listeners)
对单数据集进行地理实体三维网格编码,只支持经纬度坐标系的数据集。

该方法则是对数据集中的每个几何对象,生成对应的地理实体三维位置码,详细剖分及编码方法可参考《基础地理实体空间身份编码规则》。

同时,该方法会根据指定的字段名新建字段,将计算出的三维编码存储在字段中。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型。
codeFieldName - 指定的存储三维网格位置码的字段名,需要是原始数据中不存在的字段。
返回:
是否执行成功。

beidouGridEncode

public static boolean beidouGridEncode(DatasetVector sourceDataset,
                                       SteppedListener... listeners)
对单数据集进行北斗三维网格位置编码,只支持经纬度坐标系的数据集。

北斗网格位置码是在地球空间剖分理论基础上发展起来的,适用于北斗卫星导航系统各种应用终端输出的一种网格位置编码,它与GeoSOT模型为基础的相关编码体系同根同源、一脉相承,设计上与北斗卫星导航系统的定位精度相适应,同时兼顾人和设备的使用,是经纬度点位置编码体系的重要补充。

北斗三维网格位置码由北斗二维网格位置码+高度域网格编码组成。详细剖分及编码方法可参考《北斗网格位置码 GB/T 39409-2020》。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型
返回:
是否执行成功。若执行成功,则在源数据集中新增"BeiDou_3D_Code",用于存储北斗三维网格位置码。如果数据集中已存在上述字段,则会增加_1、_2...的后缀。

beidouGridEncode

public static boolean beidouGridEncode(DatasetVector sourceDataset,
                                       java.lang.String codeFieldName,
                                       SteppedListener... listeners)
对单数据集进行北斗三维网格位置编码,只支持经纬度坐标系的数据集。

该方法会根据指定的字段名新建字段,将计算出的三维编码存储在字段中。

参数:
sourceDataset - 待编码的矢量数据集,支持三维点线面、模型数据集类型。
codeFieldName - 指定的存储三维网格位置码的字段名,需要是原始数据中不存在的字段。
返回:
是否执行成功。