GIS工程技术与项目管理

博客园 首页 新随笔 联系 订阅 管理
     ESRI公司于2006年11月9日全球同步发布了历史上重要的软件版本ArcGIS9.2,在该版本中,主要新增了以下四大功能(ESRI田昌莲):
  1. 第一大新功能:非版本编辑功能。多用户编辑可以在没有版本的情况下进行;
  2. 第二大新功能:版本数据复制功能。为分布式数据同步复制提供了便利;
  3. 第三大新功能:Oracle空间的SQL功能。对Oracle实现的geodatabase的空间sql接口完全支持;
  4. 第四大新功能:增强的Geodatabase。包括以下几点:
    (1)历史数据库功能
    (2)对大量的表面数据集有了很在的改变和提高
    (3)File-Based Geodatabase,突破了Access文件大小2G的限制,相当于增强的Personal Geodatabase。

       上面这些新功能,说实话我都很喜欢,有时间真要一个个都体验一下啊。废话少说,我们现在就开始验一下ArcGIS9.2带来的历史库功能吧。
   
        1、先装ArcGIS9.2 Desktop
        注意,要安装9.2,必须先全部卸载掉以前版本的所有软件,包括Desktop,ArcGIS Engine,ArcGIS Server等。

        2、安装SDE9.2。
       之前的版本的SDE是不支持历史库功能的。   
          如果你有安装包,没有授权文件,请到这里:http://www.cnblogs.com/watsonyin/archive/2007/02/09/646031.html

        3、准备数据。这里我导入一个很小的宗地层,用于测试,图层名称是sde.sde.zd。

        4、注册版本打开ArcCatalog,新建一个到默认版本的连接,然后选择该图层,点击右键,在弹出菜单中点击Register As Versioned,这一点与9.1版本中一样的,只有注册版本,才能进行下一步创“建历史库”

        5、创建历史库
      在ArcCatalog中选择该图层,点击右键,发现其中比9.1多了一项Archiving,包含两个子菜单,Enable Archiving和Disable Archiving。点击Enable Archiving,这时系统会自动为该图层创建一个对应的历史图层,历史图层的名称为SDE.SDE.ZD_H。我们在ArcCatalog中并不能看到该图层,这是因为它作了过滤的缘故。如果用ArcGIS9.1软件其它机器连接该数据,可以看到该图层其实与普通图层没什么两样。

          创建好的历史图层的数据是原图层的拷贝,但可以看到多了三个字段:GDB_FROM_DATE,GDB_TO_DATE,GDB_ARCHIVE_OID。看到这三个字段,马上就明白了其大致思路,前面两个字段际是指明了图形对象的存活时间,GDB_FROM_DATE即图形的创建时间,GDB_TO_DATE是图形的删除或修改时间。这与我以前用MO做历史库的思路如出一辙啊。图形的操作可分为增、删、改三种类型,修改又可以看成是先删除再新增一个图形对象,所以所有的操作又可归为增、删两种操作,这就是那两个字段的由来。至于GDB_ARCHIVE_OID,就不有解释了吧。

      6、启用历史编辑选项
      在ArcCatalog中,点击Tools菜单下的Options,在“选项”窗口中,切换到Geoprocessing页,选中Log geoprocessing operations to as historical model,如下图所示,这样我们在编辑图形时,编辑过程中产生的历史数据会自动记录到历史图层中。


      7、编辑图形
      下面我们可以进行编辑测试了。打开ArcMap,选择图层,断断续续的作一些编辑操作,以方便后面的体验。

      8、新建一个到历史数据库的连接
      在ArcCatalog或ArcMap的选择数据对话框中都可以完成。点击Add Spatail Database Connection,在新建连接窗口中点击Change按钮,会弹出如下窗口:

       我们选择The connection refers to a historical version,并选择是连接到历史标记还是指定一个时间点。

      9、历史数据浏览
       这是我们体验过程的关键方旅~
       连接建好了之后,在ArcMap我们用该连接打开数据sde.sde.zd。在ArcMap工具栏上点击右键,点击Geodabase History,会出现历史库工具条,如图
        该工具条有三个按钮,分别是:
       (1)Geodatabase History Viewer:即历史数据浏览工具。
       (2)Add Historical Archive:即添加历史图层到地图上。
      (3)Historical Marker Manager:即历史标记管理器。
        下面分别介绍这三个工具:

       9.1 Add Historical Archive
       先在TOC中选中一个图层,再点击该工具按钮,会将选中图层对应的历史图层添加到地图窗口中。可以看到,历史图层包括了编辑过程中产生的所有数据。查看属性,可以看到它的数据源为sde.SDE.ZD_H,还可以到字段列表中查看新增的字段情况。这人工具的作用并不是很大,因为我们浏览历史数据,并不需要添加历史图层,直接对现状图层进行操作就可以了。当然,通过编程扩展,历史图层可以发挥很大的作用,例如,可以通过属性过滤,查看某个历史时段,而不是某个时点内的数据情况。

       9.2 Historical Marker Manager
        所谓历史标记,其实就是对某一历史时点的文字描述,这样比单纯的看历史时间,更加容易理解,从而更加方便历史数据的浏览。在例子里,我创建了三个历史标签,分别是“初始状态”,“新建AB”,“删除A移动B”,这样就会一目了然。
      9.3 Geodatabase History Viewer
       点击它,会出现以下界面。如果你是用是历史连接添加数据,这个界面会处于不可用的状态。

        在Historical Date and Time中,可以选择一个历史标记,也可以选择一个具体的时间,点击Apply按钮,就可以查看该历史时点的数据了。其它的我想不用解释,看一下在不同历史时点的图形状况吧。
