可以根据几乎任何通过 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 代表室内设施 (Inside Plant)。这些表中的记录描述了某些煤气发电厂的内部结构。煤气发电厂本身是几何网络的真实要素对象,它们表现为要素数据集pipelines中的 pug_PUG_gas_plants 要素类。
- 双击 pipelines 要素数据集以显示几何网络要素类。
- 选择 pug_PUG_gas_plants 要素类并单击“预览”选项卡。
- 在“预览”选项卡底部的预览下拉列表中选择表以便查看数据。
- 使用滚动条进行滚动以便同时查看 NAME 和 PLANT_NMBER 字段。
其中仅有三个煤气发电厂同时包含 PLANT_NUMBER 和 NAME 数据。此处的目的是希望 ArcMap 中的最终用户能够根据某个工厂的“NAME”为其生成逻辑示意图(最终用户不需要知道 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 处。无论是哪种情况,用户现在都可以开始编辑会话并将算法等应用于逻辑示意图。