1

我有一个 oracle 数据库(11g 空间),其中包括一系列区域多边形和水管。我试图将这些电源中的每一个都归因于它所在的区域,并且在大多数情况下,这很简单(使用 SDO_CONTAINS 函数),但我不确定如何处理跨越多个多边形的电源,因为数字化的错误。

在这种情况下,如果它的大部分长度(> 50%)包含在 onit 中,我理想地想要做的是将主要属性分配给区域多边形。我知道我可以使用 SDO_RELATE 函数来确定任何给定的主要与之交互的每个多边形,但我不知道如何确定每个区域中包含多少长度。

4

1 回答 1

2

原理是这样的:

  1. 关联干线和区域。假设您有许多主电源和许多区域,最有效的方法是使用 SDO_JOIN
  2. 对于返回的每一对(主要/区域),计算它们的交点 (SDO_GEM.SDO_INTERSECTION) 并测量该交点的长度 (SDO_GEOM.SDO_LENGTH)。
  3. 从这些结果中,保留每个主要长度最大的区域

如果您想要一个完整的 SQL 示例,请允许我使用示例数据编写该示例。

于 2015-02-19T09:07:23.793 回答