天天看点

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

目录

1 理论部分

1.1 概述

1.2 连通性规则

1.2.1 类型

1.2.2 默认交汇点

1.3 关于建立连通性规则

1.3.1 添加边-交汇点规则

1.3.2 添加边-边规则

1.3.3 通过边-交汇点规则增加边-边规则的灵活性

1.3.4 网络构建错误

2 连通性模型

2.1 简单边连通性模型

2.2 复杂边连通性模型

2.3 交汇点连通性模型

2.4 重叠要素的连通性模型

2.5 相交边的捕捉模型

3 几何网络

3.1 基于现有简单要素类构建几何网络

3.2 将新要素加载到几何网络中

3.3 向几何网络中添加新权重

1 理论部分

1.1 概述

在大多数网络中,您并不希望所有边类型都能够在逻辑上连接到所有交汇点类型。类似地,您也不希望所有边类型都能够通过所有交汇点类型在逻辑上连接到所有其他边类型。例如,在一个供水管网中,消火栓可以连接到消火栓支管,但不能连接到生活用水支管。类似地,在同一供水管网中,10 英寸输水干管只能通过异径管连接到 8 英寸输水干管。

网络连通性规则用于限制可以相互连接的网络要素的类型以及可以连接到另一种要素的任一特定类型的要素数量。通过建立这些规则以及其他规则(例如属性域),可以在数据库中保持网络数据的完整性。任何时间,您都可以有选择地验证数据库中的要素并生成有关网络中哪些要素无效(即违反了连通性规则或其他规则)的报告。

1.2 连通性规则

1.2.1 类型

存在两种类型的连通性规则:边-交汇点规则和边-边规则。边-交汇点规则是一种连通性规则,用于规定类型 A 的边连接到类型 B 的交汇点时应遵循的规则。边-边规则是另一种连通性规则,用于规定类型 A 的边通过一组交汇点连接到类型 B 的边时应遵循的规则。边-边规则始终涉及到一组交汇点。

您可以在 ArcCatalog 或 ArcMap 中通过修改几何网络属性建立和修改网络的连通性规则。可以在两个要素类之间、一个要素类和另一个要素类的子类型之间或者一个要素类的子类型和另一个要素类的子类型之间建立连通性规则。在上述的供水管网示例中,可以在同一边要素类的两个子类型与第三个交汇点要素类的子类型(10 英寸和 8 英寸输水干管与减压阀)之间建立连通性规则。

网络连通性规则描述如何建立边–交汇点规则和边–边规则。为简单起见,会单独建立每个规则,但也可一次为网络建立或修改任何数量的规则。

1.2.2 默认交汇点

边-边连通性规则和边-交汇点连通性规则都可以有与之相关联的默认交汇点。

对于边-交汇点连通性规则,默认交汇点是可选的,而对于边-边连通性规则,默认交汇点是强制的。

当在网络中创建连通性和新要素时,ArcMap 会自动插入默认交汇点。如果促使创建连通性规则的业务规则没有明确的默认交汇点类或类型,则将默认交汇点类设置为“孤立”交汇点要素类是一种有效的解决方案。

当边对具有在数据库中定义的边-边连通性规则,并且创建了连接现有边的新边时,将自动插入默认交汇点。对于边-交汇点连通性规则,ArcMap 将自动在网络中创建的新边自由端处插入默认交汇点。

1.3 关于建立连通性规则

使用几何网络的属性对话框建立和修改连通性规则。

在几何网络中给出的两个示例有助于您理解如何建立边–交汇点规则和边–边规则。为简单起见,会单独建立每个规则,但也可一次为网络建立或修改任何数量的规则。

构建几何网络时,需要对所有输入要素类应用排它锁。如果其中任何一个输入要素类具有共享锁,都不会构建网络。如果网络中的任何一个要素类具有共享锁或排它锁,则该锁会传播到网络中的所有其他要素类。

系统不自动设置默认交汇点。

1.3.1 添加边-交汇点规则

  1. 单击开始 > 所有程序 > ArcGIS > ArcMap 10.1 启动 ArcMap。
  2. 单击地理处理 搜索工具并在搜索框中键入添加边-交汇点规则
  3. 单击搜索工具。“向几何网络添加边-交汇点连通性规则”地理处理工具列于搜索窗口中。
  4. 单击工具名称。将打开此工具的对话框。
  5. 在该工具的对话框中指定参数。了解有关“向几何网络添加边-交汇点连通性规则”工具的详细信息
  6. 单击确定。

