热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Geodatabase10.2新特性——数据归档(DataArchiving)

Geodatabase10.2新特性(一)-ArcGIS技术研究-博客频道-CSDN.NEThttp:t.cnzYgspRCGeodatabase10.2新特性(二)Q&am


Geodatabase 10.2新特性(一) - ArcGIS技术研究 - 博客频道 - CSDN.NET http://t.cn/zYgspRC  
Geodatabase10.2新特性(二)Q&A - ArcGIS技术研究 - 博客频道 - CSDN.NET http://t.cn/zYeQntt  
ArcGIS历史归档:http://wenku.baidu.com/view/2d12324e852458fb770b56c3.html 


Geodatabase10.2的新特性在数据归档方面变化比较大:

Geodatabase archiving is now supported on data that has not been versioned.


Geodatabase10.2之前版本的数据归档:

1:将存储在ArcSDE的要素类注册版本(注册版本选择不打勾)

2:将注册版本的要素类Enable Archiving


Geodatabase10.2以后版本的数据归档

1:上面介绍的注册版本数据的数据归档

2:如果要素类不注册版本,也可以直接进行数据归档

3:ArcToolbox工具增加了两个关于数据归档的GP工具

本文就介绍一下,要素类不注册版本,在使用数据归档方面有什么变化。


****************************************************************************************************

1:我们直接将SDE里面的要素类base(非注册版本)进行Enable Archiving

那么对比起前注册版本数据进行Enable Archiving,数据库不会产生base_H这个,但是我们可以查看这个base表,里面也添加了GDB_FROM_DATE、GDB_TO_DATE、GDB_ARCHIVE_OID。

SQL> desc sde.CONTINENT 名称                                      是否为空? 类型
----------------------------------------- -------- --------------------

OBJECTID NOT NULL NUMBER(38)
CONTINENT NVARCHAR2(13)
SHAPE SDE.ST_GEOMETRY
GDB_FROM_DATE NOT NULL TIMESTAMP(6)
GDB_TO_DATE NOT NULL TIMESTAMP(6)
GDB_ARCHIVE_OID NOT NULL NUMBER(38)

但是将这个数据放 在ArcMap中查看属性表并没有看到这三个新家字段,我们可以看到,非注册版本数据进行数据归档,系统又创建了一个同名视图base_evw

SQL> desc sde.CONTINENT_EVW 名称                                      是否为空? 类型 ----------------------------------------- -------- ------------------- OBJECTID                                  NOT NULL NUMBER(38) CONTINENT                                          NVARCHAR2(13) SHAPE                                              SDE.ST_GEOMETRY

我们可以查看这个视图的创建SQL语句

CREATE OR REPLACE VIEW CONTINENT_EVW ASSELECT OBJECTID,CONTINENT,SHAPE FROM SDE.CONTINENT WHERE GDB_TO_DATE = to_timestamp('12.31.9999 23:59:59.000','mm.dd.yyyy HH24:MI:SS.FF3');

注意:Versioned views created in ArcGIS 10.2 or later releases follow the naming convention

_evw.

也就是说,我们桌面上看到的非版本数据进行数据归档其实就是一个多版本视图。

这里面有一个问题希望大家知晓:因为我在进行数据归档时候,时间字段的信息并不是我笔记本的时间,而且帮助上说的UTC时间。

It is important to understand how ArcGIS represents time when change is recorded. History can be recorded as either valid time, transaction time, or Coordinated Universal Time (UTC). Valid time is the actual moment at which a change occurred in the real world and is typically recorded by the user who is applying the change. Transaction time is the time an event was recorded in the database. Transaction times are generated automatically by the system. UTC is the primary standard used to regulate clocks and time over the Internet. For archiving on versioned data ArcGIS uses transaction time, which is based on the current server time, to record changes to the data when changes are saved or posted to the DEFAULT version. Transaction time and the time the event occurred in the real world are rarely the same time. Time will elapse between an event happening in the real world and its being recorded in the database. For example, a parcel is sold on May 14, 2006; however, the change is not recorded to the data until June 5, 2006. The transaction time of June 5, 2006, is recorded in the archive class for this change.When the edit occurs, ArcGIS will archive the transaction to the archive class. The difference between the time of the real-world event and the transaction time may seem insignificant, but it becomes more apparent when queries are performed against the archived information. Backlogs in editing and updating data are not uncommon in production systems, and they result in the time difference and lag between valid and transaction time.The difference between valid and transaction time is also an issue in situations where history is recorded in a multiuser environment with many different users or departments editing the database. The sequence in which changes are performed and logged in the database may not be the same order in which those changes occurred in the real world.Archiving on nonversioned data uses UTC to represent time. Changes to the data are recorded when edits are saved during an edit session.
最后一行,非版本数据归档使用了UTC时间。版本数据的归档还是服务器时间或者北京时间。

