练习 3c:使用源属性分隔数据
本练习将介绍使用属性值来根据属性值分隔数据的两种方法。可以使用这两种方法创建空间 ETL 工具,用于对源数据进行分类并生成具有共同值的要素集。
第一种方法使用 ValueMapper 转换器作为查找表分隔工作空间中的数据并将数据发送到特定 AutoCAD 块定义。第二种方法将在使用 GML 数据集的“按属性输出”(Fanout By Attribute) 编写器参数进行写入时分隔数据并动态生成唯一要素类型。
使用 Workbench 执行以下任务:
- 添加 ValueMapper 转换器,然后将 COVER 字段中的特定属性值映射到存储在 AutoCAD 模板文件 (.dwg) 中的 AutoCAD 块定义。
- 显示块名称、块旋转和块参照(插入)实体的 AutoCAD 属性。
- 指定教程数据中包括的 AutoCAD 模板文件。
- 为 GML 数据集添加另一数据目标,并为 COVER 字段中的每个唯一值设置“按属性输出”(Fanout By Attribute) 参数。
创建工具箱和空间 ETL 工具
必须已启用 Data Interoperability 扩展模块。
- 启动 ArcMap。
- 单击标准 工具条上的目录窗口按钮 。
-
在位置文本框中输入 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs\,然后按 ENTER 键。
该位置已添加到目录树。
- 右键单击 birds_eggs 文件夹并单击新建 > 工具箱 。
- 右键单击工具箱,单击 重命名,然后输入 nests。
- 右键单击 nests 工具箱并单击新建 > 空间 ETL 工具。
将打开创建转换工作空间向导。
创建转换工作空间
选择 FME 阅读器
- 单击格式浏览按钮。
将打开 FME 阅读器库 对话框。
- 在搜索文本框中输入 gdb。
- 单击列出 Esri 地理数据库(基于文件) 格式的行并单击确定。
将关闭 FME 阅读器库 对话框。
- 单击下一步。
指定数据源
- 单击定位源数据浏览按钮。
将打开选择地理数据库 对话框。
- 导航到 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs\ 文件夹。
- 单击 nests.gdb 文件夹,然后单击打开。
将关闭选择地理数据库 对话框。
- 单击下一步接受地理数据库的默认阅读器参数。
选择 FME 编写器
- 单击格式浏览按钮。
将打开 FME 编写器库 对话框。
- 在搜索文本框中输入 dwg。
- 单击列出 Autodesk AutoCAD DWG/DXF 的行并单击确定。
将关闭 FME 编写器库 对话框。
- 单击下一步。
- 单击下一步接受 AutoCAD DWG 格式的默认参数。
创建工作空间
- 单击完成。
向导处理信息并启动 Workbench。
- 展开阅读器要素类型 NESTS 和编写器要素类型 NESTS。您将观察到源要素属性已直接映射到目标 AutoCAD 数据集。
添加 AttributeValueMapper 转换器
AttributeValueMapper 转换器将根据其他属性分配属性值,并将查找值存储在新属性中。
将特定 COVER 属性值映射到 AutoCAD 块名称,然后将查找值存储在名为 block_name 的属性中。
- 在转换器 窗口的搜索文本框中输入 valuem,然后按 ENTER 键。
-
右键单击 AttributeValueMapper。
AttributeValueMapper 转换器已添加到画布。
- 右键单击 AttributeValueMapper 转换器,然后在快捷菜单中单击插入其前。将启动 Workbench 向导。
- 单击下一步。
转换器会连接到阅读器和编写器要素类型。
- 单击 ValueMapper 转换器窗口上的属性按钮。
将打开 AttributeValueMapper 参数 对话框。
- 单击源属性箭头并选择 COVER 属性。
- 在新属性名称文本框中输入 block_name。
导入唯一值
您可以手动输入源输入值,也可以使用导入向导。本部分将向您说明如何使用导入向导。当目标值不可用时,如在本例中,您可以为“键”和“值”属性选择相同属性,然后创建 1:1 映射。之后可以编辑目标值,使其与存储在模板文件 (.dwg) 中的对应 AutoCAD 块名称匹配。
- 单击导入。
将启动 Workbench 向导。
- 确认将数据集设置为 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs\nests.gdb 数据源。您可以单击更改按钮查看设置,然后单击取消按钮关闭对话框。
- 单击下一步。
- 在选择要素类型 对话框中,单击要素类型 NEST 并单击下一步。
- 在键属性 对话框中,单击 COVER 属性并单击下一步。
- 在值属性 对话框中,单击值属性 COVER 并单击下一步。
- 在扫描属性值 对话框中,完成扫描数据后单击完成。
Workbench 显示消息:已读取 5 个查找条目。单击确定。
- 在默认值文本框中输入 LOVSK。
执行过程中,如果工具遇到 ValueMapper 查找表中未列出的属性值,则使用默认值。在本练习中,您指定存储在模板工程图中的 AutoCAD 块名称。
- 双击右侧一列中的每个值并将其替换为存储在模板工程图中的 AutoCAD 块名称。
-
单击确定。
将关闭 AttributeValueMapper 参数 对话框。
COVER 属性 | AutoCAD 块名称 |
---|---|
rock | KRYSS |
willow | BARRTR |
conifer | STOMPKT |
bare | LOVTR |
显示 AutoCAD 块属性
显示编写器要素类型的特定 AutoCAD 块属性允许您控制如何将块参照插入输出 AutoCAD (.dwg) 文件。
- 单击编写器要素类型 NESTS 上的属性按钮。
将打开要素类型属性 对话框。
- 单击格式属性选项卡。
- 选中复选框 autocad_block_name、autocad_entity 和 autocad_rotation。
-
单击确定。
将关闭要素类型属性 对话框。
连接显示的格式属性的输入
- 展开 ValueMapper 转换器和 NESTS 编写器要素类型的属性列表。平移至列表底部并进行以下连接:
- 将 ROTATION 属性连接到 autocad_rotation 格式属性。
这会将旋转值从源数据传送到 AutoCAD 块。
- 将 ROTATION 属性连接到 autocad_rotation 格式属性。
这会将在 AttributeValueMapper 查找表中映射的 block_name 值传送到 DWG 编写器。
- 右键单击 autocad_entity 输入(红色)箭头,然后单击快捷菜单上的连接常量。
将会连接一个新常量作为输入。
- 双击新建常量,然后输入 autocad_insert。
将 AutoCAD 实体指定为 autocad_insert 会为每个输出要素插入块参照。几何(或符号)由存储在您在下一部分中指定的 AutoCAD 模板文件 (.dwg) 中的块定义来定义。
注:将传送到 DWG 编写器要素类型的所有用户属性与每个要素的块参照一起插入为块属性。这是将 DWG 编写器“属性输出”(Attribute Output) 参数设置为忽略的结果。这实际上会忽略在模板文件中的块定义内找到的任何属性定义,并允许空间 ETL 工具控制将哪些属性写入工程图文件。
指定 AutoCAD 模板文件
AutoCAD 模板文件包含在 ValueMapper 查找表中指定的块定义。
将模板文件路径设置为指向教程文件夹中的 template.dwg 文件。
- 在导航器 窗口中,展开 [ACAD] 编写器要素类型,然后展开参数节点。
- 右键单击模板文件,然后在快捷菜单中单击编辑参数。
将打开编辑参数 对话框。
- 单击浏览 (...) 按钮并导航至文件夹 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs\template.dwg。
- 在选择模板文件 对话框中,单击 template.dwg 并单击打开。
- 在编辑参数 对话框中,单击确定。
保存和重命名工具
保存工作,退出 Workbench,然后在目录 窗口中重命名工具。
- 单击文件 > 保存保存工具。
- 单击文件 > 退出退出 Workbench。
- 右键单击目录 窗口中的新空间 ETL 工具,单击重命名,然后输入 Nests to AutoCAD。
打开并运行工具
打开工具,设置目标文件参数,然后运行工具。
- 在目录 窗口中,展开 Nests 工具箱 。
-
双击 Nests to AutoCAD 工具。
将打开 Nests to AutoCAD 对话框。
- 单击文件夹浏览按钮并导航到文件夹 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs。
- 在另存为 对话框的文件名文本框中输入 nests,然后单击保存。FME 编写器会将必要的文件扩展名追加到输出。
- 单击确定以运行工具。
此工具在后台执行转换。地图底部的进度条会显示工具的名称。工具执行完毕后,系统托盘中将显示一个弹出通知。您可以在结果 窗口中检查转换的详细信息。
向 ArcMap 添加数据
- 在目录 窗口中,展开 nests DWG 数据集,然后将点要素类拖动到 ArcMap 中以确认结果。
复制并重命名工具
复制工具并将其用作另一工具的基础,此工具的用途是使用“按属性输出”(Fanout By Attribute) 参数生成工程图文件和 GML 数据集。
- 在目录 窗口中,右键单击 Nests to AutoCAD 空间 ETL 工具,然后在快捷菜单上单击复制。
- 右键单击 Nests 工具箱,然后单击粘贴。
- 右键单击 Nests to AutoCAD (2) 工具,单击重命名,然后输入 Nests to AutoCAD and GML。
- 右键单击 Nests to AutoCAD and GML 工具并单击编辑。
将启动 Workbench。
添加 GML 的编写器
再添加一个编写器,用于创建 GML 数据集并将其连接到 ValueMapper 转换器输出。
- 在主菜单上,单击编写器 > 添加编写器。
将打开添加编写器 对话框。
- 单击格式浏览按钮,然后从 FME 编写器库 选择 GML (地理标记语言)。
- 单击数据集浏览按钮并导航到文件夹 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs。
- 在选择文件 对话框的文件名文本框中输入 nests,然后单击保存。FME 编写器会将必要的文件扩展名追加到输出。
- 导航到 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs\ 文件夹,在文件名文本框中输入 nests,然后单击保存。
- 单击确定。
Workbench 会提示您创建新要素类型。
- 单击否。
- 右键单击 AutoCAD 输出要素类型 NESTS,然后单击快捷菜单上的复制。
- 将 ValueMapper OUTPUT 连接到新目标要素类型的输入。
- 单击重复目标要素类型 NESTS 上的属性按钮。编辑完相关设置时,工具提示中会显示与上图类似的信息。
将打开要素类型属性 对话框。
- 在要素类型名称文本框中输入 NESTS_gml。
- 选中按属性输出复选框,单击右侧的箭头,然后选择 COVER。
“输出”设置会根据属性的值分割输出数据。数据是在运行时进行分割,而不是在工作空间中生成时分割。本练习使用它来根据 COVER 属性字段中的值生成输出。
- 单击数据集箭头并选择 nests [GML]。
-
单击确定。
将关闭要素类型属性 对话框。
设置 DWG 数据集的目标参数
已发布的参数是在用户运行工具时可供用户更改的任何参数(设置)。与大多数地理处理工具类似,参数在空间 ETL 工具对话框上以文本框形式显示。在导航器 窗口中,这些参数用紫色图标表示。
添加 GML 编写器后,您使用默认目标路径和文件名设置此参数。本部分用默认路径和文件名设置 DWG 数据集的此参数。
- 在导航器 窗口中,展开 [ACAD] 编写器要素类型,然后展开参数节点。
- 右键单击目标,然后在快捷菜单中单击编辑参数。
将打开编辑已发布的参数 对话框。
- 单击浏览 (...) 按钮并导航至文件夹 C:\arcgis\ArcTutor\Data Interoperability\birds_eggs。
- 在文件名文本框中输入 nests,然后单击保存。
- 单击确定关闭编辑已发布的参数 对话框。
保存并运行工具
- 单击文件 > 保存保存工具。
- 单击文件 > 退出退出 Workbench。
- 在目录 窗口中,展开 Nests 工具箱 。
-
双击 Nests to AutoCAD and GML 工具。
将打开 Nests to AutoCAD and GML 对话框。
- 单击确定。
此工具在后台执行转换。地图底部的进度条会显示工具的名称。工具执行完毕后,系统托盘中将显示一个弹出通知。您可以在结果 窗口中检查转换的详细信息。
向 ArcMap 添加数据
- 在目录 窗口中,将 nests GML 数据集拖动到 ArcMap 中以验证结果。
本练习已完成。