span8
span4
以上视频涵盖了理论使用地理数据库关系类简介,以及本文介绍的示例。
地理数据库附件是一种以特定文件(如图像、PDF或文本文档)的形式将附加信息与功能连接起来的方法。随着ArcGIS文档提到:
“例如,如果你有一个代表一座建筑的功能,你可以使用附件添加该建筑从多个角度拍摄的多张照片,以及包含该建筑的契约和税务信息的PDF文件。”
可以将一个或多个文件附着到要素,然后使用ArcGIS中的查询工具检索信息。
*本文中使用的ESRI File Geodatabase reader/writer需要ArcGIS的授权版本。有关所需的ArcGIS许可级别的更多信息,请参见FME地理数据库格式所需的ArcGIS许可证类型。
附件和FME
因为附件是由关系类处理的,所以FME能够轻松地创建这种连接。但是,附件表必须事先在ArcGIS中创建。关键是读取要附加到属性中的文件内容,并将该属性写入附件表中的数据字段。必须事先在ArcGIS中创建关系类。关键是读取要附加到属性中的文件内容,并将该属性写入附件表中的数据字段。
AttributeFileReader转换器或数据文件读取器可用于将文件的内容读入属性。对于数据文件读取器,请确保将读取器参数“一次读取整个文件”设置为“是”。Reader可用于将文件的内容读入属性。对于数据文件读取器,请确保将读取器参数“一次读取整个文件”设置为“是”。
接下来的练习将演示如何在添加附件时写入关系类。
附件.zip
注意:下载中提供的模板文件将允许我们写入已设置要素类、附件表和关系的地理数据库。通常,这必须事先在ArcGIS中设置。使用XML模板文件时,工作区只能运行一次,所有未来的翻译都需要从编写器中删除模板。
在下图中,我们看到了数据检查器中包含消防大厅、社区中心和图书馆数据的源GML文件的可视化。亚搏国际在线官网
以地理标记语言(GML)亚搏国际在线官网提供的消防站、社区中心、图书馆
在下面的图像中,我们看到了将用作附件的照片和PDF文件所在的系统路径的可视化。
在PointsOfInterest文件夹中的照片和pdf文件附件的路径。
对于这个练习,提供了一个开始的工作空间。
您将立即注意到工作区已经部分设置好了。源和目标模式对象已经就绪,可以进行读写操作。还有一些用于映射Reader和Writer模式的转换器。惟一缺少的是建立关系所需的转换器——添加它们是本练习的主要任务。但是,我们将得到一些预先定义好的变压器的帮助,这些变压器已经设置好并复制到书签中。
预定义变压器
1.下载附件文件夹
如上所述,关系类不能通过FME创建。因此,有必要在运行翻译之前确定功能之间的关系。对于这个演示,目标Geodatabase已经提供了所需的空特性类和已定义的关系(请参阅下载部分的attachments.zip)。下载并解压这个zip文件夹,因为它不仅包含所需的目标Geodatabase,还包含在工作流期间作为附件使用的必要文件。亚搏在线
2.阅读源数据
消防大厅、社区中心和图亚搏国际在线官网书馆几何图形使用GML阅读器从源兴趣点地理标记语言文件中读取。
目录和文件路径名阅读器用于读取将用作附件的图像和PDF文件的系统路径。尽管读取器已经作为开始工作区的一部分添加,但要确保每个读取器的源参数指向正确的数据集。
3.设置源属性以匹配目标架构
为了修改每个源数据集的属性以使它们与目标模式匹配,需要做一些额外的工作。
为FireHalls,这意味着使用AttributeManager重命名以下属性:
输入属性 | 输出属性 | 属性值 | 行动 |
的名字 | 描述 | 改名 | |
霍尔数 | 的名字 | 改名 | |
地址 | 街 | 改名 |
重命名FireHalls属性
为亚搏国际在线官网社区中心,这意味着使用AttributeManager修改以下属性:
输入属性 | 输出属性 | 属性值 | 行动 |
CentreName | 的名字 | 改名 | |
中心连衣裙 | 街 | 改名 | |
CentreURL | 网站 | 改名 | |
DocumentName | 描述 | 改名 | |
PostalCode | 未知的 | 设置值 |
重命名Comm亚搏国际在线官网unityCenter属性
为库,这意味着使用AttributeManager修改以下属性:
输入属性 | 输出属性 |
属性值 | 行动 |
LibraryName | 的名字 | 改名 | |
图书馆地址 | 街 | 改名 | |
LibraryURL | 网站 | 改名 | |
DocumentName | 描述 | 改名 | |
PostalCode | 未知的 | 设置值 |
重命名库属性
4.添加关系相关属性
FME需要被告知这些特征参与了关系类。为此,我们将使用AttributeCreator转换器。这个转换器可以在“要使用的转换器”书签中找到。如果有两个数据流(兴趣点和附件),就需要AttributeCreator的两个实例。
将转换器复制/移动到两个标题为“4”的浅棕色书签中。添加关系相关属性”。对于兴趣点(FireHalls, CommunityCentres和Libra亚搏国际在线官网ries特性类型),将所有三个现有的AttributeManager转换器连接到新的AttributeCreator。对于附件文件的路径(PATH特性类型),只需将目录和文件路径名读取器连接到第二个AttributeCreator。
添加并连接预定义的AttributeCreator后的工作区。
打开其中一个attributecreator的属性对话框,您将看到它所做的只是设置一个名为geodb_feature_has_relationships的格式属性。geodb_feature_has_relationships属性设置为yes,这是告诉FME这些特性参与关系所需要的全部内容。
属性geodb_要素_的_关系设置为“是”
每一组功能还需要一个ID号。假设一个不存在,我们可以用一个反变压器创建一个。同样,我们需要每个特性集一个实例,并且在“要使用的转换器”书签中已经有一个预定义的转换器。从书签中移动/复制Counter转换器,并在上一步中的每个AttributeCreator转换器之后连接它的一个实例。检查Counter参数,你会发现它正在创建一个名为geodb_oid的属性。
创建ID属性geodb_oid
5.连接模式
此时,特性已经准备好写入Geodatabase,所以您可以创建从Counter转换器到现有的AttributeRenamer转换器和PointsOfInterest__ATTACH特性类型的连接。
完整数据流
打开AttributeRenamer_POIType转换器的参数对话框。这里我们需要将fme_feature_type属性重命名为POIType,这样做的原因是确保特性的名称是源特性,这是在属性中维护的。在这种情况下,我们仍然会有消防厅、社区中心和图书馆。亚搏国际在线官网参数设置如下:
6.添加与关系相关的属性
现在,我们需要定义两组特性之间的关系,我们通过创建起始和目标ID号来实现这一点。同样,每个特性集需要一个实例,而且已经有两个预定义的转换器可以使用。将两个AttributeRenamer转换器(即AttributeRenamer_Origin和AttributeRenamer_Destination)从“transformer to Use”书签移动到黄色中间书签。从兴趣点(FireHalls, CommunityCentres和Libraries特性类型)的计数器到属性terenamer_orig亚搏国际在线官网in进行重复连接,从PATH计数器到属性terenamer_destination进行另一个重复连接:
添加关系相关属性后的工作区。
检查每个AttributeRenamer的参数。您将看到,每个都将新创建的ID重命名为Origin或Destination ID。FME将使用它来编写关系类。
7.建立关系信息
添加FeatureMerger变压器。这就是建立关系的方式。将Origin AttributeRenamer连接到Requestor端口,将Destination AttributeRenamer连接到Supplier端口。打开FeatureMerger的参数对话框。将Requestor属性设置为Name,将Supplier属性设置为path_rootname。
这样做的结果是,当附件的文件名(path_rootname)与兴趣点特性(name)的名称匹配时,数据被合并。
例如,如果我有一个兴趣点叫“大高的雕像”(源ID = 13),有一个名为“大高Statue.jpg”的文件(目的地ID = 22),那么结果将是一个功能(“大高的雕像”,起源ID = 13,目的地ID = 22),定义了这些特性之间的关系。
将其写入Relationship类时,它将在PointsOfInterest和PointsOfInterest_ATTACH表中定义这些功能之间的关系。
另一个需要处理的未决问题是,对于一个特定的兴趣点有多个附件。因此,在FeatureMerger参数对话框中,将“Process Duplicate Suppliers”改为Yes,并输入Docs作为要创建的列表。
特征合并参数
现在,当运行工作区时,对于具有多个附件的功能,多个文件存储在一个列表中,如下所示:
文档{0}.path\u文件名
文档{0}.geodb_rel_destination_oid
Docs{1}.path\u文件名
文档{1}.geodb_rel_destination_oid
我们现在需要做的是将这个列表分解成单独的特性—以便每个附件都有一个关系记录—这是通过ListExploder转换器完成的。在featuremerge之后插入一个ListExploder转换器,并将featuremerge的合并输出端口连接到ListExploder的输入。打开ListExploder参数对话框,选择Docs{}作为要爆炸的列表:
ListExploder参数
每个发送到FME Writer的特性都应该有一个指示几何类型的属性。在大多数情况下,您——用户——不需要知道这个属性,也不需要设置它。然而,在这里这些特征将被标记为点特征(即兴趣点),我们需要告诉FME它们实际上是非几何关系特征。因此,在ListExploder之后添加一个AttributeCreator转换器,并将AttributeCreator连接到ListExploder的Elements端口。
打开AttributeCreator的参数对话框,并使用它创建一个名为geodb_type的新属性。它的值应该是geodb_relationship。这将告诉FME将这些作为关系特性写入Geodatabase。
AttributeCreator参数跟随列表展开器。
现在可以将AttributeCreator_3连接到PointsOfInterest__ATTACHREL Writer要素类型。
8.设置附件表中的字段
目前我们正在编写特性之间的关系,但目标特性(附件)目前只是一个文件的引用,而不是文件本身。我们需要使用这些引用来读取附件文件的内容。预先定义的工作空间将为我们完成这一任务。查找“在附件表中设置字段”书签。
检查这些变压器在做什么。AttributeCopier正在做一些基本的模式映射,而StringConcatenator正在设置一个属性来告诉ArcGIS所附加的文件的类型。最后,AttributeFileReader使用从原始PATH Reader获得的文件名读取附件的内容。
将此书签的内容连接到主工作区(即,连接到附件计数器和书写器功能类型(兴趣点\附加)之间的连接)。删除任何现有连接到感兴趣的点。
9写入关系数据和附件
此时,我们应该检查(在Navigator窗口中)事务类型是否设置为Edit Session。
注意:提供的模板文件将允许我们写入已设置要素类、附件表和关系的地理数据库。通常,这必须事先在ArcGIS中设置。使用XML模板文件时,工作区只能运行一次,所有未来的翻译都需要从编写器中删除模板。
必须在编辑会话中写入关系类。现在保存并运行工作区(确保ArcGIS和Data Inspector已关闭,以避免任何数据锁问题)。当你检查ArcGIS中的PointsOfInterest功能时(记住它们是在名为City的功能集中),使用HTML PopUp工具查询它们。
使用HTML弹出工具查询ArcGIS中的兴趣点功能
你好@adi
很抱歉没能及时回复你。我个人还没有测试过建立基于GlobalID的关系。我怀疑如果这个功能被支持,它将在FME 2019。
就数据和附件被混在一起而言,这表明两个特性的连接没有完全正确地配置。如果您可以尝试使用单个附件及其目标特性进行测试,并尝试使它们正确连接(这就是填充关系的方式),那么应该可以解决这个问题。这发生在FeatureMerger中。还要注意的是,现在有什么类型的关系类?正如在下一篇文章中所概述的,一些关系类不需要写入relationship表。请参见关系背景部分:https://knowledge.亚搏在线safe.com/articles/28340/working-with-geodatabase-relationship-classes-atta.html
如果仍然有问题,如果你能发布一个你的数据/工作区的样本,我可以看一看。
©2019 S亚搏在线afe Software Inc |法律