基于Geodatabase数据模型的数据归档
2007-04-17 11:47
302 查看
基于Geodatabase数据模型的数据归档
ArcGIS软件向用户提供了数据归档这样一个功能,不知大家是否体验过。最近由于工作的需要,我有幸接触了这一方面的知识。以前我常常为如何去实现历史数据的展示而苦恼,而现在通过Geodatabase模型提供的归档操作,就可以轻易地展现以前任意时刻的数据,并以当时的状态进行数据库操作,同时还可以查看任意特定要素在一个时间段里变化。这样一种变化让我有一些欣喜。下面让我们一起来了解一下数据归档的相关内容。(基于Geodatabase数据模型的版本机制)一、什么是数据归档?(What is Archiving ?)
Archiving provides the ability to store all temporal representations of a dataset, writing any changes made to an object to an associated archive table. This object model provides functionality to create historical versions which reference a specific moment in time.归档操作向用户提供了这样一个功能:将对归档的要素集(要素类)所做的任何编辑操作保存到相关联的archive 表。这种对象模型同时也允许用户创建特定时间的历史版本。
二、归档-如何工作?
1、 历史信息存储在Archive表中我们允许对某要素集(要素类)进行归档时,将会创建相应的Archive表,并Copy一份原有的数据。打开Archive表,我们发现其数据结构与原表数据结构并没有什么太大的变化,只是多了三个字段GDB_FROM_DATE(起始时间)、GDB_TO_DATE(终止时间)、GDB_ARCHIVE_OID(对象ID编号)
2、 所有对Default版本所作的变更都被归档
理解这一句话很重要,数据归档针对的对象是Default版本,所有其子版本所做的变更只有通过提交之后才会被归档,否则不会有什么变化。
3、 Archive表含有from和to日期属性
4、 Archive表可直接使用日期属性查询(两种查询方式):
A、 时间点查询(Moment in Time Query):显示某一时间点的所有记录.
B、 时间段查询:
从A时间点到B时间点的某一对象所有记录。
从A时间点到B时间点的所有记录。
5、 在ArcDesktop中如何操作:
这篇文档中有详细的介绍,大家可以参考:体验ArcGIS9.2的历史库功能
三、AE类图与接口
//assuming a reference to a SDE workspace exists
2IHistoricalWorkspace pHistWorksapce =mWorkspace as IHistoricalWorkspace;
3
4IHistoricalVersion pHistVersion = pHistWorksapce.FindHistoricalVersionByName(“VersionName”);
5
[/code]
2、 FeatureClass类与IHistoricalClass接口:
FeatureClass类继承了IHistoricalClass接口,通过IHistoricalClass接口我们可以很方便地得到该FeatureClass相应的归档对象。下面是C#示例代码:
1IArchivableClass pArchivableClass =pFeatureClass as IArchivableClass;
2
3//得到归档文件
4IFeatureLayer pNewFeatLayer=new FeatureLayerClass();
5
6pNewFeatLayer.FeatureClass = pArchivableClass.Archive as IFeatureClass;
7
8
3、EnumHistoricalMarker类与HistoricalVersionMarker类
历史版本从本质上来讲是历史标识(HistoricalVersionMarker),其在数据工作空间中的存在相当于一个事务性版本。通过IHistoricalMarker接口提供的方法AddHistoricalMarker可以实现历史标识的添加。下面是C#代码示例:
1 //assuming a reference to a SDE workspace exists
2
3 IHistoricalWorkspace historicalWorkspace = (IHistoricalWorkspace)sdeWorkspace;
4
5 IEnumHistoricalMarker enumHistoricalMarker = historicalWorkspace.HistoricalMarkers;
6
7 IHistoricalMarker historicalMarker = enumHistoricalMarker.Next();
8
9 while (historicalMarker != null)
10
11
相关文章推荐
- 基于Geodatabase数据模型的版本机制
- 基于Geodatabase数据模型的版本机制
- 用户权限设计(四)——基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展【转】
- 基于卫星数据的天气监测模型
- ios数据存储之--模型对象归档(NSKeyedArchiver、NSKeyedUnarchiver)
- 基于企业上下级关系的组织机构体系数据模型设计
- 基于JSON数据交换模型的实时支付系统设计和实现
- 基于谷歌draco项目的测试---三维模型数据压缩方案
- 基于TMF SID的高可扩展性数据模型
- Geodatabase数据模型
- JAVA并发编程(一)(基于计算机底层.jvm内存模型.mysql(数据搬运))
- NSCoding协议,遵循了NSCoding协议的数据模型,就可以利用归档进行数据存储了
- Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
- Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索、模型初探
- 基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展
- 基于K-Means模型的数据聚类(复习12)
- 基于PCA模型的数据降维(复习13)
- 基于Kinect v2+PCL的模型奶牛重建(上)——数据获取
- 基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展
- 基于逻辑的数据模型datalog 的递归应用 (论文摘要笔记)