论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
城市DLG数据库元数据组织与管理研究(四)
4.7.2.2元数据库更新
从元数据更新的角度本文将元数据的内容分为:(l)稳定的元数据,主要指一旦生成其元数据值就很少改变,如数据质量信息、空间参考信息、元数据参考信息及数据格式信息等。(2)可同步元数据,该部分元数据依赖于空间数据,数据更新后可同步元数据值就要进行相应的更新,否则就无法准确的描述该空间数据。(3)动态元数据,主要指数据更新信息元数据子集,该部分元数据内随着数据的不断更新而增长,是增量式元数据,该部分元数据值由系统生成,不允许修改。数据更新信息元数据子集包含数据更新方式、更新范围、更新内容和更新的资料源等信息,这些信息有助于数据生产和管理部门对城市DLG数据库进行数据更新控制,避免重复更新。城市DLG数据库各类元数据并非独立的,而是自上而下存在着一定的继承关系,因而元数据更新也不是独立进行的。如,当某个要素图层的数据被更新后,不但要更新要素类级元数据,还要进行数据库级元数据、要素集级元数据和图幅级元数据的更新。为维护元数据库与空间数据库的关联性,必要时一定要进行相应关联信息的更新。图幅级元数据更新情况比较复杂,在DLG数据库中DLG数据是无缝存储的,图幅所对应的是一定的空间位置和范围。图幅元数据的更新不但与数据更新内容、更新方式和更新范围有关还要考虑更新资料源。城市DLG数据库更新后,数据图层与图幅级元数据的关系及其复杂,同一图幅内不同的图层对应不同的图幅级元数据,同一图层内不同的范围对应不同的图幅级元数据。
4.73元数据库同步更新实现
4.73.1自动更新传播机制
自动更新传播就是当系统中一个对象发生改变时,其它与之关联或依赖它的对象将被通知利用其更新信息进行相应的操作及时更新自身信息以保持与相应对象的一致性和同步性,并维护二者之间的相关约束规则〔56]。自动更新传播是通过消息机制来实现的,无论何时当一个对象发生改变时,它将向与之关联的对象发送消息,通知它们自动更新。我们所考虑的主要问题是,当城市DLG数据库被更新时,如何向元数据库传播更新。在进行城市DLG数据库更新操作时必然会触发相应的Geodatabase数据模型对象事件,城市DLG数据库元数据组织与管理研究 (科教范文网http://fw.NSEAC.com编辑发布)
GeoDatabase类库为开发者提供了丰富的事件接口,通过事件接口我们就可以访问和处理这些对象事件,编写事件处理程序。事件处理程序用来监测和响应对象事件,事件处理本质上是一个对象通知其他对象发生了某事件的一个过程,所以可以应用事件处理程序进行城市DLG数据库与元数据库之间的更新传播。事件处理程序不可能独立存在,若要实现这些事件处理程序还需要一定机制的支持,可以通过支持这些事件处理的类扩展和工作空间扩展来实现更新的传播,它们是扩展Geodatabase数据模型行为的两种重要方式。所以本文将通过扩展GeedatabaS。数据模型行为,实现城市DLG元数据库的同步更新,也就说通过为DLG数据库进行行为建模,使其具有了自动更新其元数据库的行为功育旨。
4.73.2扩展GeoDatabase数据模型
Geodatabase数据模型引入了地理空间要素的行为、规则和关系,当处理Geodatabase中的要素时,对其基本的行为和必须满足的规则,无需通过程序编码来实现,对其特殊的行为和规则,则可以通过数据模型模型扩展进行客户化定义。
(1)要素类扩展
ArcInfo中最高形式的定制是创建自定义要素。要素某些复杂或特殊行为不能用现有的规则来表达是,可以通过要素类扩展 (FeatureClassExtensions)进行要素类特殊行为的定制。要素类是对对象类的继承,对象类没有空间特征,但每个对象类都有其属性、行为和规则。对象类的行为是用行为类来实现的,这些行为存储在一个动态链接库中,与C伽(组件对象模型)体系一致「51’。要素类扩展是对类扩展的继承。类扩展是一种最重要和最简单的扩展地理数据模型行为的(Geodatabase)方法。类扩展是一种自定义的方式是由于它基于要素类本身,通常类扩展提供以下几种功能:定义复杂的验证规则、处理编辑事件、增强属性对话框、自定义要素类渲染、自动生成表格和要素类的结构描述信息等。我们想要定制的要素类行为是,当要素类模式被更新时实现元数据库更新,涉及的事件接口为IobjectClasSSchemaEvents,要素类模式更新所触发的具体事件为:添加字段事件,当为一个对象类添加一个新字段时便触发该事件;删除字段事件,当删除一个对象类字段时便触发该事件。类扩展相对于应用定制有其优势,也有不足。类扩展在任何情况下都是有效的,并不依赖于具体的应用,但是一个对象类只能有一个类扩展,要实现多项功能只能进行代码融合。若要将定义的类扩展应用于城市DLG数据库中的要素类,需要经过以下配置:首先将该类扩展的COM组件注册到ESRI的组件分类管理器中,再将想要定制的要素类的参数EXTCLSID值设置为该COM组件的全球唯一标识码,那么该要素类就具有当其模式发生改变时自动更新与之相连的元数据库的行为了。
(2)Geodatabase工作空间扩展
工作空间扩展是扩展Geodatabase行为的另一种方法,这些自定义扩展功能应用于整个数据库而非单个数据集,就如类扩展,工作空间扩展也只能应用于地理数据模型(Geodatabase)。工作空间扩展支持自定义接口,可以实现工作空间编辑事件、版本事件和数据集创建、删除和重命名事件处理,隐藏用户无权浏览或编辑的要素集或要素类。版本是 ArcInf。软件在多用户关系数据库基础上,依托于ArcSDE服务而提供的长事务处理工具,有了版本机制就不用去复制或锁定空间数据库,一样能够实现Geodatabase的多用户编辑。所有的AreSDEGeodatabase均具有默Default)版本,所有版本的最原始的源就是Default版本。arogisg.1版本对存储在ArcSDE中的空间数据只提供版本编辑功能,到了9.2才增加了非版本化编辑功能,以及不完全版本化编辑功能。对ArcSDE数据库的编辑操作一般都是基于完全版本化的,如果不注册版本和注册为不完全版本化就会损失很多功能,如数据归档和数据库复制等。非版本编辑一般用于特殊情况下,如存在第三方客户端的情况下提供的一个解决方案。版本是Geodatabase的某时刻的状态,经过编辑后不同版本所表现的要素视图一般是不同的,只有Default版本的数据发生变化时才认为DLG数据库被更新了。ArcSDE能够通过提交版本更新的方式来维护和更新Default版本,也可以对其直接编辑。更新ArcSDE数据库中的数据时,一般都要先创建编辑版本,对编辑版本进行城市DLG数据库元数据组织与管理研究更新,确认更新无误后再提交给默认版本。但如果工作单元都是小规模的,也会直接对默认版本进行编辑更新。所以可以通过处理版本事件和工作空间编辑事件,及时响应城市DLG数据库数据更新,实现元数据库同步更新。针对上述两种情况分别定义了:Default版本提交更新工作空间扩展,用来实现版本事件处理序和Default版本编辑更新工作空间扩展,用来实现工作空间编辑事件处理程序。Defaul微本编辑更新 (转载自http://zw.NSEaC.com科教作文网)
Geodatabase各版本之间的本质区别在于行状态而不是数据库方案,数据库方案的变化不受版本限制,可以快速应用到Geodatabase的所有版本中。当为城市DLG数据库添加、删除或重命名要素类、要素集时,就会改变数据库方案并触发工作空间事件(添加数据集事件、删除数据集事件或重命名数据集事件),通过定义工作空间扩展可以处理这些事件,实现数据库方案更新时自动更新元数据库。只要城市 DLG数据库发上了上述三种变化,就会触发相应事件自动执行事件处理程序。如果添加的数37城市DLG数据库元数据组织与管理研究据集并不是我们所感兴趣或者只是一种辅助数据,便没有必要为其创建元数据,可以通过交互功能由用户确定要不要为该数据集创建元数据。
一般有两种方法配置工作空间扩展,一是注册到某个Geodatabase数据库中,它对所有访问该地理空间数据库所有用户有效;一是注册到ESRI的组件分类管理器中的 GeodatabaseworkspaceExtensions中,它对创建的所有Geodatabase有效。一般情况都采第一种注册方式,因为扩展功能都是针对特定的数据库而定制的。进行数据库连接时便会初始化己被注册的自定义工作空间扩展,当触发相应事件时自动执行该事件处理程序完成元数据库的更新。
4.73.3元数据库同步更新实现流程
元数据库同步更新是一个复杂的过程,除了扩展Geodatabase数据模型行为,本文还对己开发实现的图幅更新和任意范围更新功能进行了扩展,通过截获操作记录数据更新内容、更新范围和更新方式,元数据库更新时会读取这些更新信息并生成相应的元数据值。这些信息可以更好的反映城市DLG数据库的更新状况,有助于达到控制更新的目的,避免重复更新。元数据值的获取方式有两种,一是当用户完成对空间数据的更新后,程序自动获取需要的元数据值,一次性地完成所有可同步元数据值的提取并更新,可称为隐式同步更新,通常对要素类或要素集元数据的更新就是隐式同步更新;另一种方式就是在元数据同步更新时,需更新的元数据内容由用户提供,经过元数据内容的提取、转换后更新元数据,可称为交互同步更新,对图幅级元数据的更新通常采用上述两种方式的结合,但以交互同步更新方式为主。城市DLG数据库元数据组织与管理研究要素类扩展工作空间扩展