create table CONTINENT(  objectid        INTEGER not null,  continent       NVARCHAR2(13),  shape           ST_GEOMETRY,  gdb_from_date   TIMESTAMP(6) default sys_extract_utc(systimestamp) not null,  gdb_to_date     TIMESTAMP(6) default to_timestamp('12.31.9999 23:59:59.000000','mm.dd.yyyy HH24:MI:SS.FF6') not null,  gdb_archive_oid INTEGER not null)
Oracle数据库和SQL Server都是一样的使用UTC时间。

***************************************************************************

关于UTC时间

协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC。它从英文“Coordinated Universal Time”/法文“Temps Universel Cordonné”而来。中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。


可以简单理解:UTC时间=北京时间-8小时


更多参考:
UTC时间与北京时间的差多久:http://blog.csdn.net/dbafans/article/details/4393017
如何將 UTC 時間轉換為當地時間:http://support.microsoft.com/kb/884804/zh-tw

至于为什么Esri将非版本数据采用UTC时间,我现在也不太明白,帮助也没有写太多,但是这就出现了一个问题。

1:我对非版本数据进行数据归档,这个起始时间是UTC时间。

2:我进行数据编辑之前,要建立历史标记,这个历史标记的时间是服务器时间


3:进行相关数据编辑对要素的起始时间仍然是UTC时间。

那么在进行历史版本查询的时候,UTC时间和服务器时间差8个小时,肯定是查不到的。(所以,在建立历史标记的时候,可以自己减去8小时即可)

也可以直接修改操作系统的时区,但是个人认为这个方法不可取,毕竟系统记录的时间多为北京时间而不是UTC时间

关于这个问题,有可能出现个人理解的偏颇之处,仅供参考


****************************************************************

非版本数据的数据归档编辑跟版本数据一样

1:新创建的要素具有将 gdb_from_date 属性设置为存档操作的时间戳,将 gdb_to_date 属性设置为 12/31/9999 的属性值。
2:在编辑会话中更新的要素通过将 gdb_to_date 属性的属性值设置为存档操作的时间戳更新基础表中的相关的行和插入新行,为将 gdb_from_date 属性设置为存档操作的时间戳,将 gdb_to_date 属性设置为 12/31/9999 的属性值。
3:在编辑会话中删除的功能通过设置 gdb_to_date 属性值等于存档操作的时间戳更新基础表中的相关的行。


****************************************************************

而且我们也可以直接使用SQL进行数据编辑,这个时候,系统会自动对归档的起始时间以及归档ID进行维护

SQL> insert into CONTINENT(objectid,continent,shape) values(100,'aa',sde.ST_PolyFromText('polygon ((52 28,58 28,58 23,52 23,52 28))', 300002));已创建 1 行。SQL> commit;提交完成。SQL> select objectid,continent,gdb_from_date,gdb_to_date,gdb_archive_oid from continent where objectid=100; OBJECTID CONTINENT    GDB_FROM_DATE                    GDB_TO_DATE                    GDB_ARCHIVE_OID--------------------------------------- --------------------------- -------------------------------------  100 aa            28-4月 -13 07.10.22.350000 下午  31-12月-99 11.59.59.000000 下午        15 


****************************************************************

有好多用户反映,数据归档三个按钮,用时候比较麻烦,老是不知道怎么操作这些功能是可用的。


1:查看历史版本


2:添加归档类


3:添加历史标记


同样可以使用版本管理器来管理


**************************************************************** -------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
-------------------------------------------------------------------------------------------------------

推荐阅读
  • 转载:http:www.crazycoder.cnDataBaseIndex.html查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设 ... [详细]
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
  • 在Sqlserver数据库历代版本当中,系统数据库有四个,master,model,msdb,tempdbmaster----记录SQLServer系统的所有系统级信息。这包括实例范围的元数 ... [详细]
  • 这篇文章主要讲解了“SQLServer与Access数据库ASP代码有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深 ... [详细]
  • php5.3.x访问sqlserver2005
    由于项目需要,临时用php访问Sqlserver数据库,于是配置mssql扩展,但是无法访问,按照网上各种dll文件copy都不成功,最后终于发现是php版本问题,我的版本是php5.3 ... [详细]
  • 在RAC环境中如何管理日志(redologfile)组Tuesday,2004-09-1411:52Eygle      htt ... [详细]
  • 1.3.4ProfilerSQLServerProfiler是一个图形化的管理工具用于监督记录和检查SQLServer数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍1. ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • Java连接SqlServer2008数据库(转)
    Java连接SqlServer2008数据库首先下载JDBC:下载地址:http:www.microsoft.comzh-cndownloaddetails.aspx?id21599下载 ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • 在目标队列中对消息进行排队时出现异常。错误:15404,状态:19。CouldnotobtaininformationaboutWindowsNTgroupuserSERVER ... [详细]
  • 假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123 ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • 本文主要介绍关于数据库,sql,sqlserver的知识点,对【数据库——概述】和【数据库到底要怎么做】有兴趣的朋友可以看下由【用编程写诗】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的数据库相 ... [详细]
  • Oracle将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)----创建表Createtablet_user(Idnumber(6),use ... [详细]
author-avatar
sdlzq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有