# OpenDGGS **Repository Path**: zhoulch/OpenDGGS ## Basic Information - **Project Name**: OpenDGGS - **Description**: 全球离散格网系统SDK - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 3 - **Created**: 2024-09-28 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenDGGS 全球离散格网系统基础算法库 [![Static Badge](https://img.shields.io/badge/南师大-地科院-green)](http://dky.njnu.edu.cn/)[![Static Badge](https://img.shields.io/badge/南师大-OpenDGGS-blue)]() ![Static Badge](https://img.shields.io/badge/OpenDGGS-LibDGGSKernel-orange)![Static Badge](https://img.shields.io/badge/OpenDGGS-LibDGGSFeature-orange)![Static Badge](https://img.shields.io/badge/OpenDGGS-LibDGGSField-orange)![Static Badge](https://img.shields.io/badge/OpenDGGS-DGGSUtility-orange) ![Static Badge](https://img.shields.io/badge/CMake-3.15-pink)![Static Badge](https://img.shields.io/badge/C++-17-pink) ## XXX 修订记录 XXX | 更新时间 | 更新类型 | 更新内容 | |:----------:|:----:|:--------------------:| | 2025.12.15 | 修改 | 根据DGGSField的接口更新,调整使用方法 | | 2025.10.31 | 新增 | 在PyDGGS增加Utility模块功能 | | 2025.10.31 | 修改 | 修复编码转换时发生越界的错误 | | 2025.10.31 | 修改 | 修复矢量转格网时发生的错误 | | 2025.9.26 | 修改 | 调整DGGSUtility中头文件的引用格式 | | 2025.9.17 | 修改 | 修改FieldTranslate中使用的接口及函数 | | 2025.9.17 | 新增 | 在Field中增加文件读写接口 | | 2025.8.2 | 新增 | 在DGGSViewer增加多文件可视化功能 | | 2025.8.2 | 修改 | 修复DGGViewer显示Gridtiff会有白边的显示问题 | | 2025.8.1 | 新增 | 在GridTIFF中增加单个格网数据读写接口 | | 2025.7.31 | 新增 | 在GridTIFF增加确认初始化接口 | | 2025.7.21 | 修改 | 调整Kernel对象的销毁接口,适配python版本应用 | | 2025.7.21 | 修改 | 修复DGGSKerne南半球原点格元坐标转换错误 | | 2025.7.21 | 修改 | 修复南北极引起的系统错误 | | 2025.6.5 | 新增 | 增加单张GridTIFF转化为GeoTIFF的功能 | | 2025.5.15 | 修改 | 调整Cmakelist配置文件,保证一键编译 | | 2025.5.14 | 修改 | 删除Feature转化时的重复格网 | | 2025.5.14 | 新增 | 增加DGGSViewer用于显示DGGS数据 | | 2025.4.29 | 新增 | 增加LibGridTIFF库接口用于GridTIFF格式的文件读写 | | 2025.4.29 | 修改 | 调整DGGSDefine中数学参数并增加注释 | | 2025.4.29 | 修改 | 修复LibDGGSKernel中的代码错误 | | 2025.4.29 | 修改 | 修复编码转化精度问题 | | 2025.4.29 | 新增 | 于MathDefine中增加球面距离结算 | | 2025.4.29 | 新增 | 增加Linux系统下的环境配置 | | 2025.3.14 | 修改 | 修复LibGridTIF库打开普通tif文件时出现错误 | | 2025.3.11 | 新增 | 增加LibGridTIFF库用于GridTIFF格式的读写 | | 2025.3.11 | 修改 | 采用LibGridTIFF库实现FieldTranslate | | 2024.12.1 | 新增 | 修复编码转化边界精度问题 | | 2024.12.1 | 修改 | 调整投影部分类结构,简化部分代码 | | 2024.11.30 | 新增 | 为新的参数结构添加读取方法,并使用新方法读取参数 | | 2024.11.30 | 新增 | 增加md格式的数据组织方案 | | 2024.11.30 | 新增 | 增加不同接口的参数结构 | | 2024.11.30 | 修改 | 调整QueryResult类的结构,根据新的QueryResult类的结构调整Kernel接口 | | 2024.11.28 | 新增 | 增加参数结构体,满足不同接口的参数要求 | | 2024.11.28 | 修订 | 调整文件结构 | | 2024.11.28 | 修订 | 规范函数命名 | | 2024.11.28 | 新增 | 增加空间包围盒于文件存储中,减少数据计算 | | 2024.11.28 | 修改 | 修正程序逻辑错误,并根据新的DGGSFieldLayer结构调整DGGSFieldPyramid | | 2024.11.28 | 修改 | 修复格网单元不在格网范围内导致程序报错的问题 | | 2024.11.28 | 修订 | 调整文件组织结构 | | 2024.11.21 | 修订 | 调整基础定义组织位置,调整包含头文件 | | 2024.11.21 | 修订 | 调整基础定义位置 | | 2024.11.21 | 新增 | 新增Field的多分辨率数据组织管理子库 | | 2024.11.20 | 新增 | 新增瓦片基础结构 | | 2024.11.20 | 修改 | 调整CreateFieldPyramid的接口 | | 2024.11.20 | 新增 | 增加CreateFieldPyramid的方法使用 | | 2024.11.20 | 修改 | 修正线json无法在QGIS显示的错误 | | 2024.11.20 | 修改 | 调整单分辨率转化为多分辨率的具体实现 | | 2024.11.20 | 新增 | 新增空间坐标的包围 | | 2024.11.1 | 修改 | 修改六边形格子量化坐标函数中的错误 | | 2024.11.2 | 修订 | 删除非必要注释 | | 2024.11.10 | 修订 | 删除多余接口 | | 2024.11.10 | 修订 | 删除多余接口 | | 2024.11.10 | 修改 | 修改FieldPyramid的接口 | | 2024.10.30 | 新增 | 新增fieldPyramid多分辨率组织库 | | 2024.10.30 | 新增 | 为Utility新增生成多分辨率数据功能 | | 2024.10.30 | 修订 | 修改Utility格网连续场生成数据的组织方式 | | 2024.10.30 | 修改 | 更新Kernel中的投影代码 | | 2024.10.30 | 新增 | 在MathDefine中新增多分辨率方法 | | 2024.10.22 | 更改 | 更改code2Id方法实现多类型格网均可转化为正确id | | 2024.10.9 | 修订 | 修改投影的部分错误 | | 2024.9.29 | 修订 | 修复了OpenDGGS库在vs2019下无法编译的文艺 | | 2024.9.28 | 新增 | OpenDGGS V1.0完成 | ## 1 概述 全球离散格网系统是一种面向全球的新型多分辨率数据融合与地球系统模拟的解决方案。它采用特定剖分方法对球面空间进行同构离散化处理,形成一种无缝无叠的多尺度全球格网结构,并采用格网编码代替传统地理坐标参与数据操作。相较于局部区域的传统空间数据组织与应用模式,全球离散格网系统更适合解决大尺度问题,且在结构上支持多分辨率数据的高效处理。在此基础上,相关学者展开了全球多尺度空间数据集成与空间分析方法的研究,并将全球离散格网应用于海洋、大气、固体地球等领域的专业分析与模式模拟中。因此,全球离散格网系统,已被广泛认为是现代数字地球系统的基础框架。 然而,全球离散格网系统由于其独特的剖分与编码模型,导致在其上展开空间数据集成与空间数据分析,比传统GIS系统要复杂,也缺乏相应的软件平台支持专业学者充分利用其优势,展开各类应用研究。这一困境,限制了全球离散格网系统在地理信息科学、地球系统科学中的应用。 有鉴于此,本项目提供了一个开源的全球离散格网系统开发库与相应工具——OpenDGGS。 OpenDGGS是一个面向基于施耐德等积多面体投影所构建的全球离散格网系统(DGGS)的API库,支持多种DGGS拓扑类型与层级下多种DGGS要素的统一剖分与编码,能够实现基于DGGS的编码转换、空间数据集成、空间关系查询等操作,旨在提供一个具备拓扑完备性与唯一性的DGGS API库,为制定DGGS核心标准提供参考,为全球离散格网系统在地理信息科学、地球系统科学中的推广应用奠定基础。 ![](https://pic1.imgdb.cn/item/6825e2bd58cb8da5c8f44d0c.png) ### 1.1 设计思想 - 以SDK为核心,围绕形成数据转化、数据生产、数据可视全流程。 - 充分考虑实际使用,最大限度优化性能。 - 接口简单易用。 ### 1.2 定位 OpenDGGS以格网编码为核心实现格网的编码转化和拓扑查询,同时包括场格网对象和矢量格网对象定义,基于此实现格网数据集成、数据转化和可视化功能。 ![](https://pic1.imgdb.cn/item/682ad92c58cb8da5c8fbd7cb.png) ![](https://pic1.imgdb.cn/item/682aeaf358cb8da5c8fbe9b6.png) ## 2 理论基础 OpenDGGS的理论基础核心在于多重DGGS要素的统一剖分与统一编码方法,该方法实现了对多种网格要素快速剖分与统一编码,并构建了一种新型的DGGS数据模型。在此基础上,OpenDGGS成功实现了矢量数据和连续场数据的无缝集成,编码转换、空间数据组织等一系列DGGS基础操作,是全球离散格网系统实现高效数据集成、管理与应用的基础。 ![](https://pic.imgdb.cn/item/67068098d29ded1a8cb5b464.png) ## 3 结构组织 ### 3.1 3rdlibs SDK使用到的第三方库 主要包含: - GDAL —— 开源栅格空间数据转换库 - jsoncpp —— JSON读取库 #### 3.1.1 bin 程序运行所需DLL。 #### 3.1.2 include 程序编译所需头文件。 #### 3.1.3 lib 程序编译所需链接库,与bin对应。 ### 3.2 LibDGGSBase OpenDGGS的基础结构、属性定义,是DGGSKernel、DGGSField、DGGSFeature的基础,包括: - BaseDefine[命名空间头文件]——声明了NNU::DGGS命名空间,用以组织代码,规范使用。 - DGGSDefine[格网结构基础头文件]——定义OpenDGGS系统中的格网编码、格网类型、要素类型、经纬度结构等基础结构。 - MathDefine[格网数学基础头文件]——声明定义正二十面体相关参数及常用的空间坐标转换方法。 ### 3.3 LibDGGSKernel 实现六边形、菱形、三角形格网下地理坐标和格网编码的相互转化、格网的拓扑查询 - IDGGSKernel[格网拓扑查询、编码转化接口类]--DGGS核心接口定义,包括encode(经纬度转格网编码),decode(格网编码转经纬度),query(拓扑查询)。 - QueryResult[拓扑查询要素类]--生成OpenDGGS的python版本时,替代query接口返回C++迭代器存储的查询结果 #### 3.3.1 Project 核心类,实现基于施耐德等积多面体投影的地理坐标与格网编码转换。 - ISEA[编码转化接口实现类]--地理坐标和格网编码的相互转化的具体功能实现。 #### 3.3.2 ISEA4D 核心类,实现菱形格网地理坐标和格网编码的相互转化、格网的拓扑查询,具体结构如下: - ISEA4DQuery[菱形拓扑查询接口实现类]--菱形格网的拓扑查询功能的具体实现。 - ISEA4DImpl[菱形拓扑查询、编码转化接口类]-- 菱形格网中经纬度和格网编码相互转化、拓扑查询的接口定义 #### 3.3.3 ISEA4T 核心类,实现三角形格网地理坐标和格网编码的相互转化、格网的拓扑查询,具体结构如下: - ISEA4TQuery[三角形拓扑查询实现类]--三角形格网的拓扑查询功能的具体实现 - ISEA4TImpl[三角形拓扑查询、编码转化接口类]--三角形格网中经纬度和格网编码相互转化、拓扑查询的接口定义 #### 3.3.4 ISEA4H 核心类,实现六边形格网地理坐标和格网编码的相互转化、格网的拓扑查询,具体结构如下: - ISEA4HQuery[六边形拓扑查询实现类]--六边形格网的拓扑查询功能的具体实现 - ISEA4HImpl[六边形拓扑查询、编码转化接口类]--六边形格网中经纬度和格网编码相互转化、拓扑查询的接口定义 ### 3.4 LibDGGSField 核心模块,以DGGS的行列编码为基础,将正二十面体的基础菱形面视为一种菱形瓦片,实现基于菱形瓦片结构的DGGS中连续场数据的集成、组织与管理。 包含连续场数据的集成、更新、查询与删除等功能,其结构如下: - DGGSFieldLayer[field的图层类]--以图层结构存储组织管理field数据 - DGGSFieldBand[field的波段类]--作为图层类对象的波段属性,存储单个波段数据,实现在波段层次上对数据的查找更新操作 - DGGSFieldPartition[field的组分类]--以菱形为范围组织管理数据,作为波段类对象的Partition属性,存储该波段中单个菱形的数据,实现在菱形层次上对数据查找更新操作 ### 3.5 LibDGGSFeature 核心模块,以DGGS的行列编码为基础,将正二十面体的基础菱形面视为一种菱形瓦片,实现基于菱形瓦片结构的DGGS中矢量数据的集成、组织与管理。 包含矢量数据的集成、更新、查询与删除等功能,其结构如下: - DGGSFeatureLayer[feature的图层类]--以图层结构存储组织管理feature数据 - DGGSFeatureClass[feature的管理类]--管理图层类对象和要素类对象的生成 - DGGSFeature[feature的实现类]--组织管理全球离散格网的feature对象 - DGGSGeometry[几何基类]--作为feature的几何属性存储几何属性 - DGGSPoint[点几何类]--基于DGGSGeometry基类,实现对点几何数据的集成、更新、查询 - DGGSPolyLine[线几何类]--基于DGGSGeometry基类,实现对线几何数据的集成、更新、查询 - DGGSPolygon[面几何类]--基于DGGSGeometry基类,实现对面几何数据的集成、更新、查询 ### 3.6 LibDGGSFieldPyramid 核心模块,基于OpenDGGS中的LibDGGSField库,使用瓦片金字塔结构实现全球离散格网系统(DGGS)中的多分辨率连续场数据组织。 包含多分辨率连续场数据的集成、查询、转化等功能,其结构如下: - IFieldPyramidKernel[多分辨率连续场核心类]--实现对多分辨率连续场的查询、转化等操作 ### 3.7 LibGridTIFF 核心模块,定义全球离散格网系统(DGGS)中的场数据数据格式--GridTIFF,并实现GridTIFF的读写操作。其结构如下: - GridTIFF[格网数据格式类]--实现对格网数据的读写操作 ### 3.8 DGGSUtility 基础模块,支持多种层级、多种DGGS要素、多种拓扑类型的DGGS数据生成、连续场数据与DGGS数据的相互转化、矢量数据与DGGS数据的相互转化,包括: - Utility[格网应用程序]--格网生成、连续场转换、矢量转换的应用程序 - GridCreate[格网生成实现]--实现生成多层次、多拓扑类型、多要素类型的格网 - FieldTranslate[连续场转化实现]--实现规则经纬网连续场数据与全球离散格网连续场数据的相互转化 - FeatureTranslate[矢量转化实现]--实现传统矢量数据与全球离散格网矢量数据相互转化 - FieldPyramidTranslate[多分辨率连续场转化实现]--实现将单分辨率连续场数据转化为多分辨率连续场数据 ### 3.8 DGGSViewer 拓展模块,用于DGGS数据的可视化展示 ## 4 类说明 ### 4.1 C++代码类说明 #### 4.1.1 LibDGGSKernel ##### 4.1.1.1 IDGGSKernel 格网编码与经纬度坐标相互转化、拓扑查询的接口 ###### 4.1.1.1.1 行为 - init--根据格网类型初始化Kernel对象,便于之后的其他操作。 - release--释放Kernel对象 - query--根据拓扑查询类型对指定的格网编码进行拓扑查询,返回查询结果和查询数量 - encode--经纬度转格网编码 - decode--格网编码转经纬度 ##### 4.1.1.2 ISEA4DImpl 继承IDGGSKernel 菱形格网编码与经纬度坐标相互转化、拓扑查询的接口的实现类 ###### 4.1.1.2.1 属性 - DGGSquery--菱形格网拓扑查询类,用于菱形格网拓扑查询 - isea--投影类,用于格网编码与经纬度相互转化 - gridType--格网类型,设定为菱形格网 - level--格网层级 ###### 4.1.1.2.2 行为 - 格网编码与经纬度坐标相互转化、拓扑查询的接口的方法实现,不再赘述。 ##### 4.1.1.3 ISEA4TImpl 继承IDGGSKernel 三角形格网编码与经纬度坐标相互转化、拓扑查询的接口的实现类 ###### 4.1.1.3.1 属性 - DGGSquery--三角形格网拓扑查询类,用于三角形格网拓扑查询的功能实现 - isea--投影类,用于格网编码与经纬度相互转化的功能实现 - gridType--格网类型,设定为三角形格网 - level--格网层级 ###### 4.1.1.3.2 行为 - 编码与经纬度坐标相互转化、拓扑查询的接口的方法实现,不再赘述。 ##### 4.1.1.4 ISEA4HImpl 继承IDGGSKernel 六边形格网编码与经纬度坐标相互转化、拓扑查询的接口的实现类 ###### 4.1.1.4.1 属性 - DGGSquery--六边形格网拓扑查询类,用于六边形格网拓扑查询的功能实现 - isea--投影类,用于格网编码与经纬度相互转化的功能实现 - gridType--格网类型,设定为六边形格网 - level--格网层级 ###### 4.1.1.4.2 行为 - 格网编码与经纬度坐标相互转化、拓扑查询的接口的方法实现,不再赘述。 ##### 4.1.1.5 ISEA 地理坐标和格网编码的相互转化的具体功能实现 ###### 4.1.1.5.1 属性 - _vertTable--存储基菱形的顶点坐标 - _triParaments--存储正二十面体预计算的参数 ###### 4.1.1.5.2 行为 - init--初始化ISEA对象,是其他功能方法使用前提 - LB2IJ--经纬度转直角坐标,实现经纬度坐标转化中间过渡的直角坐标系下直角坐标 - IJ2LBCenter--直角坐标转编码,实现将过渡直角坐标系下的直角坐标转化为目标归算坐标系下格元的编码 - IJ2LBVertex--编码转格点,实现将过渡直角坐标系下的直角坐标转化为目标归算坐标系下格点的编码 #### 4.1.2 LibDGGSFeature ##### 4.1.2.1 DGGSFeatureLayer 管理矢量类型数据的图层类,实现对要素对象的存储和管理等功能 ###### 4.1.2.1.1 属性 - _featureClass--存储了图层类对象的格网类型、要素类型、层级、几何类型等基本属性 - _features--存储图层中的要素对象 ###### 4.1.2.1.2 方法 - getFeatureClass--获取featureClass对象 - getLevel--获取图层对应格网层级 - getFeature--根据要素索引返回指定的要素对象,对其进行操作 - addFeature--添加指定的要素对象到图层中 - eraseFeature--删除图层中指定的要素对象 - getFeatureCount--返回图层中要素对象的数量 - loadFromFile--从外部文件中导入数据到图层中 - saveToFile--将图层的基础信息(格网类型、要素类型、层级、几何类型)和要素对象保存至文件中 ##### 4.1.2.2 DGGSFeature 矢量要素类,存储单个要素的几何信息和id属性 ###### 4.1.2.2.1 属性 - _featureID--要素的id属性 - _geometry--几何类属性,存储要素的几何信息 - _featureClass--指向所属涂层的featureclass类,存储了要素对象的格网类型、要素类型、层级、几何类型等基本属性 ###### 4.1.2.2.1 方法 - setFID--设置要素id属性 - getFID--获取要素id属性 - setGeometry--设置几何属性 - getGeometry--获取几何属性 - getLevel--获取要素的格网层级 - getElementType--获取要素的格网要素类型 - getGeomType--获取要素的几何类型 - getGridType--获取要素的格网类型 ##### 4.1.2.3 DGGSGeometry 组织管理矢量数据的几何属性的基类,声明了几何类的方法和属性 ###### 4.1.2.3.1 属性 - _shapeType--几何类型 - _gridData--格网编码类型指针,存储格网的数据 - _gridCount--存储格网数据量 ###### 4.1.2.3.2 方法 - getShapeType--获取格网几何类型 - deepCopy--深拷贝,用于几何要素数据的赋值 - setGridData--设置所有格网数据 - addGridCode--添加单个格网数据 - setGridCount--设置格网数据数量 - getGridData--获取所有格网数据 - getGridCodeByIndex--根据索引获取单个格网数据 - getGridCount--获取格网数据数量 - Equals--判断与其他几何对象是否相同 ##### 4.1.2.4 DGGSPoint 继承DGGSGeometry 组织管理点几何的实现类 ###### 4.1.2.4.1 属性 - _shapeType--几何类型 - _gridData--存储格网数据 - _gridCount--存储格网数据量 ###### 4.1.2.4.2 方法 - getShapeType--获取格网几何类型 - deepCopy--深拷贝,用于几何要素数据的赋值 - setGridData--设置所有格网数据 - addGridCode--添加单个格网数据 - setGridCount--设置格网数据数量 - getGridData--获取所有格网数据 - getGridCodeByIndex--根据索引获取单个格网数据 - getGridCount--获取格网数据数量 - Equals--判断与其他几何对象是否相同 ##### 4.1.2.5 DGGSPolyLine 继承DGGSGeometry 组织管理线几何的实现类 ###### 4.1.2.5.1 属性 - _shapeType--几何类型 - _gridData--存储格网数据 - _gridCount--存储格网数据量 ###### 4.1.2.5.2 方法 - getShapeType--获取格网几何类型 - deepCopy--深拷贝,用于几何要素数据的赋值 - setGridData--设置所有格网数据 - addGridCode--添加单个格网数据 - setGridCount--设置格网数据数量 - getGridData--获取所有格网数据 - getGridCodeByIndex--根据索引获取单个格网数据 - getGridCount--获取格网数据数量 - Equals--判断与其他几何对象是否相同 ##### 4.1.2.6 DGGGSPolygon 继承DGGSGeometry 组织管理面几何的实现类 ###### 4.1.2.6.1 属性 - _shapeType--几何类型 - _gridData--存储格网数据 - _gridCount--存储格网数据量 ###### 4.1.2.6.2 方法 - getShapeType--获取格网几何类型 - deepCopy--深拷贝,用于几何要素数据的赋值 - setGridData--设置所有格网数据 - addGridCode--添加单个格网数据 - setGridCount--设置格网数据数量 - getGridData--获取所有格网数据 - getGridCodeByIndex--根据索引获取单个格网数据 - getGridCount--获取格网数据数量 - Equals--判断与其他几何对象是否相同 ##### 4.1.2.7 DGGGSFeatureClass 管理要素类对象和图层类对象的生成 ###### 4.1.2.7.1 属性 - _geometryType--几何类型 - _gridType--格网类型 - _elementType--要素类型 - _level--层级 ###### 4.1.2.7.2 方法 - createFeature--创建空要素类对象,并返回 - getGeometryType--获取几何类型 - getElementType--获取格网要素类型 - getGridType--获取格网类型 - getLevel--获取层级 #### 4.1.3 LibDGGSField ##### 4.1.3.1 DGGSFieldLayer 图层类,以图层结构存储组织管理连续场数据 ###### 4.1.3.1.1 属性 - _dataType--数据类型 - _gridType--格网类型 - _elementType--格网要素类型 - _bandCount--波段数 - _level--记录格网层级 - _bands--波段要素集合,用于存储波段数据 ###### 4.1.3.1.2 方法 - calculateDiffer--根据格网层级计算分辨率 - getGridType--获取格网类型 - getElementType--获取格网单元类型 - setBandCount--设置波段数 - getBandCount--获取波段数 - setLevel--设置层级 - getLevel--获取层级 - getDataType--获取数据类型 - getBand--根据索引获取波段 - setValue--根据经纬度设置单个属性值 - setValue--根据格网编码设置单个属性值 - getValue--根据经纬度获取单个属性值 - getValue--根据格网编码获取单个属性值 - deepCopy--深拷贝,用于指针类对象的赋值操作 - saveToFile --将图层类对象保存至文件中 - loadFromFile--从外部文件中导入数据到图层类对象中 ##### 4.1.3.2 DGGSFieldBand 波段类,作为图层类对象的波段属性,存储单个波段数据,实现在波段层次上对数据的查找更新操作 ###### 4.1.3.2.1 属性 - _bandId--波段索引号 - _gridType--格网类型 - _elementType--格网要素类型 - _level--记录格网层级 - _partitionCount--基菱形数量,不指定,根据输入数据自动赋值 - _partitions--菱形数据集合,用于存储基菱形数据 ###### 4.1.3.2.2 方法 - getPartitionFromPartIndex--按基菱号获取partition - setPartitionBoxFromIndex--按顺序索引为Partition设置包围盒 - getGridBoxFromPartitionIndex--根据基菱号从Partition获取包围盒 - setPartitionBoxFromPartIndex--按基菱形号为Partition设置包围盒 - getBandID--获取波段索引号 - getNoDataValue--获取波段无效值 - setNodataValue--设置波段无效值 - getData--根据经纬度设置单个属性值 - getData--根据格网编码设置单个属性值 - setData--根据经纬度获取单个属性值 - setData--根据格网编码获取单个属性值 - Code2XY--格网编码转行列坐标 - XY2Code--行列坐标转格网编码 - deepCopy--深拷贝,用于指针类对象的赋值操作 ##### 4.1.3.3 DGGSFieldPartition 组分类,作为波段类对象的Partition属性,存储该波段中单个菱形的数据,实现在菱形层次上对数据查找更新操作 ###### 4.1.3.3.1 属性 - _partitionIndex--基菱形索引号 - _gridType--格网类型 - _noDataValue--无效值,与其所属波段类对象一致 - _level--格网层级,与其所属波段类对象一致 - _gridBox--所有数据的格网包围盒 - _data--基菱形数据集合,用于存储基菱形上所有数据 ###### 4.1.3.3.2 方法 - setPartitionIndex--设置基菱形索引号 - getPartitionIndex--获取基菱形索引号 - getBBox--获取包围盒 - setBBox--设置包围盒 - getSize--获取数据大小 - getNoDataValue--获取无效值 - setNodataValue--设置无效值 - getData--根据经纬度设置单个属性值 - getData--根据格网编码设置单个属性值 - setData--根据经纬度获取单个属性值 - setData--根据格网编码获取单个属性值 - deepCopy--深拷贝,用于替代指针型数据复制 #### 4.1.4 LibDGGSFieldPyramid ##### 4.1.4.1 IFieldPyramidKernel 连续场多分辨率核心类,实现多分辨率的连续场数据的查询、生成等操作 #### 4.1.4 LibGridTIFF ##### 4.1.4.1 GridTIFF 实现离散格网(DGGS)场数据格式GridTIFF的读写操作 ### 4.2 Python代码类说明 #### 4.2.1 IDGGSKernel - CreateKernelObj(grid_type) - 功能:创建一个IDGGSKernel对象 - 参数:grid_type为PyDGGS中的DGGSGridType常量 - 返回值:返回一个IDGGSKernel对象 - DestroyKernelObj(kernel) - 功能:销毁一个kernel这个IDGGSKernel对象 - 参数:kernel是一个IDGGSKernel对象 - 返回值:无 - encode(coord, code) - 功能:将经纬度转化格网编码 - 参数:coord为PyDGGS的Geocoord对象,经纬度;code为PyDGGS的DGGSElementCode对象,格网编码。 - 返回值:修改输入code实参为转换后的格网编码。 - decode(code, coord) - 功能:将格网编码转化为经纬度 - 参数:code为PyDGGS的DGGSElementCode对象,格网编码;coord为PyDGGS的Geocoord对象,经纬度。 - 返回值:修改输入coord实参为转换后的经纬度。 - query(topo_type, code, query_result) - 功能:拓扑查询 - 参数:topo_type为PyDGGS的DGGSTopoType常量,拓扑查询类型;code为PyDGGS的DGGSElementCode对象,拓扑查询的目标格网编码;query_result为PyDGGS的QueryResult对象,拓扑查询的结果。 - 返回值:修改输入query_result实参为拓扑查询结果。 #### 4.2.2 DGGSField ##### 4.2.2.1 DGGSFieldLayer - getDataType() - 功能:获取图层的数据类型。 - 参数:无 - 返回值:PyDGGS中的DGGSDataType常量。 - getGridType() - 功能:获取图层的格网类型。 - 参数:无 - 返回值:PyDGGS中的DGGSGridType常量。 - getLevel() - 功能:获取图层的层级。 - 参数:无 - 返回值:格网层级,int型数据。 - getBandCount() - 功能:获取图层的波段数。 - 参数:无 - 返回值:图层的波段数,int型数据。 - getBand(band_id) - 功能:获取图层指定波段。 - 参数:波段索引 - 返回值:图层的波段,PyDGGS中的DGGSFieldBand类对象。 - getBand(band_id) - 功能:获取图层指定波段。 - 参数:波段索引 - 返回值:图层的波段,PyDGGS中的DGGSFieldBand类对象。 - getValue(code, band_id) - 功能:根据格网编码获取单个属性值 - 参数:code,PyDGGS中的DGGSElementCode对象;band_id,波段索引 - 返回值:code对应位置的属性值 - getValue(coord, band_id) - 功能:根据经纬度获取单个属性值 - 参数:coord,PyDGGS中的Geocoords对象;band_id,波段索引 - 返回值:coord对应位置的属性值 - setValue(code,value,band_id) - 功能:根据格网编码设置属性值 - 参数:code,PyDGGS中的DGGSElementCode对象;value,新属性值;band_id,波段索引 - 返回值:bool型数据 - setValue(coord,value,band_id) - 功能:根据格网编码设置属性值 - 参数:coord,PyDGGS中的Geocoords对象;value,新属性值;band_id,波段索引 - 返回值:bool型数据 - deepCopy() - 功能:深拷贝图层对象 - 参数:无 - 返回值:PyDGGS的DGGSFieldLayer对象 ##### 4.2.2.2 DGGSFieldBand - getBandID() - 功能:获取波段的索引 - 参数:无 - 返回值:波段的索引值 - getNoDataValue() - 功能:获取波段的无效值 - 参数:无 - 返回值:波段的无效值 - setNoDataValue(no_value) - 功能:设置波段的无效值 - 参数:no_value无效值 - 返回值:bool型数据 - getData(code) - 功能:根据格网编码获取单个属性值 - 参数:code,PyDGGS中的DGGSElementCode对象 - 返回值:code对应位置的属性值 - getData(coord) - 功能:根据经纬度获取单个属性值 - 参数:coord,PyDGGS中的Geocoords对象 - 返回值:coord对应位置的属性值 - setData(code,value) - 功能:根据格网编码设置属性值 - 参数:code,PyDGGS中的DGGSElementCode对象;value,新属性值 - 返回值:bool型数据 - setData(coord,value) - 功能:根据格网编码设置属性值 - 参数:coord,PyDGGS中的Geocoords对象;value,新属性值 - 返回值:bool型数据 - deepCopy() - 功能:深拷贝图层对象 - 参数:无 - 返回值:PyDGGS的DGGSFieldBand对象 #### 4.2.3 DGGSFeature ##### 4.2.3.1 DGGSFeatureClass - createFeature() - 功能:创建一个新的要素对象。 - 参数:无 - 返回值:PyDGGS的DGGSFeature类对象。 - getGridType() - 功能:获取图层的格网类型。 - 参数:无 - 返回值:PyDGGS中的DGGSGridType常量。 - getLevel() - 功能:获取图层的层级。 - 参数:无 - 返回值:格网层级,int型数据。 - getGeometryType() - 功能:获取图层的几何类型。 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量。 - getElementType() - 功能:获取图层的要素类型。 - 参数:无 - 返回值:PyDGGS的DGGSElementType常量。 ##### 4.2.3.2 DGGSFeatureLayer - getFeatureClass() - 功能:获取该图层的FeatureClass对象 - 参数:无 - 返回值:PyDGGS的DGGSFeatureClass类对象 - getLevel() - 功能:获取图层的格网层级 - 参数:无 - 返回值:int型格网层级 - getFeature(feature_id) - 功能:根据要素id获取要素对象 - 参数:要素id - 返回值:PyDGGS的DGGSFeature类对象 - addFeature(feature) - 功能:添加要素到图层 - 参数:feature,PyDGGS的DGGSFeature类对象 - 返回值:bool型数据 - eraseFeature(feature_id) - 功能:根据feature_id删除图层的指定要素对象 - 参数:feature_id,要素索引 - 返回值:bool型数据 - getFeatureCount() - 功能:获取图层中的要素数量 - 参数:无 - 返回值:图层的要素数量 - loadFromFile(feature_file) - 功能:从外部文件中导入数据到图层 - 参数:feature_file,geojson格式的文件名 - 返回值:无 - saveToFile(feature_file) - 功能:将图层数据保存至文件中 - 参数:feature_file,geojson格式的文件名 - 返回值:无 ##### 4.2.3.3 DGGSFeature - setFID(feature_id) - 功能:设置要素对象的索引 - 参数:要素对象的索引 - 返回值:无 - getFID() - 功能:获取要素对象的索引 - 参数:无 - 返回值:要素类对象的索引 - setGeometry(geometry) - 功能:设置要素对象的几何属性 - 参数:geometry,PyDGGS中的DGGSGeometry类对象 - 返回值:bool型数据 - getGeometry() - 功能:获取要素对象的几何属性 - 参数:无 - 返回值:PyDGGS中的DGGSGeometry类对象 - getLevel() - 功能:获取要素对象的格网层级 - 参数:无 - 返回值:int型的格网层级 - getElementType() - 功能:获取要素对象的格网要素类型 - 参数:无 - 返回值:PyDGGS的DGGSElementType常量 - getGeomType() - 功能:获取要素对象的几何类型 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量 - getGridType() - 功能:获取要素对象的格网类型 - 参数:无 - 返回值:PyDGGS的DGGSGridType常量 ##### 4.2.3.4 DGGSGeometry - getShapeType() - 功能:获取要素对象的几何类型 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量 - getGridCodeByIndex(code_index) - 功能:根据索引获取几何对象的指定格网编码 - 参数:格网编码索引 - 返回值:PyDGGS的DGGSElementCode类对象 - addGridCode(code) - 功能:添加单个格网编码到几何对象中 - 参数:code,PyDGGS的DGGSElementCode类对象 - 返回值:bool型数据 - setGridCount(grid_count) - 功能:设置几何对象的格网编码数量 - 参数:grid_count,格网数量 - 返回值:bool型数据 - getGridCount() - 功能:获取几何对象的格网编码数量 - 参数:无 - 返回值:int型的格网数量 - Equals(geometry) - 功能:判断另一几何对象是否与本几何对象相同 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:bool型数据 - deepCopy(geometry) - 功能:复制另一几何对象数据到本对象 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:无 - getGridType() - 功能:获取要素对象的格网类型 - 参数:无 - 返回值:PyDGGS的DGGSGridType常量 ##### 4.2.3.5 DGGSPoint - getShapeType() - 功能:获取要素对象的几何类型 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量 - getGridCodeByIndex(code_index) - 功能:根据索引获取几何对象的指定格网编码 - 参数:格网编码索引 - 返回值:PyDGGS的DGGSElementCode类对象 - addGridCode(code) - 功能:添加单个格网编码到几何对象中 - 参数:code,PyDGGS的DGGSElementCode类对象 - 返回值:bool型数据 - setGridCount(grid_count) - 功能:设置几何对象的格网编码数量 - 参数:grid_count,格网数量 - 返回值:bool型数据 - getGridCount() - 功能:获取几何对象的格网编码数量 - 参数:无 - 返回值:int型的格网数量 - Equals(geometry) - 功能:判断另一几何对象是否与本几何对象相同 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:bool型数据 - deepCopy(geometry) - 功能:复制另一几何对象数据到本对象 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:无 - getGridType() - 功能:获取要素对象的格网类型 - 参数:无 - 返回值:PyDGGS的DGGSGridType常量 ##### 4.2.3.6 DGGSPolyLine - getShapeType() - 功能:获取要素对象的几何类型 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量 - getGridCodeByIndex(code_index) - 功能:根据索引获取几何对象的指定格网编码 - 参数:格网编码索引 - 返回值:PyDGGS的DGGSElementCode类对象 - addGridCode(code) - 功能:添加单个格网编码到几何对象中 - 参数:code,PyDGGS的DGGSElementCode类对象 - 返回值:bool型数据 - setGridCount(grid_count) - 功能:设置几何对象的格网编码数量 - 参数:grid_count,格网数量 - 返回值:bool型数据 - getGridCount() - 功能:获取几何对象的格网编码数量 - 参数:无 - 返回值:int型的格网数量 - Equals(geometry) - 功能:判断另一几何对象是否与本几何对象相同 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:bool型数据 - deepCopy(geometry) - 功能:复制另一几何对象数据到本对象 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:无 - getGridType() - 功能:获取要素对象的格网类型 - 参数:无 - 返回值:PyDGGS的DGGSGridType常量 ##### 4.2.3.7 DGGSPolygon - getShapeType() - 功能:获取要素对象的几何类型 - 参数:无 - 返回值:PyDGGS的DGGSGeometryType常量 - getGridCodeByIndex(code_index) - 功能:根据索引获取几何对象的指定格网编码 - 参数:格网编码索引 - 返回值:PyDGGS的DGGSElementCode类对象 - addGridCode(code) - 功能:添加单个格网编码到几何对象中 - 参数:code,PyDGGS的DGGSElementCode类对象 - 返回值:bool型数据 - setGridCount(grid_count) - 功能:设置几何对象的格网编码数量 - 参数:grid_count,格网数量 - 返回值:bool型数据 - getGridCount() - 功能:获取几何对象的格网编码数量 - 参数:无 - 返回值:int型的格网数量 - Equals(geometry) - 功能:判断另一几何对象是否与本几何对象相同 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:bool型数据 - deepCopy(geometry) - 功能:复制另一几何对象数据到本对象 - 参数:geometry,PyDGGS的DGGSGeometry类对象 - 返回值:无 - getGridType() - 功能:获取要素对象的格网类型 - 参数:无 - 返回值:PyDGGS的DGGSGridType常量 #### 4.2.4 DGGSBase - code2Id(code) - 功能:将格网编码转化为id索引 - 参数:code,PyDGGS的DGGSElementCode类对象 - 返回值:长整型的索引值 - id2Code(id,code) - 功能:将格网id索引转化为格网编码 - 参数:id,长整型的索引值,code,PyDGGS的DGGSElementCode类对象 - 返回值:无,使用获取的格网编码修改实参的code - maxRow(level) - 功能:获取当前层级的格点、格边、格元的行数 - 参数:level,格网的层级 - 返回值:长整型的格元行数 - fMaxCol(level,grid_type) - 功能:获取当前层级下,该格网类型下的格元列数 - 参数:level,格网的层级;grid_type,格网类型,为PyDGGS的DGGSGridType常量 - 返回值:长整型的格元列数 - eMaxCol(level,grid_type) - 功能:获取当前层级下,该格网类型下的格边列数 - 参数:level,格网的层级;grid_type,格网类型,为PyDGGS的DGGSGridType常量 - 返回值:长整型的格边列数 - vMaxCol(level,grid_type) - 功能:获取当前层级下,该格网类型下的格点列数 - 参数:level,格网的层级;grid_type,格网类型,为PyDGGS的DGGSGridType常量 - 返回值:长整型的格点列数 #### 4.2.5 IDGGSFieldPyramid ##### 4.2.5.1 IDGGSFieldPyramidKernel - getTileCodes() - 功能:获取指定层级在当前范围内的所有瓦片。 - 参数:level,层级,spaceBBox,空间范围,tileCodes,瓦片编码组,tileCount,瓦片数量 - 返回值:无。 - getTileSpaceBound() - 功能:根据瓦片编码获取瓦片的空间范围。 - 参数:tileCodes,瓦片编码;spaceBBox,空间范围 - 返回值:布尔值。 - getTileGridBound() - 功能:根据瓦片编码获取瓦片的格网范围。 - 参数:tileCodes,瓦片编码;tileBound,格网包围盒范围 - 返回值:布尔值。 - gridCodeToTileCode() - 功能:格网编码转瓦片编码。 - 参数:elementCode,格网编码;tileCode,瓦片编码 - 返回值:布尔值。 - CreateFieldPyramidObj() - 功能:创建FieldPyramidKernel类对象。 - 参数:pyramidSet,多分辨率参数 - 返回值:IFieldPyramidKernel类指针。 - DestroyFieldPyramidObj() - 功能:销毁FieldPyramidKernel类对象。 - 参数:pFieldPyramid,IFieldPyramidKernel类指针 - 返回值:无。 #### 4.2.6 LibGridTIFF ##### 4.2.6.1 GridTIFF - saveToFile() - 功能:将栅格数据保存为GridTIFF文件。 - 参数:fileName,文件名。 - 返回值:布尔值。 - loadFromFile() - 功能:从GridTIFF文件加载栅格数据。 - 参数:fileName,文件名。 - 返回值:布尔值。 - getParams() - 功能:获取GridTIFF参数。 - 参数:fileName,文件名。 - 返回值:布尔值。 - getTrans() - 功能:获取 GridTIFF 转换参数。 - 参数:无。 - 返回值:GridTIFF 转换参数。 - getSize() - 功能:获取行列数。 - 参数:无。 - 返回值:行列数。 - getNoValue() - 功能:获取无效值。 - 参数:无。 - 返回值:无效值。 - getBandCount() - 功能:获取波段数。 - 参数:无。 - 返回值:波段数。 - getDataType() - 功能:获取数据类型 - 参数:无。 - 返回值:数据类型。 - getBandValue() - 功能:获取波段值。 - 参数:bandIndex,波段索引。 - 返回值:波段值。 - setDataType() - 功能:设置数据类型。 - 参数:dataType,数据类型。 - 返回值:无。 - setBandValue() - 功能:设置波段值。 - 参数:bandIndex,波段索引;bandValue,波段值。 - 返回值:无。 - setTrans() - 功能:设置转换参数。 - 参数:trans,转换参数。 - 返回值:无。 - setSize() - 功能:设置大小。 - 参数:size,格网行列数。 - 返回值:无。 - setBandCount() - 功能:设置波段数。 - 参数:bandCount,波段数。 - 返回值:无。 ## 5 快速使用 ### 5.1 LibDGGSKernel #### 5.1.1 编译 - LibDGGSKernel为核心库,不需要依赖其他库 #### 5.1.2 运行 - 本程序为dll文件无需运行。 #### 5.1.3 注意事项 - LibDGGSKernel使用案例详见Example/Kernel。 ### 5.2 LibDGGSField #### 5.2.1 编译 - LibDGGSField依赖LibDGGSKernel库。 - *LibDGGSField内均为模板类,不需要编译* #### 5.2.2 运行 - 本程序无需运行。 ### 5.3 LibDGGSFeature #### 5.3.1 编译 - LibDGGSFeature依赖LibDGGSKernel和jsoncpp库。 - jsoncpp库已在3rdlibs和CMakeList中配置完成。 - *需先编译LibDGGSKernel,再编译使用LibDGGSFeature。* #### 5.3.2 运行 - 本程序为dll文件无需运行。 ### 5.4 LibDGGSFieldPyramid #### 5.4.1 编译 - LibDGGSFieldPyramid依赖LibDGGSKernel。 #### 5.4.2 运行 - 本程序为dll文件无需运行。 ### 5.5 LibGridTIFF #### 5.5.1 编译 - LibGridTIFF为独立库,不依赖于其他库。 #### 5.5.2 运行 - 本程序为dll文件无需运行。 ### 5.6 DGGSUtility #### 5.6.1 编译 - DGGSUtility依赖LibDGGSKernel、LibDGGSFeature、LibDGGSFieldPyramid、LibGridTIFF和gdal、jsoncpp库。 - gdal、jsoncpp库已在3rdlibs和CMakeList中配置完成。 - 用户可自行替换gdal、jsoncpp库,本案例使用gdal2.0.3,使用别的版本库可能会导致报错。 - *需先编译LibDGGSKernel、LibDGGSFeature、LibDGGSFieldPyramid、LibGridTIFF,再编译使用DGGSUtility。* #### 5.6.2 运行 1. 编译完成后在编译输出目录会生成DGGSUtility.exe。 2. 会将所需要LibDGGSKernel.dll、LibDGGSFeature.dll、gdal.dll、jsoncpp.dll拷贝至DGGSUtility.exe同级目录 3. 用户使用需将dll文件与exe放置在同一目录下。 #### 5.6.3 注意事项 - DGGSUtility使用可使用: Utility.exe Option parameter.txt运行。 - 参数文件格式样例: - 生成全球格网数据参数文件格式: option,功能选项;level,格网层级;gridType,格网类型;elementType,要素类型;outFileName,输出文件夹路径 ```text option:CreateGlobalGrid level:5 gridType:DGGS_ISEA4H elementType:Cell outFileName:gridFileName ``` - 生成局部格网数据参数文件格式: option,功能选项;level,格网层级;gridType,格网类型;elementType,要素类型;inFileName,AABB包围盒文件路径;outFileName,输出文件路径 ```text option:CreatePartialGrid level:5 gridType:DGGS_ISEA4H elementType:Cell inFileName:boundFileName outFileName:gridFileName ``` - 矢量转格网参数文件格式: option,功能选项;level,格网层级;gridType,格网类型;elementType,要素类型;inFileName,矢量文件路径;outFileName,输出文件路径 ```text option:Feature2Grid level:5 gridType:DGGS_ISEA4H elementType:Cell inFileName:shpFileName outFileName:gridFileName ``` - 连续场转格网参数文件格式: option,功能选项;gridType,格网类型;elementType,要素类型;inFileName,连续场文件路径;outFileName,输出文件夹路径 ```text option:Field2Grid gridType:DGGS_ISEA4H elementType:Cell inFileName:rasterFileName outFileName:gridFilePath ``` - 格网转矢量参数文件格式: option,功能选项;inFileName,格网文件路径;outFileName,输出文件路径 ```text option:Grid2Feature inFileName:gridFileName outFileName:shpFileName ``` - 格网转连续场参数文件格式: option,功能选项;gridType,格网类型;elementType,要素类型;inFileName,格网文件夹路径;outFileName,输出文件路径 ```text option:Grid2Field gridType:DGGS_ISEA4H elementType:Cell inFileName:gridFilePath outFileName:rasterFileName ``` - 生成多分辨率连续场数据参数文件格式: option,功能选项;inFileName,输入文件夹路径;outFileName,输出文件夹路径;minLevel,最小层级;maxLevel,最大层级;tileFileSize,输出瓦片文件大小 ```text option:CreateFieldPyramid inFileName:fieldPath outFileName:fieldPyramidPath minLevel:5 maxLevel:9 tileFileSize:2 ``` ### 5.7 DGGSViewer #### 5.6.1 编译 - DGGSViewer依赖LibDGGSKernel、LibDGGSFeature、LibGridTIFF和gdal、jsoncpp、SDL2、SDL2_ttf、SDL2_image和OpenGL库。 - gdal、jsoncpp、SDL2、SDL2_ttf、SDL2_image库和OpenGL3已在3rdlibs和CMakeList中配置完成。 - 用户可自行替换gdal、jsoncpp库,本案例使用gdal2.0.3,使用别的版本库可能会导致报错。 - *需先编译LibDGGSKernel、LibDGGSFeature、LibGridTIFF,再编译使用DGGSViewer。* #### 5.6.2 运行 1. 编译完成后在编译输出目录会生成DGGSViewer.exe。 2. 程序会将所需要dll与DGGSViewer.exe拷贝到out路径下。 3. 如需迁移使用,用户使用需将dll文件与exe放置在同一目录下。 #### 5.6.3 注意事项 ##### 键盘快捷键 | 快捷键 | 功能 | |--------|------| | TAB | 显示/隐藏快捷键帮助 | | 1-7 | 切换色带类型 | | G | 显示/隐藏经纬网 | | L | 显示/隐藏经纬度标注 | | O | 打开单个文件 | | Shift+O | 打开多个文件 | | R | 重置视图 | | F | 全屏切换 | | ↑/↓ | 调整数据透明度 | | Q | 退出程序 | ##### 鼠标操作 - 左键拖拽:旋转地球 - 滚轮:缩放视图 - 左键点击:获取点击位置的经纬度坐标 ## 6 Example用法示例 ### 6.1 C++代码用法示例 #### 6.1.1 Kernel 展示LibDGGSKernel库中decode(格网编码转经纬度)、encode(经纬度转格网编码)及query(拓扑查询)三个接口的具体使用方法。相关的代码示例可在Example/cpp/Kernel/KernelExample.cpp中详细查看 ##### 6.1.1.1 编译 - Kernel依赖LibDGGSKernel库。 - *需先编译LibDGGSKernel,再编译使用KernelExample。* ##### 6.1.1.2 运行 1. 编译完成后在编译输出目录会生成KernelExampl.exe。 2. 所需要LibDGGSKernel.dll会自动拷贝至KernelExampl.exe同级目录。 3. 可直接在代码中运行或单独运行exe文件 #### 6.1.2 Field 展示LibDGGSField库中创建图层、更新图层属性、查找图层属性的具体方法。相关的代码示例可在Example/cpp/Field/FieldExample.cpp中详细查看 ##### 6.1.2.1 编译 - Field依赖LibDGGSKernel库,因LibDGGSField为模板库,故包含相关文件即可。 - *需先编译LibDGGSKernel,再编译使用Field。* ##### 6.1.1.2 运行 1. 编译完成后在编译输出目录会生成FieldExampl.exe。 2. 所需要LibDGGSKernel.dll会自动拷贝至FieldExampl.exe同级目录。 3. 可直接在代码中运行或单独运行exe文件 #### 6.1.3 Feature 展示LibDGGSFeature库中创建图层、添加要素对象、删除图层对象、更新图层对象的具体方法。相关的代码示例可在Example/cpp/Feature/FeatureExample.cpp中详细查看 ##### 6.1.2.1 编译 - Field依赖LibDGGSKernel库,因LibDGGSField为模板库,故包含相关文件即可。 - *需先编译LibDGGSKernel,再编译使用Field。* ##### 6.1.1.2 运行 1. 编译完成后在编译输出目录会生成FieldExampl.exe。 2. 所需要LibDGGSKernel.dll会自动拷贝至FieldExampl.exe同级目录。 3. 可直接在代码中运行或单独运行exe文件 ### 6.2 Python代码用法示例 #### 6.2.1 Kernel 相关的代码示例可在Example/python/Kernel/kernel_example.py中详细查看.展示LibDGGSKernel库中decode(格网编码转经纬度)、encode(经纬度转格网编码)及query(拓扑查询)三个接口的具体使用方法。 #### 6.2.2 Feature 相关的代码示例可在Example/python/Feature/feature_example.py中详细查看,展示LibDGGSFeature库中创建图层、创建要素、添加要素对象、删除图层对象、更新图层对象的具体方法。 #### 6.2.3 Field 相关的代码示例可在Example/python/Field/field_example.py中详细查看,展示LibDGGSField库中创建图层、更新图层属性、查找图层属性的具体方法。 ## 7 贡献名单 开发单位:南京师范大学地理科学学院 项目负责人:周良辰 教授 开发人员:(排名不分先后) 韩宇、李宇龙、练文杰、林川、刘光鑫、刘坤、路承帅、史凯华、王文博、许德朋、郑森源、赵宇飞、赵志鹏、周慧君、周昱倩 联系方式:zhoulch@njnu.edu.cn ## 8 参考文献 1. Zheng S, Zhou L, Lu C, et al. A GPU-Based Integration Method from Raster Data to a Hexagonal Discrete Global Grid[J]. Remote Sensing. 2024, DOI: https://doi.org/10.3390/rs16112022. 2. Zhou L, Lian W, Zhang Y, et al. A topology preserving gridding method for vector features in discrete global grid systems[J]. ISPRS International Journal of Geo-Information, 2020, 9(3):168. 3. Zhou L, Lian W, Lv G, et al. Efficient encoding and decoding algorithm for triangular discrete global grid based on Hybrid Transformation Strategy[J], COMPUTERS ENVIRONMENT AND URBAN SYSTEMS, 2018,68:110~120 4. Lin B, Zhou L, Xu, D, et al. A discrete global grid system for earth system modeling[J], INTERNATIONAL JOURNAL OF GEOGRAPHICAL INFORMATION SCIENCE, 2017, 32(4):711~737 5. Zhou L, Lin B, Lv G, et al. Distortion distribution and convergence analysis of spherical diamond discrete grids[J]. The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, 2013,40:89-93. 6. Wang W, Zhou H, Zheng S, et al. Ocean surface currents estimated from satellite remote sensing data based on a global hexagonal grid[J]. International Journal of Digital Earth, 2023, 16(1):1073-1093. 7. Wang W, Zhou H, Zheng S, et al. Extraction of ocean tidal information based on global equal-area grid and satellite altimeter data[J]. International Journal of Digital Earth, 2022, 15(1):2440-2467. 8. Wang W, Zhou L, Zhu A X, et al. Isoline extraction based on a global hexagonal grid[J]. Cartography and Geographic Information Science,2024:1-15. 9. 周良辰,盛业华,林冰仙,闾国年,赵志鹏.球面菱形离散格网正二十面体剖分法[J].测绘学报,2014,12:1293-1299. 10. 林冰仙, 许德朋, 盛业华, 闾国年, 周良辰. 正二十面体球面菱形离散格网的编码模型及其映射方法[J]. 测绘学报, 2016(b12):23-31. 11. 仲旸, 于佳民, 周良辰. 基于六边形全球离散格网的海陆空图幅整合算法[J]. 遥感技术与应用, 2023, 38(3):662-670.