线段分析
线段分析功能列表:
- 自重叠分析
- 连接分析(图形)
- 连接分析(方向)
自重叠分析
自重叠分析有两种情况:
- 完全叠加
- 部分叠加
环分析
环分析用于找到形成环的边。注意:
- 输出的结果是形成环的子边(子边:只有起点和终点两个点组成)。
- 监测的是点到点的链接。
连接分析(图形)
连接分析(图形)是用来判断两条线是否在图形上是连接的。基于WKT的线段描述线分为LineString和MultiLineString两类,有关图形的连接分析需要设计如下几种情况:
- 检查的两条线都是LineString。
- 检查的两条线都是MultiLineString。
- 检查的两条线分别是LineString和MultiLineString。
注意当线段自身是MultiLineString时需要进行自检,自检是为了满足自身的子线段都是连接的。
检查的两条线都是LineString
当比较的两条线都是LineString时需要分别比较两条线的第一个点和最后一个点是否相同,只要满足以下条件中的任意一个就认为连接:
- 线1的第一个点和线2的第一个点相同。
- 线1的第一个点和线2的最后一个点相同。
- 线1的最后一个点和线2的第一个点相同。
- 线1的最后一个点和线2的最后一个点相同。
MultiLineString 自检
当输入的线类型是MultiLineString时需要进行如下检查,确保线自身是连接的。检查流程:
- 将线拆分为多个子线。如果拆分后子线数量是1则不需要检查链接。
- 对比所有子线,每两个子线都需要对比,判断子线是否链接的依据是子线和非自身子线以外相连接。子线和子线是否链接需要满足如下条件。注意子线1和子线2不是同一个。
- 子线1的第一个点和子线2的第一个点相同。
- 子线1的第一个点和子线2的最后一个点相同。
- 子线1的最后一个点和子线2的第一个点相同。
- 子线1的最后一个点和子线2的最后一个点相同。
检查的两条线分别是LineString和MultiLineString。
假设线1类型是 LineString,线2类型是 MultiLineString。检查流程:
- 提取线1的第一个点和最后一个点。
- 将线2拆分为多个子线。
- 将第一步中第一个点和最后一个点与第二步中的所有子线进行对比,满足如下条件中的任意一个则表示链接:
- 线1的第一个点和子线的第一个点相同。
- 线1的第一个点和子线的最后一个点相同。
- 线1的最后一个点和子线的第一个点相同。
- 线1的最后一个点和子线的最后一个点相同。
假设线1类型是 MultiLineString,线2类型是 LineString。检查流程:
- 将线1拆分为多个子线。
- 提取线2的第一个点和最后一个点。
- 将第一步中的所有子线与第二步中第一个点和第二个点进行对比,满足如下条件则表示你链接:
- 子线的第一个点和线2的第一个点相同
- 子线的第一个点和线2的最后一个点相同
- 子线的最后一个点和线2的第一个点相同
- 子线的最后一个点和线2的最后一个点相同
检查的两条线都是MultiLineString
前提:输入的检查线是自连接的
当输入的两条线都是MultiLineString需要进行如下校验:
- 将线1拆分为多个子线。
- 将线2拆分为多个子线。
- 将第一步中的子线和第二步中的子线进行对比。检查规则:第一步中的子线只要有一个和第二步中的子线连接就认为连接。
连接分析(方向)
连接分析(方向)是用来判断两条线是否在方向上是连接的。方向的定义:线段第一个点认为是起点,线段最后一个点是终点,方向从起点走向终点。一条线的第一个点只能作为其他线的最后一个点,一条线的最后一个点只能作为其他线的第一个点。
- 将所有线都拆分为子线
- 提取子线的所有起点和终点
- 确定是否存在环
- 剔除环
-
