http://www.esrichina-bj.cn/old../library/arcnews16/Metadata.htm

http://www.esrichina-bj.cn/old../library/arcnews13/new13-MATEDATA.htm

http://resources.esri.com/help/9.3/ArcGISDesktop/dotnet/4981b7d8-a5b0-4955-826e-5e25352718db.htm

ArcCatlog自带了两个元数据编辑器,分别为FGDC元数据编辑器,ISO元数据编辑器。分别符合FGDC标准和ISO标准。关于FGDC元数据标准的详细信息,请查看 www.fgdc.gov/metadata

除了以上两个元数据编辑器,用户还可以定制自己的元数据编辑器。定制元数据的方法为编写实现esriCore、IMetadataEditor接口的类,然后做成dll或者独立运行的exe文件,实现对元数据进行编辑。

IMetaDataEditor接口中包含一个属性和一个方法:1、Name属性用来设置该元数据编辑器的名称;2、Edit方法在ArcCatlog调用Metadata Editor的时候被调用。一般在这个方法里面调用一个编辑界面,使用户可以在界面中编辑数据,然后保存到属性中,如果Edit方法返回为true,那么ArcCatlog就会更新元数据。

新建一个VB的Active DLL工程,如图1所示:

图 1 :新建 ActiveX DLL 工程

添加对ESRI Object Library的引用,如下图2所示:

图2:添加对ESRI Object Library的引用

用下面代码添加对ImetadataEditor的引用:

Implements esriCore.IMetadataEditor

VB开发环境会自动为该类添加IMetadataEditor的一个属性和方法,如下面代码所示:

1、Private Property Get IMetadataEditor_Name() As String

‘设置元数据编辑器名字

IMetadataEditor_Name = "ESRI中国元数据编辑器"

End Property

该属性的Get方法将被ArcCatlog调用,得到元数据编辑器的名字,供用户对不同的元数据编辑器进行选择。

2、Private Function IMetadataEditor_Edit(ByVal props As esriCore.IPropertySet, ByVal hWnd As esriCore.OLE_HANDLE) As Boolean

‘拦截编辑事件

Set g_pPropSet = metadata ‘将全局变量g_pPropSet指向传入的元数据

simpleDialog.Show vbModal ‘显示编辑对话框

Set g_pPropSet = Nothing ‘编辑完成,释放全局变量

IMetadataEditor_Edit = g_bModified ‘返回是否已经编辑

End Function

该方法将在用户点击编辑元数据工具时被ArcCatalog调用,第一个参数的类型为IPropertySet,该参数就是用户所选择的空间数据的元数据,该参数由ArcCatlog传入,里面包含了元数据的标签和元数据的值,比如:("idinfo/citation/citeinfo/title", "北京一级道路")。将全局变量g_pPropSet指向metadata,使编辑对话框可以对元数据进行存取操作。

编辑界面显示前,用IPropertySet的GetProperty方法读取g_pPropSet中得元数据,显示在编辑界面中供用户对元数据进行修改。修改完成后,用IPropertySet的SetProperty方法保存修改到g_pPropSet。

如果用户需要添加自定义的元数据标签,那么也可以使用IPropertySet的SetProperty方法直接添加到g_pPropSet,ArcCatlog会自动将自定义的元数据保存,比如要添加输入人员的名字,那么可以直接使用g_pPropSet. SetProperty(“name”,”UserName”),将该元数据标签和值添加到IPropertySet中。

其中要注意的是,FGDC元数据标准对数据类型和关键字等类型有特别的规定,比如数据类型只能从如下类型中选择:Live Data and Maps、Downloadable Data、Offline Data、Static Map Images、Other Documents、Applications、Clearinghouses、Downloadable Data。保存到元数据distinfo/resdesc标签的值必须是上述几个数据之一。可以通过下拉框让用户对这些值进行选择,为了符合中文习惯,可以用两个数组对元数据进行替换,使界面显示中文,当用户选择数据后,通过索引找到相应的数据类型的关键字存入元数据标签。

该AcitveX DLL编写完成后,需要注册后才能被ArcCatlog调用。第一步使用regsvr32将该DLL进行注册,第二步将该类注册到注册表中相应的目录,可以使用ESRI提供的专门的工具进行注册,该工具在%ARCGISHOME%\bin\categories.exe,界面如图3所示:

图3、注册到Metadata Editor目录

运行该工具后,选中Metadata Editors目录,然后按Add Object按钮,选中编写完成的DLL就可以完成注册。移除已经注册的DLL用Remove Object按钮。

注册完成后,可以在ArcCatlog中看到多了一个元数据编辑器。选择Tools->Options,出来一个选择元数据编辑器界面,如图4所示:

图4:选择元数据编辑器

选中新添加的FGDC元数据编辑器为系统默认的元数据编辑器。点击工具栏上的元数据编辑按钮,如图5所示:

图5:编辑元数据按钮

ArcCatlog会自动调用刚才注册的DLL,显示自定义的元数据编辑器,如图6所示:

图6:自定义元数据编辑器界面