(时间:16:20:09 初始状态)


(时间:16:22:50 创建图形A、B)


(时间:16:26:06 删除图形A、移动B)

        通过这种方式,就可以轻松浏览任一历史时间的数据了。通过编程,我们还可以进行扩展,例如不同历史时刻的数据对比浏览等。



  
       终于在放假之前完成了这篇随笔,否则,我可能不会写它了,就像之前一直想写多线程的文章一样,到现在也没写呀。祝大家开开心心过个好年~

 

posted on 2007-02-09 17:36 watson 阅读(2564) 评论(16) 编辑 收藏 所属分类: GIS开发

评论

你好,我看了你的这篇文章,非常感谢您对我们这些初学者做出的贡献,谢谢,我有关问题想请问,为什么GEODATABASE HISTORY工具的The historical marker manager这个工具 为什么我的总是激活不了呢?看帮助文档也没有看出个所以然。谢谢啊。   回复  引用  查看    

#2楼 [楼主] 2007-10-09 08:42 watson

@shera
在arcmap中,左边是一个图层树,有三个tab,切换到source页,然后选择一个工作空间,你会发现The historical marker manager就可以用了   回复  引用  查看    

#3楼 2007-10-09 09:23 shera [未注册用户]

呵呵,谢谢楼主,太感谢了,我会了,唉,我瞎弄了两天呢,呵呵,太高兴了。谢谢   回复  引用  查看    

#4楼 2007-10-10 15:13 shera [未注册用户]

楼主,这里的时间字段只能是现在编辑的时间吗?我想整理以前的数据,如2003年,2004年,等,想把之前发生变化的情况都整理出来,可是历史数据是不能编辑的呀,我想使现在编辑的数据就是2003年的数据,然后依次下来。好像做不了哦,是我没有设置好吗?谢谢!   回复  引用  查看    

#5楼 [楼主] 2007-10-10 15:36 watson

那你通过历史库过滤得到2003年的数据,然后导到一个新的图层里编辑就可以了吧   回复  引用  查看    

#6楼 2007-10-10 21:06 shera [未注册用户]

