span8
span4
域是一组定义允许值用于属性规则。他们使用,以确保数据的完整性约束的数据值。一个域可以在地理数据库中被定义为一种独特的实体,并且可以在任何要素类包含域定义地理数据库内被应用到任何属性。
有两种类型的地理数据库域(编码结构域和范围域)的并且两者都通过FME支持。经译码域本质上是多个有效的值的列表,而一个域范围是数字值的单个允许范围。
当读取一个地理数据库,FME必须解决域的选项。
当这个选项被选中的附加属性将被添加名为_
请注意: 如果可以,我们建议使用前面描述的地理数据库模板在这里。这通常比在FME特性类型中定义域更容易、更灵活。
FME有写信给现有的或创建新的地理数据库表的能力。因此,写地理数据库域时,工作流需求将趋于下降的三种情形之一的,:亚搏在线
这些方案将主要通过以下笔者参数来控制:
- 数据类型:coded_domain / range_domain
- 验证功能写参数值:是/否
尽管下面提及的情形,应当注意的是,使用一个XML文档的工作区(包含所需域定义)作为地理数据库写入器的模板,是写入地理数据库结构域的有效且高度推荐手段。有关使用架构导入XML文档的详细信息,请参阅Geodatabase作家文档。
场景1:使用现有域写入现有表
写入到一个现有的域字段中的任何数据,默认情况下,插入的是正常的。如表中已经存在,其属性(一个或多个)将已经用所需的域相关联,并且也没有必要设置任何参数来定义该连接。
然而,如果你希望验证输入的数据 - 例如,把它比作一个域定义,以确保其具有有效的属性值 - 那么你必须设置参数作家“验证功能,以写”为是。如果验证参数设置为否,则数据将传递到地理数据库没有错误,尽管一些数据值可能不符合域规则。
场景2:使用现有域写入新表
当创建一个新的表,它是使用现有的结构域,其需要与一个域相关联的属性应该被提供的数据类型coded_domain要么range_domain(根据其类型)在模式定义。然后单击属性宽度字段中的Edit按钮,并在“domain name”部分输入现有域的名称。
场景3:写入新表并创建新域
需要注意的是,我们通常建议您使用ArcGIS来创建和定义域,在插入新特性时使用FME来关联属性或验证数据。但是,使用FME可以创建域。此过程与使用现有域相同,直到打开编辑对话框为止。此时,您将检查“Create Domain”参数,输入一个新域名,并定义该域名的值。
注意,如果将“要编写的验证特性”参数设置为Yes,则将根据任何新定义的域自动验证传入的特性。
限制
在领域写作方面有一些限制。
首先,不可能对现有表进行写操作,也不可能创建与现有域的关联,或者创建一个全新的域。这是因为这个关联被包装在表定义中,而现有的表定义不能被FME更改。为了能够做到这一点,您需要删除现有的表并完全重新创建它。
其次,基于上述原因,创建域是一次性的转换。您可以将初始流程的数据类型设置为coded_domain/range_domain,但是后续的数据加载应该将数据类型更改为实际的数据类型(char、integer等)。
最后,动态创建域是不可能的。域定义应该在执行之前手动定义,而不是在工作空间过程中定义)。
下面的示例演示场景3:写入新表并创建新域。
道路(Autodesk AutoCAD DWG/DXF)
在上面的图像中,我们可以看到AutoCAD DWG的源路可视化。在autocad_layer格式属性中可以看到目标地理数据库域定义的值。
1.阅读源数据
使用Autodesk AutoCAD DWG/DXF从源AutoCAD DWG文件中读取道路特征几何图形受地理数据库域约束的值将从format属性autocad_layer中读取。在添加Autodesk AutoCAD DWG/DXF reader时,请确保将工作流选项设置为单个合并功能类型。亚搏在线这意味着我们将只获得一个阅读器特性类型来读取所有源数据。
此外,单击parameters按钮,并在Group Entities By section中选择Attribute Schema。
将阅读器添加到工作区画布后,双击阅读器并选择Format Attributes选项卡。向下滚动并选中autocad_layer旁边的复选框。单击OK。
2.将属性映射到域代码
使用AttributeValueMapper将来自源DWG的值映射到我们将应用于域定义的域代码。将AttributeValueMapper添加到画布并打开parameters对话框。选择autocad_layer作为源属性,输入StreetCategory作为目标属性。输入99作为默认值,因为这是我们将用于未知街道类型的域代码。在参数对话框的值映射部分,输入如下图所示的值:
2.(备用)将属性映射到已解析的域值
作为上述步骤的替代方法,可以使用AttributeManager从源DWG文件获取值,并基于域定义解析值将其映射到域定义。为此,向工作区添加一个AttributeManager并打开parameters对话框。将autocad_layer重命名为streetcategory_resolve—域的解析版本(您需要输入StreetCategory_resolved)。
当您的工作流属于场景#1(使用现有域定义写入现有表)或场景#2(使用现有域写入地理数据库中的新表亚搏在线)时,上述方法最适用。在这两个场景中,都假定不知道域定义中包含的实际域代码,而是知道解析后的值。但是,在创建域时也可以使用此过程。
3.编写特性并创建域
将ESRI地理数据库(文件Geodb)写入器添加到工作空间,从读取器复制模式并指定将数据写到其中的输出地理数据库(即域)。单击parameters选项卡并展开Advanced部分。将验证特性设置为Yes。此设置将确保传入的源数据符合我们的域定义。添加之后,将AttributeValueMapper的输出(或者根据工作空间遵循的工作流,AttributeManager)连接到地理数据库写入器。亚搏在线
双击写入器,在General选项卡下为输出特性类/表输入一个更有意义的名称(即街道)。接下来,单击User Attributes选项卡,在Name下面,将autocad_layer属性更改为StreetCategory,并将类型设置为coded_domain。
单击“编辑”按钮,将打开“编码域”对话框。输入域名(即,选中“创建域”旁边的复选框,然后输入域定义的数据类型。最后,输入域定义的代码和解析后的值。
最后,确保From_HBlock设置为char类型。
保存并运行工作区。
利用域码的工作空间
利用解析域值的工作空间
*上述示例中使用的ESRI地理数据库(文件Geodb)读写器/编写器要求用户能够使用ArcGIS的授权版本。有关所需ArcGIS许可级别的更多信息,请参见FME地理数据库格式需要ArcGIS许可类型。
©2019安全亚搏在线软件公司|法律