通过实现IMetadataEditor接口,可以方便地对元数据编辑器进行定制。使开发者有机会定制元数据修改界面,使元数据编辑更加符合用户的需求,并且可以添加自定义的元数据标签,保存用户自定义的元数据。

  • 关于元数据

元数据被称为关于数据的数据,比较贴切的反映了元数据对数据的特征描述职能。元数据的发布与共享为我们交换和共享空间数据提供了高效的手段。元数据要很好地描述数据,就必须具有清晰的结构和规范的术语,通常,这得通过相应的标准加以保证。比较著名的元数据标准有美国联邦地理数据委员会(Federal GeoGraphic Data Committee,简称FGDC)的《地理空间元数据的内容标准》和国际标准化组织(ISO)的《ISO 19115 Geographic Information -- Metadata》。ArcGIS 8.2对FGDC和ISO的元数据标准都支持。尽管许多国家和地区都在进度不同地制定自己的空间数据元数据标准,但总的来说是在向ISO的标准靠拢,这种趋势将有助于消除在全球范围内共享空间数据的障碍。ArcGIS现在只直接提供了对FGDC和ISO标准的支持,但不同标准的元数据在ArcGIS中的表示和管理是可以客户化的。其方法在本文的后半部分将会给出。

  • ArcCatalog中的元数据管理

ArcCatalog中以XML形式储存元数据。我们知道,XML(eXtensible Markup Language )已经成为一种工业标准,在Internet环境下,基于XML的数据表示可以很好地在不同的系统和平台间进行交互。与HTML不同的是,XML可以通过定义不同的标记(Tags)给数据赋予不同的语义。在ArcCatalog中对元数据中不同元素(elements)进行描述的XML元素是通过文档类型定义(DTD)完成的。而FGDC和ISO的XML元素没有重叠。因此在同一个元数据文档中可以同时出现FGDC和ISO的元数据元素,只不过这样用ArcCatalog中FGDC元数据编辑器就看不到以ISO格式表达的元数据项,反之亦然。

在ArcCatalog中引入了元数据的同步机制。所谓同步,是指当我们在ArcCatalog中创建或改变数据时,其对应的元数据将自动同步创建或改变。ArcCatalog中,缺省情况下是当我们切换到Metadata Tab时自动进行元数据的创建或修改。有时,当数据及其元数据都已创建完毕并已经对外发布,我们不希望元数据再意外地被改变。为此,ArcCatalog中提供了关闭自动更改元数据的选项。缺省情况下,此选项为开。当关闭此选项后,元数据的同步将置为手动。实际上,在描述元数据的XML中,有一个属性为“Sync”(即同步)。通常情况下,Sync被置为“TRUE”,如:

同步器被触发后即检查该属性,若为“TRUE”,则更改元数据,否则不动。

  • XSL处理器

XSL棗扩展的样式表语言,与XML配合,用于定义XML的显示表达方式。ArcCatalog创建的元数据以XML形式存储,但当你看到元数据时,这已经是一个动态的HTML页面了。这里起作用的是ArcCatalog中内置的XSL处理器。

XSL样式表将对应的XML元素提出放到DHTML的标记(Tags)下。所以,如果我们要改变元数据在ArcCatalog中的表达形式,只需要改变对应的样式表即可。对于同一元数据,我们可以根据不同的元数据浏览权限或需要,给出不同的XSL样式表,这样,不同的部门或数据使用者,只要得到不同的XSL样式表,看到的就是不同部分的元数据内容,并且显示形式也可能不一样。

  • 元数据客户化

在ArcCatalog的元数据系统中有几个部分是可以客户化的。

1) 客户化XSL样式表

XSL样式表和XML对应起来可以描述任何自定义的元数据项,同时,在客户化元数据编辑器中也可以对自定义的元数据项进行编辑。看下面的例子:

注意上面斜体的<myorigin> </myorigin>及其中间所夹的斜体楷书文字“自定义元数据项内容”。有了在XSL中定义的<myorigin>项名,对应的XML中即可用来描述自己的元数据项内容。上面的XSL文档中,出现了几个XSL的元素:xsl:value-of, xsl:for-each等。用这些XSL元素以控制XML文档中数据元素的抽取对象和次序。定义好的XSL文档可直接拷贝到ArcGIS Desktop的安装目录下的Metadata\Stylesheets子目录即可。对于特定的元数据标准及其显示风格的客户化,要求我们熟悉XML的表达形式,同时对要客户化的对象必须有十分深入的了解方可下手。

2) 元数据编辑器(Metadata Editor)

不同的元数据标准,我们可以自行定义对应的元数据编辑器。即使是对FGDC或ISO标准的元数据,我们也可以按照自己的需要(譬如说:只允许用户修改某15项元数据项的内容,其它元数据项根本不在编辑器中出现),定义客户化的元数据编辑器。

创建客户化元数据编辑器的第一步,是要实现IMetadataEditor接口。IMetadataEditor接口中,需要客户化的有两项:

  • NAME属性
  • EDIT函数

Edit方法的返回的是一个Boolean值,以表示元数据是否已被修改。

