span8
span4
有关本文的最新版本以及示例,请参阅Geodatabase转换教程:
读取geodatabase子类型和域只需将包含子类型和域字段的功能类型添加到您的工作空间中。例如,“water_distribution_lines”特性类有一个字段“Diameter”映射到一个名为“Diameter”的代码域:
当您将此功能类型添加到FME时,您可以在地理数据库阅读器上选择“解析子类型”和“解析域”。
域:当选中此选项时,将添加一个名为_的附加属性
子类型:这填充geodb_subtype_name具有描述性值的format属性。
1.将地理数据库阅读器添加到您的工作空间并单击“Parameters”。
2.检查“解析域”和/或“解析子类型”。
3.源模式现在包含用户定义的“Diameter”字段和“Diameter_resolve”字段。
FME有写现有表或创建新表的选项,但当一个域被添加到混合中,有许多场景:
这些场景将由一系列参数控制,即:
表不存在:是/否
数据类型:coded_domain / range_domain
验证功能写:是/否
1.首先,首先检查Drop表上的设置,Truncate表上的设置。
2.如果希望验证传入数据,则必须将写入器参数“validate Features to Write”设置为Yes。
1.如果需要,删除现有表。
2.接下来,需要与域关联的属性应该在模式定义中给出数据类型coded_domain或range_domain(取决于其类型):
3.点击code_domain(上图)旁边的编辑按钮,取消“创建域”框,并填写现有域的名称:
通常我们建议您使用ArcGIS来创建和定义域,并在插入新特性时简单地使用FME来关联属性或验证数据。但是,使用FME可以创建域。
此过程与使用现有域相同,直到打开编辑对话框。此时,您将检查“创建域”,输入一个新域名,并定义该域的代码和描述。
由于子类型只应用于单个特性类,因此不可能创建新表并将其与现有子类型关联。因此,场景为:
这些场景将由一系列参数控制,即:
表不存在:是/否
数据类型:子类型/ subtype_codes
验证要编写的特性:是/否
1.首先检查Drop表的值和Truncate表的参数。
当写入具有现有子类型的表时,不需要设置写入器参数“Validate Features to Write”。具有未定义的子类型值的特性将被拒绝,出现以下错误:
错误
“
同样,建议您使用ArcGIS来创建和定义子类型,并在插入新特性时简单地使用FME来输入子类型代码值。但是,使用FME可以创建子类型。
1.如果需要,删除现有表。
2.将包含子类型的属性设置为“subtype_codes”类型:
3.点击编辑按钮(上图),输入子类型代码和描述:
目前FME不允许您根据特定的子类型关联不同的域。例如,在上面的示例中,您不能将范围域设置为0-50,000;50000 - 100000;10 -25万,并将其应用于小、中、大的公园亚型。您需要在ArcGIS中创建域:子类型关系来实现这一点。
当“使用现有域写入现有表”必须将域的代码传递给编写器,还是可以传递值?在传递值时,我很难使其正确工作,所以也许我必须在它们输入写入器之前将它们全部映射到代码?
在我的工作空间中,我将Smallworld集合中的值传递给ESRI SDE地理数据库中的一个表。这些值存在于writer特性类型的域中,我希望它们以代码的形式存储在writer特性类型中,但是我不知道如何使它工作。另外,在我的写入器特性类型属性中,我没有“格式参数”选项卡,只有“参数”、“用户属性”和“格式属性”。也许这是由于我将写入器添加到工作区的方式造成的。
你好@angela,
在编写现有域时,必须编写代码而不是描述性值。如果写入编码域(而不是范围域),可以将写入器特性类型属性保留为整数。这应该允许FME编写正确的代码。要从该值获取所需的代码,可以使用几个选项。
可以执行一个AttributeValueMapper,如上述文章所示。其他替代方案可以是DatabaseJoiner或SchemaMapper。
我希望这能有所帮助!
©2019安全亚搏在线软件公司法律