1.3.2 添加边-边规则

  1. 单击开始 > 所有程序 > ArcGIS > ArcMap 10.1 启动 ArcMap。
  2. 单击地理处理 > 搜索工具并在搜索框中键入添加边-边规则。
  3. 单击搜索工具。“向几何网络添加边-边连通性规则”地理处理工具列于“搜索”窗口中。
  4. 单击工具名称。将打开此工具的对话框。
  5. 在该工具的对话框中指定参数。了解有关“向几何网络添加边-边连通性规则”工具的详细信息
  6. 单击确定。

1.3.3 通过边-交汇点规则增加边-边规则的灵活性

例如,要添加这样一个规则:类型 A 的边在一端有类型 B 的交汇点并在另一端有类型 C 的交汇点,则必须首先在边类型和两个交汇点类型之间添加边-边规则。然后,会自动创建边-交汇点规则。导航至每个边-交汇点规则并设置边-交汇点基数,以便每个类型的交汇点中只有一个可以连接到任何边。

交汇点的基数是与之相连的边要素的数量。当指定交汇点的基数时,请注意一个例外情况。如果交汇点在中跨处只连接到复杂边要素,则交汇点的基数是二。在该实例中,交汇点的基数基于所连接边元素的数量而不是边要素的数量。例如,该交汇点只有在基数为 0 到 2 时才能被视为有效。

如果对默认交汇点指定了边-交汇点规则,则当创建新边时,独立交汇点可进行归入。如果新边要素被创建并被捕捉到任意类型的独立交汇点,则该交汇点将归入默认交汇点类型。如果促使创建连通性规则的商业规则没有明确的默认交汇点类或类型,则将默认交汇点类设置为“孤立”交汇点要素类是一种有效的解决方案。

1.3.4 网络构建错误

根据现有简单要素类构建几何网络时,某些输入要素类中可能会存在可察觉的几何网络或条件内非法几何。

遇到这些情况时构建过程不会失败,而是该要素以网络要素的形式添加到几何网络,但并不将其连接到重叠要素。当这种情况发生时,网络构建过程结束时会显示一条警告消息,并在数据库中创建一个写有这些错误记录的表(称为构建错误表)。

错误表的名称为 <geometricnetwork_name>_BUILDERR。网络构建错误表的方案在网络构建错误表方案中进行了说明。

ArcMap 提供了帮助您使用网络构建错误表的工具,用来识别构建过程所识别的要素(请参阅识别几何网络构建错误)。您可以选择纠正问题或删除要素。(请参阅关于编辑几何网络要素)。

编辑几何网络时,不会更新网络构建错误表。修正问题以及编辑几何网络的其他区域时,不会更新网络构建错误表。修复完此表中报告的所有问题后,即不再需要使用此表,可通过 ArcCatalog 将其删除。

在 ArcMap 中,有多种工具和命令可帮助您识别和修复具有非法几何以及不一致网络连通性的网络要素。

2 连通性模型

2.1 简单边连通性模型

网络构建过程中的简单边捕捉受到以下规则的制约:

仅在边要素的末端建立针对简单边的连通性。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

即使简单边要素上存在折点,也不会建立中跨连通性。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

但是,即使并未建立连通性,简单边要素也可能在捕捉过程中发生聚类。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

2.2 复杂边连通性模型

网络构建过程中的复杂边捕捉受到以下规则的制约:

在要素和中跨的末端均建立针对复杂边的连通性。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

如果已建立连通性的复杂边上没有折点,则会创建一个新折点。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

当沿着复杂边捕捉中跨时,必须至少存在一个边端点才能建立连通性。虽然折点会捕捉到一起,但不会在一条边的中跨和另一条边的中跨之间建立连通性。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

2.3 交汇点连通性模型

与边折点重叠的交汇点仍将与折点重叠。虽然边和交汇点在捕捉过程中可能移动,但交汇点并不会从边上移出。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

2.4 重叠要素的连通性模型

如果网络构建过程中遇到重叠交汇点,或捕捉过程生成重叠交汇点,则生成的连通性是非确定的。也就是说,仅会在其中一个重叠交汇点上建立连通性。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

如果为网络构建过程指定的捕捉容差使多个边捕捉到一起,则这些边经过捕捉后将重叠。由于连通性受几何重叠控制,因此将会连接这些边。但是,这些边的重叠交汇点的连通性将是不确定的,正如上述情形说明的那样。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

2.5 相交边的捕捉模型

如果网络构建过程中指定了捕捉并且遇到相交的边时,将在这些相交的点上引入折点,即使没有连通性,正如下面的情景所示。当相交的边为简单或复杂或者两者的综合体时,便会发生这种行为。