第二步:设计一个编辑对话用FORM,根据所要编辑的元数据项的多少和内容长短需要设计FORM。这件事本身再简单不过。关键是在FORM对应的程序中,我们要有相应的代码:

以上客户化Project应编译为DLL,然后将其注册,并用ArcGIS Desktop提供的工具程序Categories.exe加载。在ArcCatalog中就可以使用该客户化元数据编辑器了。

3) 其它可客户化的部分

除了前面讨论的XSL样式表和元数据编辑器可以客户化外,我们还可以客户化元数据的导入和导出工具:Metadata Importor,Metadata Exportor,以及元数据同步器等。我们将另外撰文加以介绍和讨论。

如何扩展ArcGIS中的元数据编辑器的更多相关文章

  1. ArcGIS中添加进自定义的ttf字符标记符号

    原文:ArcGIS中添加进自定义的ttf字符标记符号 ArcGIS系统中的样式可能不能满足实际生产需要,为了实现快速制图,可自定义一些样式,以便重复利用. 1.   制作的符号库 使用 FontCre ...

  2. ArcGIS中影像与影像,影像与点云之间的配准

    地图配准可分为影像配准和空间配准.影像配准的对象是raster图,譬如TIFF图.配准后的图可以保存为ESRI GRID, TIFF,或ERDAS IMAGINE格式.空间配准(Spatial Adj ...

  3. OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa

    元数据最本质.最抽象的定义为:data about data (关于数据的数据).它是一种广泛存在的现象,在许多领域有其具体的定义和应用. JDBC中的元数据,有数据库元数据(DatabaseMeta ...

  4. 介绍ArcGIS中各种数据的打开方法——mxd(地图文档)

    1.加载地图文档 在ArcGIS中,以mxd作为扩展名的文件叫地图文档. 地图文档中只是包含图层的引用,即存储当前地图的图层路径.符号.状态.修饰等信息,并不存储真实的数据层. ArcGIS Map中 ...

  5. arcgis中的Join(合并连接)和Relate(关联连接)

    arcgis中的Join(合并连接)和Relate(关联连接) 一.区别 1.连接关系不一样. Relate(关联连接)方式连接的两个表之间的记录可以是“一对一”.“多对一”.“一对多”的关系 Joi ...

  6. arcgis中栅格矢量计算技巧收藏

    ​ ​编辑 一.计算面积 ( 可以帮我们计算小班面积 )添加 AREA 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED -->把下 ...

  7. ArcGIS中的坐标系统定义与投影转换【转】

    ArcGIS中的坐标系统定义与投影转换 坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统 ...

  8. arcgis中DEM如何生成等高线

    地形图指比例尺大于1∶100万的着重表示地形的普通地图(根据经纬度进行分幅,常用有1:100万,1:50万,1比25万,1:15万,1:10万,1:5万等等).由于制图的区域范围比较小,因此能比较精确 ...

  9. 【转】+【举例】ArcGIS中的坐标系统定义与投影转换

    背景知识: UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的.虽然我们仍然将其看作与"高斯-克吕格"相似的坐标系统,但实际上 ...

随机推荐

  1. 跑RFCN

    按照这个来http://blog.csdn.net/sinat_30071459/article/details/53202977

  2. Ztree 多选,显示勾选的路径

    项目要求,需要向后台传递已经勾选的路径,如 l1-a, l1-l3-c,l1-l3-d;(如果是全选状态则只传递全选状态的路径,不传子节点). 具体可以参考jQ  Ztree 的 v3.5 版本 Me ...

  3. Gym-101615C-Fear Factoring(数论)

    分析 题意是求 L - R之间的数的因数和 我们知道如果对于一个数 i ( i < k = sqrt(R)),那么一定有一个数 R/i 也是R的因数 遍历 i = 2 - k,然后对于每一个 i ...

  4. 洛谷P1421 小玉买文具

    这道题其实就是编程最基础的逻辑,没什么好讲的输入,输出就完了,非常简单! code: #include<cstdio> #include<iostream> using nam ...

  5. 201621123079《java程序设计》第六周作业总结

    作业06-接口.内部类 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 2. 书面作业 1. c ...

  6. CSS3---关于文本

    1.text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 2.但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须定 ...

  7. InnoDB体系架构总结(一)

    缓冲池:    是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响.在数据库中读取的页数据会存放到缓冲池中,下次再读取相同页的时候,会首先判断该页是否在缓冲池中.对于数据库中页的修改操 ...

  8. tornado框架基础05-模板继承、UImodul和UImethods

    01 模板继承 父模板​ <html lang="en"> <head>     <meta charset="UTF-8"> ...

  9. 数据结构实验1:C++实现静态顺序表类

    写了3个多小时,还是太慢了.太菜了! 图1 程序运行演示截图1 实验1 1.1 实验目的 熟练掌握线性表的顺序存储结构. 熟练掌握顺序表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的顺序 ...

  10. 【C#】读书笔记

    一,C#对象初始化语法: Product p = new Product() { Name = "小黄人", Price = , Description = "机智&qu ...