练习 6:关于配置标准构建器以根据自定义查询进行操作的快速入门指南
可以根据通过 ADO 或 ODBC 连接的几乎任何数据(数据不必位于地理数据库内)生成逻辑示意图。标准构建器通常用于根据执行选择或追踪操作后在地图中高亮显示的 GIS 要素生成逻辑示意图,但也可以将其配置为根据不在地理数据库中的数据或纯表格的非空间数据生成逻辑示意图。由于此配置需要直接向数据源写入 SQL 查询,所以用户必须具有编写 SQL 查询的经验并对数据及其结构有全面了解。在本练习中,您将了解如何创建和配置逻辑示意图模板以根据非空间的表格数据生成逻辑示意图。将使用的数据位于 Brazil.gdb 教程数据库中,该数据库位于 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data。将基于练习 1 中创建的 SchematicBuilderSamples 逻辑示意图数据集配置逻辑示意图模板。
本练习中的屏幕截图会显示在之前练习中创建的配置参数。这些练习不是本练习的先决条件。可以按照本练习中说明的步骤执行,不必先完成之前的练习。
浏览将使用的源数据
此配置的第一个阶段为理解数据并与数据建立连接,以便之后能够配置查询以使用这些数据。
- 启动 ArcCatalog 应用程序。
- 导航至 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data。
-
双击 Brazil.gdb 条目打开其内容。
此时,在“目录”窗口的“内容”选项卡中会出现三个以 ISP_ 为前缀的表。前缀 ISP 代表工厂内部。这些表中的记录描述了某些天然气工厂的内部工作结构。天然气工厂本身是作为几何网络组成部分的真实要素,它们位于 pipelines 要素数据集的 pug_PUG_gas_plants 要素类中。
-
双击 pipelines 要素数据集以显示几何网络要素类。
- 选择 pug_PUG_gas_plants 要素类并单击“预览”选项卡。
- 在“预览”选项卡底部的预览下拉列表中选择表以便查看数据。
-
使用滚动条进行滚动以便同时查看 NAME 和 PLANT_NMBER 字段。
注:
可能需要调整列的大小,以便同时查看这些列。
仅其中三个天然气工厂同时包含 PLANT_NUMBER 和 NAME 数据。此处的目的是希望 ArcMap 中的最终用户能够根据某个工厂的“名称”为其生成逻辑示意图(最终用户不需要知道 plant_number)。但您将很快发现,从 ISP_ 表查询记录时,必须要有 PLANT_NUMBER。因此,这两项都是该要素类的重要详细信息。
-
从“目录”树中选择 ISP_EQUIPMENTS 表。
预览 选项卡中将以表的形式进行显示。
-
使用滚动条在“预览”选项卡中滚动直到同时看到 NUMBER_ 和 PLANT_NUMBER 列。
NUMBER_ 列给出了每条记录的唯一编号。PLANT_NUMBER 列显示的是每条记录对应的天然气工厂。在配置期间要遵循的基本想法是,如果某用户需要查看工厂 Aracaui (plant_number = 101) 的逻辑示意图,您需运行一个查询以获取 PLANT_NUMBER 101 的所有 ISP_EQUIPMENTS 记录。
-
在“目录”树中选择 ISP_VALVES 并快速查看相应表。
此表的结构与先前表的结构基本相同,在该表中可找到 NUMBER_ 和 PLANT_NUMBER 列。
-
现在,在“目录”树中单击 ISP_PIPES 表。
此表是这个特定自定义查询应用程序的关键。此表将 ISP_EQUIPMENTS 记录和 ISP_VALVES 记录连接起来。
-
使用滚动条在“预览”选项卡中滚动直到同时看到 FROM_NODE_NUM 和 TO_NODE_NUM 列。
对于此表中的每一行(工厂内部的单个管道),可以根据对应列中的值(与 ISP_EQUIPMENTS 或 ISP_VALVES 表中 Number_ 列的值相匹配)了解连接的起始和目标位置。
连接到外部数据库
-
编辑存储在 C:\ArcGIS\ArcTutor\Schematics\TutorialSchematicDB 地理数据库中的 SchematicBuilderSamples 逻辑示意图数据集,方法为:使用 ArcCatalog 浏览到此数据库,右键单击该数据集,然后选择编辑菜单选项 。
注:
本练习中的屏幕截图会显示在之前练习中创建的配置参数。这些练习不是本练习的先决条件。可以按照本练习中说明的步骤执行,不必先完成之前的练习。
-
在进行下一步操作之前,需要创建一个指向在 Brazil.gdb 数据库中查看的数据的新“数据源”。本配置的其余部分将需要使用此数据源:
-
在“逻辑示意图数据集编辑器”树中右键单击数据源文件夹,然后单击新建数据源。
此时,会出现一个属性 选项卡显示新数据源的信息。保留默认名称,由于 Brazil.gdb 是文件地理数据库,所以类型也是正确的。
-
在地理数据库文件文本框的末端,单击浏览 ESRI 文件地理数据库按钮。
这将打开 ESRI 文件地理数据库连接 对话框。
- 浏览至 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data 并从中选择 brazil.gdb 数据库。
- 单击选择按钮关闭对话框。
- 在“属性”选项卡上单击确定。
现在,您已成功连接到其他数据库。
-
在“逻辑示意图数据集编辑器”树中右键单击数据源文件夹,然后单击新建数据源。
基于标准构建器创建逻辑示意图模板
第二阶段是创建逻辑示意图模板,该模板将用于根据表格数据生成逻辑示意图。
-
在“数据集编辑器”树中右键单击 SchematicBuilderSamples 条目,然后单击新建逻辑示意图模板菜单项。
在编辑器窗口的右侧会自动显示新建逻辑示意图模板的属性 选项卡。
- 在名称文本框中输入 DiagramsFromCustomQueries。
- 在“逻辑示意图构建器”部分中选择标准构建器。
-
单击确定。
此时,在“数据集编辑器”树中会显示 DiagramsFromCustomQueries 逻辑示意图模板条目。编辑器窗口右侧将显示三个新选项卡(“关联”、“布局”和“规则”)。
- 在“逻辑示意图数据集编辑器”树中单击 DiagramsFromCustomQueries 条目以开始对其进行配置。
-
在“属性”选项卡的“查询”区域中单击查询/标识符编辑器按钮 。
将打开查询/标识符编辑器 对话框:
注:对于您自己的项目而言,如果所使用的数据不需要过滤,则无需再对该逻辑示意图模板进行任何其他配置,只需着手处理逻辑示意图要素类即可。由于您希望进行过滤,因此需要在逻辑示意图模板级别设置过滤器。
-
在数据源下拉列表中选择在上述“连接到外部数据库”部分创建的 NewDataSource 条目。
现在,表的列表会使用在该数据源中找到的所有表进行填充。此时,需要获取天然气工厂的名称及其编号的列表。
-
使用滚动条在表的列表中滚动直到发现 pug_PUG_gas_plants 条目。双击该条目。
系统已将查询添加到查询部分中。该查询返回了该表中的所有列。如果需要向 ArcMap 中的最终用户提供一个仅包含名称的列表。则需要在标识符部分中进行指定。
-
在窗体底部的字段列表中双击 NAME 条目,该条目将被添加到标识符列表中。
- 单击确定关闭窗体。
-
添加属性以获得工厂编号。(为逻辑示意图要素类编写查询时,使用此操作过滤数据。)右键单击“数据集编辑器”树中的 DiagramsFromCustomQueries 条目,然后从弹出菜单中选择新建属性。
将在编辑器的右侧打开新建属性 属性选项卡。Schematics 提供许多类型的属性。在这种情况下,您只是想通过已编写的查询获得一个字段。恰好字段是默认类型。
- 在名称字段中输入 PlantNum。
- 使用滚动条在字段列表中滚动直到发现 PLANT_NUMBER。双击此条目将其添加到标识符列表中。
-
单击确定完成属性定义。
- 单击“逻辑示意图数据集编辑器”工具条中的 保存。
创建逻辑示意图要素类
-
在“数据集编辑器”树中右键单击逻辑示意图模板条目 DiagramsFromCustomQueries,然后单击新建逻辑示意图要素类菜单项。
在编辑器窗口的右侧会自动显示新建逻辑示意图要素类的属性 选项卡。
- 在名称字段中输入 ISP_Equipments。
-
单击确定。
-
在“数据集编辑器”树中右键单击逻辑示意图模板条目 DiagramsFromCustomQueries,然后单击新建逻辑示意图要素类菜单项。
在编辑器窗口的右侧会自动显示新建逻辑示意图要素类的属性 选项卡。
- 在名称字段中输入 ISP_Valves。
-
单击确定。
-
在“数据集编辑器”树中右键单击逻辑示意图模板条目 DiagramsFromCustomQueries,然后单击新建逻辑示意图要素类菜单项。
在编辑器窗口的右侧会自动显示新建逻辑示意图要素类的属性 选项卡。
- 在名称字段中输入 ISP_Pipes。
-
在类型下拉列表中选择连接线。
管线记录是在阀门和设备之间的连接线。
-
单击确定。
- 单击“逻辑示意图数据集编辑器”工具条中的 保存。
配置 ISP_Equipments 逻辑示意图要素类
-
使用鼠标单击“逻辑示意图数据集编辑器”树中的 ISP_Equipments 条目。
将打开该逻辑示意图要素类的属性 选项卡。
-
在“查询”部分的求值模式下拉列表中选择生成/更新时进行查询。
查询/标识符编辑器按钮 变为可用状态:
-
单击查询/标识符编辑器按钮 。
将打开查询/标识符编辑器 对话框。
-
在数据源下拉列表中选择 NewDataSource 条目。
-
在表的列表中,双击 ISP_EQUIPMENTS 条目。
这会自动向查询部分添加一个查询。
-
但此时需要更改该查询,以使其根据用户将在生成逻辑示意图时选择的天然气工厂编号正确过滤出记录。向系统自动完成的语句末尾添加以下文本来修改该查询: where plant_number = ?
输入该文本后,将自动打开一个新的“参数”部分。可在新打开的部分中通知系统将哪个属性传递到查询中以替代 ?。由于在本配置中仅包含一个属性,所以已将其选中。
- 但还有一处需要更改。默认情况下,为文本复选框为选中状态。但在本例中,此数据为数值,因此需要更改该复选框。单击为文本复选框,使其变为取消选中状态。
-
如果需要,此时可以测试该查询。在测试值字段中输入一个有效的 PlantNum(例如,101 表示 Aracaiu 天然气工厂),然后单击显示结果按钮。
如果该查询计算正确,应仅显示具有该值的记录。
-
双击字段列表中的 NUMBER_ 条目将其添加到标识符列表。
逻辑示意图上的每个逻辑示意图要素类都必须进行唯一标识。在本例中,已知 NUMBER_ 字段在用来检索数据的所有表中是唯一的。在您自己的示例中,需要确保值具有唯一性;在某些情况下,可能需要一些有创意的想法来确保这些值唯一。
- 单击确定完成定义。
配置 ISP_Valves 逻辑示意图要素类
-
使用鼠标单击“数据集编辑器”树中的 ISP_Valves 条目。
将打开该逻辑示意图要素类的属性 选项卡。
- 在“查询”部分的求值模式下拉列表中选择生成/更新时进行查询。
-
单击“属性”选项卡中的查询/标识符编辑器按钮 。
将打开查询/标识符编辑器 对话框。
- 在数据源下拉列表中选择 NewDataSource 条目。
-
在表的列表中,双击 ISP_VALVES 条目。
这会自动向查询部分添加一个查询。
-
需要更改该查询,以使其根据用户将在生成逻辑示意图时选择的天然气工厂编号正确过滤出记录。向系统自动完成的语句末尾添加以下文本来修改该查询: where plant_number = ?
输入该文本后,将自动打开一个新的“参数”部分。可在新打开的部分中通知系统将哪个属性传递到查询中以替代 ?。由于在本配置中仅包含一个属性,所以已将其选中。
- 但还有一处需要更改。默认情况下,为文本复选框为选中状态。但在本例中,此数据为数值,因此需要更改该复选框。单击为文本复选框,使其变为取消选中状态。
-
如果需要,此时可以测试该查询。在测试值字段中输入一个有效的 PlantNum(例如 101 表示 Aracaiu 天然气工厂),然后单击“显示结果”按钮。
如果该查询计算正确,应仅显示具有该值的记录。
-
双击字段列表中的 NUMBER_ 条目将其添加到标识符列表。
逻辑示意图上的每个逻辑示意图要素类都必须进行唯一标识。在本例中,已知 NUMBER_ 字段在用来检索数据的所有表中是唯一的。在您自己的示例中,需要确保值具有唯一性;在某些情况下,可能需要一些有创意的想法来确保这些值唯一。
-
单击确定完成定义。
查询/标识符 对话框关闭,ISP_Valves 逻辑示意图要素类的“属性”选项卡的内容如下所示:
配置 ISP_Pipes 逻辑示意图要素类
对于最后一个要素类配置部分,除了要素类的名称和要查询的表的名称外,几乎与先前的操作内容完全一样。这一次的查询配置仍然相同,但必须进行一些其他配置,即定义一些属性以通知系统将使用哪些字段实现结点之间的连通性。
-
使用鼠标单击“数据集编辑器”树中的 ISP_Pipes 条目。
将打开该逻辑示意图要素类的属性 选项卡。
- 在“查询”部分的求值模式下拉列表中选择生成/更新时进行查询。
-
单击“属性”选项卡中的查询/标识符编辑器按钮 。
将打开查询/标识符编辑器 对话框。
- 在数据源下拉列表中选择 NewDataSource 条目。
-
在表的列表中,双击 ISP_PIPES 条目。
这会自动向查询部分添加一个查询。
-
需要更改该查询,以使其根据用户将在生成逻辑示意图时选择的天然气工厂编号正确过滤出记录。向系统自动完成的语句末尾添加以下文本来修改该查询: where plant_number = ?
输入该文本后,将自动打开一个新的“参数”部分。可在新打开的部分中通知系统将哪个属性传递到查询中以替代 ?。由于在本配置中仅包含一个属性,所以已将其选中。
- 但还有一处需要更改。默认情况下,为文本复选框为选中状态。但在本例中,此数据为数值,因此需要更改该复选框。单击为文本复选框,使其变为取消选中状态。
-
如果需要,此时可以测试该查询。在测试值字段中输入一个有效的 PlantNum(例如,101 表示 Aracaiu 天然气工厂),然后单击显示结果按钮。
如果该查询计算正确,应仅显示具有该值的记录。
-
双击字段列表中的 OBJECTID 条目将其添加到标识符列表。
逻辑示意图上的每个逻辑示意图要素类都必须进行唯一标识。在本例中,已知 OBJECTID 字段在用来检索数据的所有表中是唯一的。在您自己的示例中,需要确保值具有唯一性;在某些情况下,可能需要一些有创意的想法来确保这些值唯一。
-
单击确定完成对 ISP_Pipes 部分的定义。
查询/标识符 对话框关闭,ISP_Pipes 逻辑示意图要素类的“属性”选项卡的内容如下所示:
-
在“逻辑示意图数据集编辑器”树中右键单击 ISP_Pipes 条目,然后选择新建属性。
将打开新建属性的属性 选项卡。
-
使用名称下拉列表在预定义属性列表中选择 OriginNode。
该属性列表由系统预定义。这些属性都会影响系统中的某些功能。OriginNode 属性用于告知连接线以哪个结点作为连接的起(原)点。
- 双击字段列表中的 FROM_NODE_NUM 条目将其添加到标识符列表。该条目即 ISP_PIPES 表中包含每个管线的起点连通性信息的字段。
-
单击确定完成属性配置。
-
在“数据集编辑器”树中右键单击 ISP_Pipes 条目,然后选择新建属性。
将打开新属性的属性 选项卡。
-
使用名称下拉列表在预定义属性列表中选择 ExtremityNode。
ExtremityNode 属性用于告知连接线以哪个结点作为连接的终(末端)点。
- 双击字段列表中的 TO_NODE_NUM 条目将其添加到标识符列表。该条目即 ISP_PIPES 表中包含每个管线的终点连通性信息的字段。
-
单击确定完成属性配置。
- 单击编辑器工具条中的 保存按钮。
- 关闭“逻辑示意图数据集编辑器”。
生成自定义查询逻辑示意图
在本部分中,将根据新创建的 DiagramsFromCustomQueries 逻辑示意图模板生成第一个逻辑示意图。
- 以空白地图文档启动 ArcMap。
-
单击“逻辑示意图”工具条上的生成新逻辑示意图按钮 。
将打开新建逻辑示意图 对话框。
- 单击逻辑示意图数据集或文件夹字段右侧的浏览按钮以打开选择逻辑示意图数据集或逻辑示意图文件夹 对话框。
- 浏览到 C:\ArcGIS\ArcTutor\Schematics 并从中选择在练习 1 中创建的 TutorialSchematicDB 地理数据库。
-
双击此地理数据库,然后选择 SchematicBuilderSamples 逻辑示意图数据集。
- 单击添加按钮。
-
确保逻辑示意图模板下拉列表中的选中项为 DiagramsFromCustomQueries 逻辑示意图模板。
在逻辑示意图名称部分中已经选中 ARACAIU,因为此名称在按字母顺序的列表中排在首位。
-
单击逻辑示意图名称下拉列表箭头,以查看是否存在一个包含 pug_PUG_gas_plants 表中所有天然气工厂名称的列表。
请记住,您希望用户看到的是简明易懂的名称而不是编号。这就是需要配置 PlantNum 属性的地方。
-
确保 ARACAIU 仍处于选中状态。
-
单击确定生成逻辑示意图。
由于在这些表格记录中没有坐标,所以 Schematics 自动将所有结点放置在 0,0 坐标处。如果数据中包含 x 和 y 信息,则可以为每个“结点”逻辑示意图要素类创建预定义属性,这样将根据数据中的 x 和 y 确定逻辑示意图的初始位置,而不是将它们放置在 0,0 处。无论是哪种情况,用户现在都可以开始编辑会话并将算法等应用于逻辑示意图。