0

我在 Oracle 中有一个表格,其中包含多边形图层的数据。我验证了

--validate layer
CREATE TABLE Geom_Valid_Neighbour (SDO_ROWID ROWID, STATUS VARCHAR2(2000) );   
EXECUTE MDSYS.SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT ('OTTAWANEIGHBOUR', 'GEOMETRY', 'Geom_Valid_Neighbour'); 
SELECT * FROM Geom_Valid_Neighbour;

并得到以下错误:

+----------------------+----------------------------------------------------------+
|     SDO_ROWID        |                STATUS                                    |  
+----------------------+----------------------------------------------------------+
|         (null)       |  Rows Processed <50>                                     |   
| AAA2EHAANAAB76nAAA   |  13349 [Element <1>] [Ring <1>][Edge <112>][Edge <109>]  |   
| AAA2EHAANAAB76rAAC   |  13349 [Element <1>] [Ring <1>][Edge <51>][Edge <55>]    |    
+----------------------+----------------------------------------------------------+

我可以使用什么功能来修复此多边形图层的几何形状以及如何使用它?

4

1 回答 1

1

通常,进行自联合或自相交可以纠正这些错误:调用SDO_GEOM.SDO_UNION(GEOMETRY,GEOMETRY,0.05)更新形状(假设您的容差实际上是 0.05)。

但是:这实际上可能只是隐藏了错误。当多边形边界与自身相交时返回错误代码,即它被错误地数字化。上述操作只是隐藏了错误(=多边形不再被诊断为不正确),但它不会改变视觉形状。

所以我建议从视觉上看这两个形状,看看实际的错误是什么。

如果多边形仅接触自身 = 其边界翻倍并在其他地方接触自身 - 例如两个末端相互接触的新月形,也可能会引发错误。使用上述方法可以安全地纠正这种形状:它将变成一个带有孔的多边形,孔与外圈接触。

您可能还想查看 SDO_UTIL.RECTIFY_GEOMETRY() 函数。它试图纠正三个最常见的几何错误:

  • 重复点
  • 方向不正确(多边形)
  • 自接触/自交叉多边形
于 2015-06-09T10:30:56.470 回答