# OpenUTSC
**Repository Path**: zhoulch/OpenUTSC
## Basic Information
- **Project Name**: OpenUTSC
- **Description**: OpenUTSC 多尺度时间编码基础算法库
- **Primary Language**: Unknown
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2024-10-16
- **Last Updated**: 2025-08-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OpenUTSC 多尺度时间编码基础算法库
[](http://dky.njnu.edu.cn/)[]()

## 1 概述
地球演化了约45亿年,留下了大量的地质数据,这些数据暗含着地球演化的规律和机制,透露了地球历史上的各种重要事件和过程,是为人类未来的发展提供方向的重要科学依据。时间是串联和组织这些数据的有效手段。对地球上物质和生命的演化过程进行数据库构建和系统化表达是地学信息化领域长期以来的热点研究内容。时空数据不仅具有大量、不同数据类型和不同结构多样的特征,而且代表了高度动态的特征、多时间尺度和多维度。通过时间编码,实现地质和地理过程中时空现象的查询、挖掘和分析相关越来越受到数字地学界的关注内容。
然而,地质时间和通用地理时间的尺度差异巨大,上至十亿年,下至毫秒。在进行跨学科研究时,不同尺度的时间将导致精度丢失和时间冗余的问题。产生这一问题的根本原因在于,当前面向地理的地理信息领域缺乏多尺度时间表达机制,对于如地质数据这类时间差异极大的多源数据,难以实现时间尺度上的统一化表达。这一困境,限制了时间编码在地理信息科学、地球系统科学中的应用。
有鉴于此,本项目提供了一个开源的面向深时数字地球的多尺度时间编码模型核心库与相应算法——OpenUTSC。
极大尺度时间分段编码(UTSC)是一种新颖的面向地质时间和地理时间间尺度差异极大的时间编码模型,系统地解决了地质时间尺度巨大差异和时间表达多样性的问题。UTSC将时间编码分为三个不同的部分--Base、Level和Codes--允许在不同尺度上保持统一结构的可变长度编码。该模型支持稳定高效的编码和解码,同时支持时间数据的分层遍历、邻域搜索和关系计算。该编码方法在表达各种尺度的地球科学时间方面的可行性、灵活性和有效性,为整合多源、多尺度数据和促进地球深时背景下的知识发现奠定基础。
## 2 理论基础
OpenUTSC的理论基础核心在于对广泛尺度的时间要素的统一分割与统一编码方法,该方法实现了对地质时间与地理时间的快速剖分与统一编码,并构建了一种新型的时间数据模型。在此基础上,OpenUTSC成功实现了跨极大尺度的地质时间与地理时间的无缝集成、编码转换、结构查询和拓扑计算等一系列时间基础操作。是对多尺度时间进行有效表达、为深时地球多源多尺度数据的挖掘提供途径。


## 3 结构组织
### 3.1 LibUTSCBase
OpenDGGS的基础结构、属性定义,是UTSCKernel的基础,包括:
- BaseDefine[命名空间头文件]——声明了NNU::UTSC命名空间,用以组织代码,规范使用。
- UTSCDefine[结构基础头文件]——定义OpenUTSC系统中的时间单位、时间明文、时间编码、拓扑类型等基础结构。
### 3.3 LibUTSCKernel
实现不同基准下(UTC、地质)时间的编码和解码、编码的拓扑查询、结构查询等功能
- IUTSCKernel[编码解码、拓扑关系查询接口类]--UTSC核心接口定义,包括encode(时间明文转时间编码),decode(时间编码转时间明文),structQuery(层次查询),topoQuery(拓扑查询)
## 4 类说明
### 4.1 C++代码类说明
#### 4.1.1 LibUTSCKernel
##### 4.1.1.1 IUTSCKernel
时间明文与时间编码相互转化、结构查询、拓扑查询的接口
###### 4.1.1.1.1 行为
- encode--时间明文转时间编码
- decode--时间编码时间明文
- structQuery--根据输入的查询类型(父结构关系、子结构关系、相邻结构关系)对时间点编码进行结构关系查询并返回相应的查询编码结果以及结果数量。
- topoQuery--查询两个时间对象(时间点与时间点、时间点与时间片段、时间片段与时间片段)之间的十三种拓扑关系
##### 4.1.1.2 UTSCImpl
继承IUTSCKernel
时间明文与时间编码相互转化、结构查询、拓扑查询接口的实现类
###### 4.1.1.2.1 行为
- 时间明文与时间编码相互转化、结构查询、拓扑查询接口的方法实现,不再赘述。
### 4.2 Python代码类说明
#### 4.2.1 LibUTSCKernel
- CreateKernelObj()
- 功能:创建一个IUTSCKernel对象
- 参数:无
- 返回值:返回一个IUTSCKernel对象
- DestroyKernelObj()
- 功能:销毁一个kernel这个IUTSCKernel对象
- 参数:kernel是一个IUTSCKernel对象
- 返回值:无
- encode(time, code)
- 功能:将时间明文转为时间编码
- 参数:time为PyUTSC的TimeElementCodeStruct对象,时间明文;code为PyUTSC的UTSCTime对象,时间编码,作为结果存储
- 返回值:转换成功与否。
- decode(code, time)
- 功能:将时间编码转化为时间明文
- 参数:code为PyUTSC的UTSCTime对象,时间编码;time为PyUTSC的TimeElementCodeStruct对象,时间明文,作为结果存储
- 返回值:转换成功与否。
- structQuery(type, code, query_result)
- 功能:根据输入的查询类型(父结构关系、子结构关系、相邻结构关系)对时间点编码进行结构关系查询并返回相应的查询编码结果
- 参数:type为PyUTSC的UTSCStructType枚举量,结构查询类型;code为PyUTSC的UTSCElementCode对象,结构查询的目标时间编码;query_result为PyUTSC的TimeElementCodeStruct对象,结构查询的结果。
- 返回值:查询成功与否。
- topoQuery(code1,code2,type)
- 功能:查询两个时间对象(时间点与时间点、时间点与时间片段、时间片段与时间片段)之间的十三种拓扑关系
- 参数:code1为PyUTSC的TimeElementCodeStruct对象,拓扑查询目标1;code2为PyUTSC的TimeElementCodeStruct对象,拓扑查询目标2;type为整数类型,结构查询的方式。
- 返回值:两个时间对象间的拓扑关系。
## 5 快速使用
### 5.1 LibUTSCKernel
#### 5.1.1 编译
- LibUTSCKernel为核心库,不需要依赖其他库
#### 5.1.2 运行
- 本程序为dll文件无需运行。
#### 5.1.3 注意事项
- LibUTSCKernel使用案例详见Example。
## 6 Example用法示例
### 6.1 C++代码用法示例
#### 6.1.1 Example
展示LibUTSCKernel库中encode(时间明文转时间编码)、decode(时间编码转时间明文)、structQuery(结构关系查询)、topoQuery(拓扑关系查询)四个接口的具体使用方法。相关的代码示例可在Example/cpp/Example.cpp中详细查看
##### 6.1.1.1 编译
- Example依赖LibUTSCKernel库。
- *需先编译LibUTSCKernel,再编译使用Example。*
##### 6.1.1.2 运行
1. 编译完成后在编译输出目录会生成Exampl.exe。
2. 将所需的LibUTSCKernel.dll文件拷贝到Exampl.exe同级目录
3. 可直接在代码中运行或单独运行exe文件
### 6.2 Python代码用法示例
#### 6.2.1 Kernel
展示LibUTSCKernel库中encode(时间明文转时间编码)、decode(时间编码转时间明文)、structQuery(结构关系查询)、topoQuery(拓扑关系查询)四个接口的具体使用方法。相关的代码示例可在Example/python/example.py中详细查看
##### 6.1.1.1 编译
- example依赖PyUTSC库。
- *需先编译PyUTSC,再编译使用example。*
##### 6.1.1.2 运行
1. 将所需的PyUTSC.py文件和_PyUTSC.pyd文件拷贝到example.py同级目录
2. 直接在main.py中运行示例代码
## 7 贡献名单
开发单位:南京师范大学地理科学学院
项目负责人:周良辰 教授
开发人员:孙昊阳、郑森源、刘帅、史凯华
联系方式:zhoulch@njnu.edu.cn
## 8 参考文献