基于C#的ArcEngine二次开发33:几何网络连通性分析1 理论部分2 连通性模型3 几何网络

3 几何网络

3.1 基于现有简单要素类构建几何网络

  1. 右键单击将要包含网络的要素数据集。
  2. 指向新建。
  3. 单击几何网络。
  4. 阅读第一个面板上的信息,然后单击下一步。如果不希望每次创建新几何网络时都显示此画面,请单击以后跳过此屏幕复选框。
  5. 为新几何网络输入名称或接受默认名称。
  6. 指定创建几何网络过程中是否应使用捕捉操作并设置捕捉容差。默认值将被设置为要素数据集的 X,Y 容差。
  7. 单击下一步。
  8. 单击要在该几何网络中包含的要素类。
  9. 单击下一步。
  10. 如果所有要素类都包含 Z 坐标值,则可以选择使连通性基于 X、Y 和 Z 值,并可以选择设置 Z 捕捉容差。Z 容差(以实际单位表示为 0.001 米)。选择下一步,使用 Z 值确定连通性,或选择否并单击下一步,不使用 Z 值确定连通性。
  11. 如果任何被选定参与网络的要素类包含启用字段,可以选择保留这些已启用值或将它们重置为真。单击否启用所有网络要素。否则,默认情况下会选择保留已启用值。
  12. 单击下一步。
  13. 单击“角色”下的下拉箭头,指定是否有要素类为“复杂边”,否则,接受默认设置“简单边”。
  14. 单击交汇点要素类的“源头和汇点”下的下拉箭头,将其用作建模流向所需的源头和汇点。若不需要,接受默认设置否,然后单击下一步
  15. 要添加新权重,请单击新建。
  16. 输入新权重的名称,单击下拉箭头,然后单击 Bitgate 权重的权重类型和大小。如果此权重名称与要素类中某个字段的名称匹配,该字段将自动与此权重相关联。单击确定。
  17. 对于每个要与权重关联的要素类,请单击其“字段”下的下拉箭头,然后选择“字段”。将会只显示与权重类型匹配的字段。
  18. 重复上述两步,直至定义完所有网络权重。
  19. 单击下一步。
  20. 如果地理数据库存储在 ArcSDE 地理数据库中,而且您具有该网络阶段的配置关键字,请单击是并从下拉菜单中选择该关键字。否则,请跳到步骤 21
  21. 单击下一步。
  22. 查看为新网络指定的选项。如果要进行更改,可单击上一步按钮,通过向导返回。
  23. 对选项满意时,请单击完成创建新几何网络。

3.2 将新要素加载到几何网络中

  1. 在 ArcMap 中,单击自定义下拉菜单。
  2. 选择自定义模式,然后选择命令选项卡。
  3. 选择数据转换器类别,选择网络增量加载程序命令,然后将其拖放到现有工具栏上。
  4. 在 ArcMap 的内容列表中,选择一个参与了要加载要素的几何网络的要素类,然后单击几何网络增量加载程序命令。
  5. 单击添加数据按钮并导航到源数据。几何网络增量加载程序命令可以将 ArcGIS 所支持的任何数据源视为输入。
  6. 选择一组输入要素类。
  7. 单击下一步。
  8. 将每个源要素类分别映射到一个网络要素类。该命令将自动映射具有相同名称的要素类。
  9. 单击下一步。
  10. 检查“摘要”页面,以研究所有未映射的字段。
  11. 单击完成。

3.3 向几何网络中添加新权重

创建几何网络后,可能需要添加新权重并将其与几何网络中的要素类关联。可以使用几何网络的属性页面向网络中添加新权重。网络权重会应用到网络中的所有元素。在“几何网络向导”中指定权重时,可以将每个要素类的字段与权重关联。

要将权重添加到网络,必须将其与至少一个字段关联。将权重添加到网络后,无法更改与其关联的字段。无法对已添加到网络中的权重进行删除或重命名。

  1. 在目录树中右键单击几何网络,然后单击属性。
  2. 单击权重选项卡。
  3. 单击新建。
  4. 在添加新权重对话框中,输入权重的名称。
  5. 单击类型下拉箭头,然后选择权重类型。
  6. 如果要创建 Bitgate 权重,请单击 Bitgate 大小下拉箭头,然后单击 Bitgate 的大小。
  7. 单击确定。
  8. 选择要与权重关联的字段。对于每个要素类,单击字段名下拉列表中的相应字段。

    权重必须至少与一个字段关联。

继续阅读