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