恩,好的,谢谢,我试一下啊,如果有什么问题,或者不明白的在请教楼主了,谢谢啊。非常感谢!!   回复  引用  查看    

#7楼 2007-10-10 22:09 shera [未注册用户]

楼主啊,真不好意思,我还是不太会,又要麻烦你了。
我现在的数据就是2003年的数据,然后我导入GEODATABASE里面通过版本化和enable archiving之后,数据库里面GEO_FROM_DATA的时间显示的就是2007年,然后我有03年,04年,05年的变化情况。我想把这几年的变化都更新到数据库里面,然后通过年度建立历史版本,即每一年就是一个历史版本,可是我通过连接历史数据库的2003年度,图形没有了,也不能编辑,你说导出到一个新的图层里面编辑吗?那么在这个新的图层里面编辑不是和平时没有时间的数据是一样的吗,用不上GEODATABASE HISTORY这个工具了呀,可能我没有理解明白,不好意思啊,我太笨了,还请楼主帮我讲详细一点好吗,谢谢你啊,我向你的QQ发出了请求啊,你可一定要加我,呵呵,谢谢你   回复  引用  查看    

#8楼 [楼主] 2007-10-11 08:31 watson

历史数据是不能编辑的吧。你想编辑历史数据,我也不清楚怎么办~   回复  引用  查看    

#9楼 2007-10-11 09:25 shera [未注册用户]

我现在是想建立历史的数据库啊,把03年及以后几年的数据都存档起来,但可以清楚看到这个变化过程,让他们不是孤立的各自独成的数据库,而是以03年为默认的版本,之后的每个版本代表每年的数据库状态。这个不能编辑完成吗?困惑啊。楼主,你觉得这个可以实现吗,谢谢哦。   回复  引用  查看    

#10楼 2007-10-11 09:39 shera [未注册用户]

这个工具不是管理历史库吗?我其实是想把以前的数据放在历史库中,历史数据也有变化的,我想吧这些变化在历史库中体现出来,使他们的历史数据和变更数据都存储在这个库中,然后也可以体现这个最新的数据状态。其实我现在要做的就是对以前的数据进行整理了。我也不知道能不能实现,也怎么也做不出来。楼主,你怎么看的呢?谢谢你的帮助哦。谢谢。   回复  引用  查看    

#11楼 [楼主] 2007-10-11 10:37 watson

1、将2003年数据放入到一个图层中,假设图层名称为Layer2003
2、建立历史存档,这时历史库中只有2003年的数据,打上标签“2003年”
3、根据2004年的情况,编辑Layer2003,或使用自制的工具,将数据更新到2004年的状态,这时历史库中包含了2004年的数据,打上标签“2004年”
4、重复2-3,直到更新到2007年

通过上面步骤,就可以浏览任何年份的数据了   回复  引用  查看    

#12楼 2007-10-11 10:51 shera [未注册用户]

可是我一导进去2003年的数据,在数据库中时间默认还是2007-10-10的,不是2003年啊。   回复  引用  查看    

#13楼 2007-10-11 11:26 mistletoe [未注册用户]

时间分为两种,一种是事件实际发生的事件;一种是事务时间,就是你把数据导入到数据库里的时间。你的数据里2003属于前一种情况,而sde记录的总是后一种的。help文件里面有关于这个的介绍的,可以去看看   回复  引用  查看    

#14楼 [楼主] 2007-10-11 11:31 watson

mistletoe说的没错。你要想把事务时间改成2003年,那就调整服务器时间好了~
  回复  引用  查看    

#15楼 2007-10-11 14:46 shera [未注册用户]

好的,谢谢你们了,看来我的帮助文档是没有完全看明白的,我在琢磨琢磨。谢谢你们!
对了,我调整了服务器时间后,ARCGIS9.2就不能用了哦。折磨啊。   回复  引用  查看    

#1楼 2007-10-08 20:36 shera [未注册用户]
posted on 2008-04-11 15:26  飞羽  阅读(660)  评论(0编辑  收藏  举报