热门标签 | 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:添加历史标记


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


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

推荐阅读
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • 本文介绍如何在Access VBA中处理参数查询时将整数正确地传递给查询,避免因类型转换导致的数据类型不匹配错误。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
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社区 版权所有