public class SpatialGridCoding extends Object
网格编码可以根据《地球空间格网编码规则_GB_T 40087-2021》、《北斗网格位置码 GB/T 39409-2020》、《基础地理实体空间身份编码规则》等文件作为规范,将空间几何对象统一剖分成不同尺度的网格单元,并按统一编码规则进行标识和表达,从而为构建网格化的地球空间数据组织提供参考框架。
限定符和类型 | 方法和说明 |
---|---|
static String |
beidouGridEncode(Geometry geometry)
对指定的几何对象进行北斗二维网格位置编码 ,返回对应的二维网格位置码。
|
static String |
beidouGridEncode3D(Geometry3D geometry3D)
对指定的几何对象进行北斗三维网格位置编码 ,返回对应的三维网格位置码。
|
static String |
geoEntityEncode(Geometry geometry)
对指定的几何对象进行地理实体二维网格编码 ,返回对应的二维网格位置码。
|
static String |
geoEntityEncode3D(Geometry3D geometry3D)
对指定的三维几何对象进行地理实体编码 ,返回对应的三维网格位置码。
|
static String |
geoSOTEncode(Geometry geometry)
对几何对象进行基于GeoSOT的二维编码 ,返回对应的四进制网格编码。
|
static String[] |
geoSOTEncode3D(Geometry3D geometry3D)
对几何对象进行基于GeoSOT的三维编码 ,返回对应的四进制网格编码和高度域编码。
|
public static String geoSOTEncode(Geometry geometry)
该方法基于GeoSOT全球剖分模型,对几何对象所在的地球空间从经度、纬度两个方向进行剖分,找到几何对象所对应的网格编码。详细剖分及编码方法可参考《地球空间格网编码规则_GB_T 40087-2021》。
实现思路:
geometry
- 待编码对象,支持二维点、线、面和三维点、线、面、三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。public void testGeoSOTRegion2D() { Point2D point2D1 = new Point2D(126.48140951545128, 44.026401382119857); Point2D point2D2 = new Point2D(126.48140951366125, 44.026401380945153); Point2D point2D3 = new Point2D(126.60222928452474, 44.054986997893629); Point2D point2D4 = new Point2D(126.66857127909265, 44.022034532615365); Point2D point2D5 = new Point2D(126.70950326696368, 43.957012667582525); Point2Ds pntsRegion = new Point2Ds(); pntsRegion.add(point2D1); pntsRegion.add(point2D2); pntsRegion.add(point2D3); pntsRegion.add(point2D4); pntsRegion.add(point2D5); pntsRegion.add(point2D1); GeoRegion geoRegion = new GeoRegion(); geoRegion.addPart(pntsRegion); String code = SpatialGridCoding.geoSOTEncode(geoRegion); System.out.println("二维空间编码:" + code); //执行结果为: 二维空间编码:G00131331010 编码结果表明完全包围该几何对象的最小网格剖分层级为第11级 }
public static String[] geoSOTEncode3D(Geometry3D geometry3D)
该方法基于GeoSOT全球剖分模型,对几何对象所在的地球空间从经度、纬度、大地高三个方向进行剖分,找到几何对象所对应的二维网格编码和高度域编码。详细剖分及编码方法可参考《地球空间格网编码规则_GB_T 40087-2021》。
实现思路:
geometry3D
- 待编码对象,支持三维点、三维线、三维面、三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。public void testGeoSOTRegion3D() { Point3Ds points = new Point3Ds(); points.add(new Point3D(-120.15, -43.0, -150)); points.add(new Point3D(-120.17, -43.2, 100)); points.add(new Point3D(-120.19, -43.1, -260)); points.add(new Point3D(-120.15, -43.0, 200)); // 构造线对象 GeoRegion3D geoRegion = new GeoRegion3D(); geoRegion.addPart(points); String[] codes = SpatialGridCoding.geoSOTEncode3D(geoRegion); System.out.println("二维空间编码:" + codes[0]); System.out.println("高度域编码:" +codes[1]); //执行结果为: 二维空间编码:G30131302200 高度域编码:11111111111111111 编码结果表明,从经纬度方向完全包围该几何对象的最小网格剖分层级为11级,大地高方向的剖分层级为17级 }
public static String geoEntityEncode(Geometry geometry)
基础地理实体是新型基础测绘产品体系中的核心成果,是推动基础测绘工作转型升级的关键。基础地理实体空间身份编码是适用于基础地理实体管理和应用的一种标识代码,具有可实现基础地理实体全球专有标识、唯一标识以及信息关联共享等特性。构建空间身份编码,可以有效提高基础地理实体数据的规范化、标准化管理,为各种应用提供更好用、更便捷的测绘地理信息服务。
地理实体编码范式采用“专有标识域+标准域+扩展域”三段划分,其中“标准域”又由二维/三维位置码+分类代码+顺序码组成,用以实现对基础地理实体的唯一标识。该方法则是生成地理实体对象的二维位置码,详细剖分及编码方法可参考《基础地理实体空间身份编码规则》。
geometry
- 待编码对象,支持二维和三维点、线、面,三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。public void testGeoEntityRegion2D() { Point2D point2D1 = new Point2D(126.48140951545128, 44.026401382119857); Point2D point2D2 = new Point2D(126.48140951366125, 44.026401380945153); Point2D point2D3 = new Point2D(126.60222928452474, 44.054986997893629); Point2D point2D4 = new Point2D(126.66857127909265, 44.022034532615365); Point2D point2D5 = new Point2D(126.70950326696368, 43.957012667582525); Point2Ds pntsRegion = new Point2Ds(); pntsRegion.add(point2D1); pntsRegion.add(point2D2); pntsRegion.add(point2D3); pntsRegion.add(point2D4); pntsRegion.add(point2D5); pntsRegion.add(point2D1); GeoRegion geoRegion = new GeoRegion(); geoRegion.addPart(pntsRegion); String code = SpatialGridCoding.geoEntityEncode(geoRegion); System.out.println("地理实体二维网格编码:" + code); //执行结果为: 地理实体二维网格编码:NE306A0010XXXXXXXXXXXXXXXX }
public static String geoEntityEncode3D(Geometry3D geometry3D)
地理实体编码范式采用“专有标识域+标准域+扩展域”三段划分,其中“标准域”又由二维/三维位置码+分类代码+顺序码组成,用以实现对基础地理实体的唯一标识。该方法则是生成地理实体对象的三维位置码,详细剖分及编码方法可参考《基础地理实体空间身份编码规则》。
geometry3D
- 待编码对象,支持三维点、三维线、三维面、三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。public void testGeoEntityRegion3D() { Point3Ds points = new Point3Ds(); points.add(new Point3D(-120.15, -43.0, -150)); points.add(new Point3D(-120.17, -43.2, 100)); points.add(new Point3D(-120.19, -43.1, -260)); points.add(new Point3D(-120.15, -43.0, 200)); // 构造线对象 GeoRegion3D geoRegion = new GeoRegion3D(); geoRegion.addPart(points); String code3D = SpatialGridCoding.geoEntityEncode3D(geoRegion); System.out.println("地理实体三维网格编码:" +code3D); //执行结果为: 地理实体三维网格编码:SW11105K10253K020350XX0XX5XXXXXXXXXXXXXXXXXX }
public static String beidouGridEncode(Geometry geometry)
北斗网格位置码是在地球空间剖分理论基础上发展起来的,适用于北斗卫星导航系统各种应用终端输出的一种网格位置编码,它与GeoSOT模型为基础的相关编码体系同根同源、一脉相承,设计上与北斗卫星导航系统的定位精度相适应,同时兼顾人和设备的使用,是经纬度点位置编码体系的重要补充。 详细剖分及编码方法可参考《北斗网格位置码 GB/T 39409-2020》。
geometry
- 待编码对象,支持二维和三维点、线、面,三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。public static String beidouGridEncode3D(Geometry3D geometry3D)
北斗三维网格位置码由北斗二维网格位置码+高度域网格编码组成。详细剖分及编码方法可参考《北斗网格位置码 GB/T 39409-2020》。
geometry3D
- 待编码对象,支持三维点、三维线、三维面、三维几何体、三维模型等类型,且只支持经纬度坐标系的对象。Copyright © 2021–2024 SuperMap. All rights reserved.