Oracle Spatial 中的弧段及弧相关拓扑错误

 

1.报告说明

    此报告用于验证下列问题:

  • ORACLE SPATIAL 0.05m的最小拓扑容差值是否可以被修改
    • 原始数据通过ARCGIS入库数据精度是否有损失
    • 修改ORACLE SPATIAL图层的最小容差值是否对拓扑检查有影响
    • 修改ORACLE SPATIAL图层的最小容差值是否对面积计算有影响
    • ORACLE SPATIAL中的拓扑错误(不包括弧)是否会影响面积计算
    • ORACLE SPATIAL是否有修改拓扑错误的能力
  • ARCGIS中的弧段数据能否存入ORACLE SPATIAL并正确使用
    • 不同版本的ARCGIS对弧段数据进行入库其动作是否一致
    • ORACLE SPATIAL能否在地理坐标系下对弧进行空间运算
    • 能否对ARCGIS中的弧作相关处理后入库使其可以支持在地理坐标系下的空间运算
    • ORACLE SPATIAL是否有能力将弧转换成多边形

另外说明:样本集包括370522、370104、370102、370725、370503、371626、370105、371526、370502九个县的LCA图层。

2.数据容差问题

    国情普查的数据精度为0.0001m,该数据入库后,若容差值设定过大,将会产生很多拓扑错误,例如重复点、自相交等。而据ORACLE官方表示,ORACLE SPATIAL只支持0.05 m的最小数据容差,如下图所示:

在该容差值下,很多生产环节相距很近的点被ORACLE当作同一个点,因而产生拓扑错误。而某些拓扑错误又会进一步导致其它次生问题,例如面积统计失败、空间分析失败等。针对这种情况,将尝试通过手动修改ORACLE SPATIAL图层经纬度容差值(USER_SDO_GEOM_METADATA)的方法来规避拓扑错误。验证分如下两步进行:

  1. 使用ARCGIS进行数据入库是否有精度损失
  2. 调整图层容差值是否可以产生预期效果

2.1使用ARCGIS进行数据入库是否有精度损失

2.2.1原始数据精度

原始数据在经纬度坐标系下保留小数点后9位数字,即E-9。如下图:

将经纬度换算成单位米,约为110*1000*10-9=0.0001m(赤道位置,一度约为110KM,非赤道位置精度值会小于0.0001m)。

2.2.2SDO_GEOMETRY数据精度

    入库后图形数据以SDO_GEOMETRY数据格式存储。SDO_GEOMETRY的坐标串存储在SDO_ORDINATE_ARRAY数组中,该数组的定义如下:

"CREATE OR REPLACE TYPE SDO_ORDINATE_ARRAY AS VARRY(1048576) OF NUMBER"

即该数组是以NUMBER类型组成的数组。NUMBER类型的语法为:NUMBER(p,s):

p:精度位,是总有效数据位数,取值范围是38,可以用字符*表示38。

s:小数位,是小数点右边的位数,取值范围是-84-127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。

经实验证明,在不指定p和s的情况下,随着小数位数的增加,至少在小数点后18位时仍然没有数据损失(见DUMP内容)。而PL/SQL仅显示小数点后14位,见NUM列。实验过程如下

原始数据精度为E-9,实验说明ORACLE在存储原始坐标串时是有能力不丢失数据的。

2.2.3入库后数据精度

    入库后数据坐标串如下图所示:

原始数据精度为E-9,入库后数据精度为E-9。入库前后坐标串对比图如下:

    由上图可知,数据入库没有精度损失

2.2调整图层容差值是否可以产生预期效果

    在ORACLE中该数据精度(分辨率)为E-9,单位换算成米即为E-4(m)。因此可知,容差设定为E-5即为极限,当设定为E-5即表示任何一个坐标点都不会被ORACLE认为是重复点,因为E-5<E-4。另外也说明容差<=E-5已经没有意义。基于上文表述,此列中将会把ORACLE SPATIAL容差下限设定为E-4,验证在该容差下限下的拓扑检查和面积计算。

2.2.1验证原始图层是否存在拓扑错误

    在该例中,我们关心的拓扑规则为"是否存在重复点",因此需要首先将原始面状图层转成点状图层进行拓扑验证。

原始面状数据转点状数据后,对点图层进行"Must Be Disjoint"的拓扑验证,拓扑容差设定为0.001m(即E-3)验证结果如下:

说明在容差为0.001m时,没有点重复。自然可知在容差为E-4m时,绝对没有点重复。

2.2.2不断调整图层容差值进行拓扑验证

说明:下列组图中,每张图OERR=13349的错误个数均需要+2,因为在进行本组测试之前,删除了两个有重复点的要素。但不影响错误个数随着容差值增大而增大的趋势判断。

  1. 容差值=1E-4

  2. 容差值=5E-4

  3. 容差值=1E-3

  4. 容差值=5E-3

  5. 容差值=1E-2

  6. 容差值=5E-2

由以上组图,可知随着容差值的变大,拓扑错误越来越多。这说明,通过对USER_SDO_GEOM_METADAT中容差值的修改,的确会影响拓扑检查的结果。

2.2.3OARCLE SPATIAL容差值分析

    将USER_SDO_GEOM_METADAT中该图层的容差值设定为E-4,然后对ORACLE SPATIAL中的图层进行拓扑验证,验证过程及结果如下

exec SDO_geom.validate_layer_with_context('TEST_370522','SHAPE','TEST_TOPO');

对于同样的数据,ARCGIS和ORACLE SPATIAL的拓扑检查结果不一样,而且在做拓扑检查时ARCGIS使用的容差值大于ORACLE SPATIAL使用的容差值。理论上应该ARCGIS出现更多的拓扑错误,而实验结果却刚好相反。猜测ORACLE SPATIAL设定的容差值没有起到预定的效果。下面来证明。

假设ORACLE SPATIAL默认的最小容差值为0.05m,ARCGIS做拓扑检查的容差值为0.001m。若ORACLE SPATIAL设定的容差值没有起效果,那么对于距离处于0.001<D<0.05m的两个点,ORACLE SPATIAL会认为是同一个点,也就是OERR=13349。将0.001<D<0.05进行单位换算,得知在经纬度坐标系下,9.09E-9<D<4.54E-7即有可能被ORACLE SPATIAL认为是同一个点。从拓扑错误表中任意选一个错误要素:

在本例中,我们选OBJECTID=739的要素进行分析。该要素的坐标串如下图:

红框部分即为可疑坐标串(点),这两个点的距离可能处于9.09E-9——4.54E-7(0.001——0.05)之间。在ARCMAP中打开该图层,然后计算这两个点之间的距离。

通过计算,4号点与5号点之间的距离为0.015m,该距离处于0.001——0.05之间,符合上文的推断。为了验证拓扑错误——重复点——的确是由这两个点引起的,进一步测试在删除该两点任意一点后,拓扑验证情况。

  1. 方法一:直接用ARCMAP删除点

    保存编辑后,再次验证:

    错误个数由50减少到49。

    错误列表中已经没有OBJECTID=739的记录。

  2. 方法二:SDO_UTIL.REMOVE_DUPLICATE_VERTICES(geometry,tolerance)删除
  3. 在tolerance设为E-4时执行:

update TEST_370522 set shape=(select sdo_util.remove_duplicate_vertices(a.shape,1E-4) from TEST_370522 a where objectid=1789)where objectid=1789;

commit;

重复点未删除。

  1. 在tolerance设为5E-2时执行

update TEST_370522 set shape=(select sdo_util.remove_duplicate_vertices(a.shape,5E-2) from TEST_370522 a where objectid=1789) where objectid=1789;

commit;

重复点被删除。这里说明在tolerance设为E-4时,ORACLE SPATIAL并没有按照默认最小容差5E-2来进行运算,而是真实地按照E-4进行运算,从该函数方法来看,将容差值调整到小于默认最小容差时有效。

2.2.4拓扑错误对面积计算的影响

在上例中的50个重复点中有两个已经得到了解决,那么剩余的48个拓扑错误会影响面积计算吗?接着分如下四步来验证:

  1. 存在拓扑错误要素的绝对差异

    分别计算存在拓扑错误的48个要素的面积差异及差异比率,如下图所示:

    由上图MJC_BL(面积差异的比率)可知,存在拓扑错误的48个要素,其差异部分所占的比率均在1E-4(万分之一级)程度,认为此种程度的差异没有关键影响。

  2. 所有要素计算面积差,并按绝对差异值倒序排列

    分别由ARCGIS和ORACLE SPATIAL计算要素面积,比较面积差,并按面积差倒序排列:

select * from (select objectid,abs(sdo_geom.sdo_area(shape,1E-4)-t.mj) mjc,rowid from TEST_370522 t) order by mjc desc;

可见面积差异最大的一些要素并非是有重复点拓扑错误造成的。对于面积差异最大的要素,在本例中,它的形态如下:

  1. 所有要素计算面积差比率,并按比率倒序排列

    分别由ARCGIS和ORACLE SPATIAL计算要素面积,得到面积差,再由面积差除以ARCGIS计算面积,得到差异比率,并按比率倒序排列。

        由上图可和,差异率最大的要素,差异率也在1E-4程度,因此认为整个图层,其差异在可接受范围内。

  2. 调整sdo_geom.sdo_area面积计算函数的容差值,由ORACLE计算面积

    使用不同的容差值作为sdo_geom.sdo_area函数的参数进行运算,得到各要素的面积值。经测试发现,随着容差值的变化,ORACLE计算的面积结果不发生变化。

2.3样本集中各县的拓扑检查结果

    使用ARCGIS将样本集中的所有数据入库,入库后进行拓扑检查(此时的拓扑容差为默认容差,即0.001m),各县的检查结果如下:

  1. 370522

  1. 370104

  1. 370102

由上图可知,存在弧段拓扑错误(13035)的要素会导致面积计算失败。关于弧段相关的问题,会在下文详细介绍。

  1. 370725

  1. 370503

  1. 371626

  1. 370105

  1. 371526

    与上文中的其它样本相比,该县新增了拓扑错误类型(13350)——环粘连,环粘连的效果图如下:

    红点4-5连接线与绿点108-109连接线共线。如下图共线效果图:

    经测试证明,该拓扑错误类型对面积差异的比率在1E-4级别。无关键影响。

  1. 370502

    与上文中的其它样本相比,该县新增了拓扑错误类型(13366)——内外环不合法。该错误的效果图及面积计算结果如下图:

2.4使用ORACLE原生函数修复拓扑错误

    ORACLE提供了一些原生函数用来修复拓扑错误,这些函数包括SDO_UTIL.RECTIFY_GEOMETRY、SDO_GEOM.SDO_SELF_UNION、SDO_UTIL.REMOVE_DUPLICATE_VERTICES。根据ORACLE官方文档的介绍,这些方法函数提供了不同的能力:

  1. SDO_GEOM.SDO_SELF_UNION

    下文将使用SDO_GEOM.SDO_SELF_UNION函数来处理370522县的拓扑错误(见2.3)。

    在使用SDO_GEOM.SDO_SELF_UNION函数进行处理之前,拓扑检查(tol=1E-4)的结果如下图:

    使用SDO_GEOM.SDO_SELF_UNION函数并将tol参数设置为1E-4处理之后,

    除了2个要素没有被正确处理,其余46个要素均被处理使其符合了拓扑检查的要求,处理效果如上图:

    没有被处理的2个要素,选其中之一sdo_rowid='AAAZ7oAARAAC8ThAAM'进行分析,其效果图如下:

此时点1762与点1763之间的距离为0.016229,点1762到线段1763的距离为0.011783。

    调整该函数中tol参数的值,当tol小于当前值,即1E-4时,存在拓扑错误的2个要素仍然不能被修复。当tol大于当前值,直到调整到大于等于5E-2时,存在拓扑错误的2个要素被修复。修复后的效果如下图:

  1. SDO_UTIL.REMOVE_DUPLICATE_VERTICES

    有关此函数的使用方法及使用效果,见2.2.3。

  1. SDO_UTIL.RECTIFY_GEOMETRY

    该函数的处理效果即为SDO_GEOM.SDO_SELF_UNION+SDO_UTIL.REMOVE_DUPLICATE_VERTICES。

2.5容差问题验证结论

由上文的验证过程,大致可以得到如下结论:ORACLE SPATIAL的存储坐标点时,没有数据精度损失。在进行拓扑检查时,修改拓扑值,使其小于0.05m,对于拓扑检查结果有影响但这种影响与所设定容差值预期的影响不一致。另外对于ORACLE SPATIAL的某些方法、函数,修改拓扑值同样会产生效果,例如SDO_UTIL.REMOVE_DUPLICATE_VERTICES。另外,拓扑错误并不一定导致面积运算失败,拓扑错误对面积计算似乎没有关键影响。对于通过ESRI和ORACLE SPATIAL运算得到的面积值,差异差异普遍在1E-4(万分之一)级,可以忽略不计。

总结规纳,形成以下几点结论:

  • 使用ARCGIS入库,将数据存入SDO_GEOMETRY没有数据精度损失
  • 使用ARCGIS入库,除弧形要素以外,其它所有要素的差异普遍在万分之一级别。
  • ORACLE SPATIAL官方表示地理坐标系中的最小容差为0.05m,并表示对于某些函数,当容差值设定小于0.05m时,将使用0.05m作为容差值。但没有说明当容差值设定小于0.05m时,拓扑检查是否会使用0.05m作为容差值。
  • 修改ORACLE SPATIAL中的图层容差值,使其小于0.05m会对拓扑检查结果产生影响
  • 修改ORACLE SPATIAL中的图层容差值,设置任何值均对面积计算没有产生影响
  • ORACLE SPATIAL中的图层容差值(小于0.05m时)对拓扑检查的影响与该值预计产生的影响不一致
  • 除了弧引起的拓扑错误,下文涉及到的其它拓扑错误不影响面积计算。
  • ORACLE SPATIAL的原生函数可以修复点重复、自相交、内外环不合法三类拓扑(SDO_GEOM.SDO_ARC_DENSIFY亦可修改部分弧面错误,见下文介绍)错误。

3.弧段数据问题

    弧是一种特殊的线,在ORACLE SPATIAL中,它通过起始点、弧上任意一点、结束点来表达。而弧面则是通过闭合结束点与起始点形成的面状要素。在ORACLE SPATIAL中,据官方文档说明,在平面坐标系下支持弧与弧面的存储与空间分析;而地理坐标系下不支持弧与弧面的存储与空间分析,下图为官方文档的说明:

    验证将分如下两步进行:

  1. 通过ARCGIS入库,不同软件版本的不同响应动作
  2. 弧段数据入库的解决办法

3.1不同版本ARCGIS进行入库

    ORACLE不支持在地理坐标系中对弧进行空间运算,因此对于原始数据中的弧,若想将其存入数据库,有两种方式:

  1. 直接导入要素类(import)或创建要素集后导入要素类。以这种方式入库,ORACLE会首先插入所有记录,然后创建空间索引。因此这种入库方式没有记录丢失,图层保留原始坐标系,即CGCS2000地理坐标系,但此时空间索引不可用。
  2. 先创建空的要素类,然后load data。以这种方式入库,在创建空的要素类时,ORACLE会对空图层创建空间索引,若此时指定了地理坐标系,入库就会报错,导致弧要素及其之后的所有要素入库失败。以这种方式入库,若不希望丢失记录,不能指定地理坐标系。在本例中,若使用此种方式入库,入库时不指定任何坐标参考。

3.1.1原始数据弧

    原始数据中的弧,其图形及坐标串如下图:

获得原始弧形的WKT内容为:

MULTIPOLYGON (((118.85851139111136 37.429225522990038……212个坐标点)

3.1.2 ARCGIS 10.1.0 + ORACLE 11g

    入库后,SDO_ELEM_INFO的内容如下图

SDO_ELEM_INFO字段中,每3个数字组成一个属性单元(又称三元组),该例中仅有一个属性单元[1,1003,1]:

――[1,1003,1]:第一个1表示该几何元素从SDO_ORDINATES中第一个坐标点开始计算;1003表示假如几何类型为面(该例的确为面),则表示为外环多边形(逆时针顺序);第二个1与1003组合起来,表达该要素是由系列直线段组成的多边形。务必标出每个节点的坐标。最后一点要与第一个点相同,构成封闭。

SDO_ORDINATES字段说明:包括5370个坐标串。5370个坐标串密集排布,组成了弧形。将存在ORACLE SPATIAL中的坐标串在ARCGIS中打印出来,并局部放大。可以发现,弧段已经由最初的弧变成了非常密集的点。如下图所示:

3.1.3 ARCGIS 10.2.2 + ORACLE 11g

    入库后,SDO_ELEM_INFO的内容如下图

该例中SDO_ELEM_INFO有两个属性单元(又称三元组),分别为[1,1005,1]和[1,2,2]。两个属性单元有其各自的含义:

――[1,1005,1]:第一个1表示该几何元素从SDO_ORDINATES中第一个坐标点开始计算,根据1005可知这是一个描述三元组(用于描述要素的类型和几何元素的个数,不用于表达几何元素),第二个2表示该要素由一个几何元素组成。

――[1,2,2]:第一个1表示该几何元素从SDO_ORDINATES中第一个坐标点开始计算,后两个2的组合,说明该几何元素是由曲线片段组成的多义线。每一曲线段由三个点来描述:起点,任意在曲线线上的一点,终点,且前一个曲线终点是下一个曲线的起点。

SDO_ORDINATES字段说明:包括5个坐标串将存在ORACLE SPATIAL中的坐标串在ARCGIS中打印出来,即上图中的4个(实际上是5个)点。(注意,背景的弧形并非ORACLE中的弧形,ORACLE中的弧因为在地理坐标系下不支持空间索引,因此在此例中无法显示。此处仅是为了说明坐标点的位置,将原始弧形作为背景显示)。ORACLE仍然把弧作为弧段存储,只是对弧段做了一些调整,例如在两个弧中各增加了一个点(即左右两点)。

此时将SDO_GEOMETRY转化为WKK,得到的WKT内容为:

CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (118.858500342 37.4292332830002, 118.859100475185 37.429419573414, 118.858750251 37.4299413079999, 118.858183673607 37.4297431735208, 118.858500342 37.4292332830002)))

    可见,ORACLE SPATIAL将该要素表达成了CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING))。

3.1.4 ARCGIS 10.2.2 + ORACLE 12c

    入库后,SDO_ELEM_INFO的内容如下图

    意义同于ARCGIS 10.2.2 + ORACLE 11g。

3.1.5 ARCGIS 10.3.0 + ORACLE 11g

    入库后,SDO_ELEM_INFO的内容如下图

    意义同于ARCGIS 10.2.2 + ORACLE 11g。

3.1.6 gwDTT + ORACLE 12c

    这是一个附件部分,用以说明使用gwDTT入库时,将怎样处理弧段数据。入库后,SDO_ELEM_INFO和SDO_ORDINATES的内容如下图所示:

    很显然这是一个有拓扑错误的面状要素,因为坐标串只有3个(第1个坐标串和第3个坐标串是同一个点),不能形成闭合环。对该要素进行拓扑检查:

    查看错误编码,得知13343表示面状要素坐标少于4个。

3.1.7阶段性结论

    由以上几组实验可知,不同版本的ARCGIS在进行入库时,会对弧采取不同的处理方式。对于通过ARCGIS 10.2或ARCGIS 10.3进行入库的数据,由于入库后存在弧,因此若对该数据添加地理坐标参考系并创建空间索引将会报错。ORACLE不支持地理坐标系中的弧,因此对于使用ARCGIS 10.2或ARCGIS 10.3进行入库的数据,需要对弧进行处理。处理方式有两类,一类是在入库前对数据进行处理,例如ARCGIS 10.1在入库时对弧进行了处理(见3.1.2),使其作为多边形进行入库;一类是在入库后对弧进行处理(此时不允许指定地理坐标系),将其处理为多边形,然后再指定地理坐标系并重建空间索引。

3.2使用ORACLE原生函数将弧转成多边形

    ORACLE提供了原生函数SDO_GEOM.SDO_ARC_DENSIFY来将弧面转成多边形。官方文档介绍如下:

    以2.3中370102县的弧面数据为例,使用该方法进行验证。

  1. 直接ARCGIS import方法将图层导入数据库,导入后的图形如下图:

  1. 验证该弧段的空间索引

  2. 计算该弧段的面积

    可见,弧面不支持面积计算

  3. 使用SDO_GEOM.SDO_arc_densify处理后再次创建空间索引

  4. 查看SDO_GEOM.SDO_arc_densify处理效果

    由上图可知,使用此方法时行处理,图形没有任何变化。

    将精度改为1E-4,仍然没有效果。对于复杂的图形,修改的力度非常有限

3.3弧段数据入库的其它解决办法

3.3.1解决办法

在本次实验中,采用的处理方式为入库前处理。具体过程为:

  1. 获取弧形要素的WKT

    MULTIPOLYGON (((118.85851139111136 37.429225522990038……212个坐标点)

  2. 将WKT转成面状要素
  3. 将该面状要素入库

3.3.2处理结果

    将要素转成WKT并通过WKT再次构建要素后入库。入库后,SDO_ELEM_INFO的内容如下图:

SDO_ORDINATES: 包括212个坐标串通过ARCGIS打印坐标串的效果图如下:

将该要素与通过ARCGIS 10.1入库后的要素叠置,局部放大后效果图如下:

    红色点是WKT中记录的点,绿色的点是ORACLE SPATIAL中记录的点。可见ORACLE SPATIAL中记录的点要比WKT中记录的点密集,且密集得多。WKT中的点序大致表达了原始弧形,但一定存在形状变形,由于形状变形导致的面积变化还不确定,需要更进一步地测试。

3.4弧段问题验证结论

总结规纳,形成以下几点结论:

  • ARCGIS 10.1与 ARCGIS 10.2、ARCGIS 10.3在入库时对弧段数据的处理方式是不同的。ARCGIS 10.1将弧转成折线,而ARCGIS 10.2和ARCGIS 10.3将原始弧转成了ORACLE SPATIAL的弧(这两种弧不同)
  • ORACLE SPATIAL 不支持对地理坐标系下的弧建立空间索引
  • ORACLE SPATIAL原生函数SDO_GEOM.SDO_ARC_DENSIFY修改弧能力有限,对于复杂的图形,修复不了其中的弧
  • 原始弧可以通过转成WKT再转成面状要素的方式完成入库,入库后已由原始弧变成折线,会有部分图形变形,图形变形会导致面积精度损失

4.其它待验证事项

 

  1. 不同拓扑错误会对空间分析造成哪些影响?
  2. 通过WKT转换后入库的弧,其面积损失的比率有多大?

5.附件一:标准错误号及含义

文档中可能涉及到错误编码及其含义如下:

错误编码

含义

说明

ArcGIS与Spatial修复与分析

13034

几何无效

"Invalid data in the SDO_ORDINATE_ARRAY in SDO_GEOMETRY object";

主要是大节点图斑。

// *Cause: There is invalid data in the SDO_ORDINATE_ARRAY field of the SDO_GEOMETRY object. The coordinates in this field do not make up avalid geometry. There may be NULL values for X or Y or both.

// *Action: Verify that the geometries have valid data.

ArcGIS:暂未实验ArcGIS是否可以正常统计;

Spatial:无法统计和分析。

Oracle spatial支持图斑最大节点数:524288。

Arcgis支持图斑最大节点数500万,主要受硬件限制。

检查方法:入库检查工具-要素最大节点数检查;

13035

弧段错误

"Invalid data (arcs in geodetic data) in the SDO_GEOMETRY object"

// *Cause: There is invalid data in the SDO_ELEM_INFO_ARRAY field of the SDO_GEOMETRY object. There are arcs in a geometry that has geodetic coordinates.

// *Action: Verify that the geometries have valid data.

ArcGIS:在外部对原始数据进行Repair后,可以进行正常统计,Repair前,无法统计,但Repair后,并不会改变弧段数据模型,仅仅是修复了由于容差原因造成的无效弧段;入库为SDO后,在ArcGIS浏览时图斑显示为正常弧段。

Spatial:即使arcgis修复无效弧段后,Spatial仍无法进行统计;且Spatial无法修复此类错误。利用GDAL获取Spatial的坐标存储时,会将弧段存储为直线。

检查方法:暂无;

13343

坐标少于4个

"a polygon geometry has fewer than four coordinates"

// *Cause: A geometry, specified as being a polygon, has fewer than four coordinates in its definition.

// *Action: A polygon must consist of at least four distinct coordinates. Correct the geometric definition, or set the appropriate SDO_GTYPE or SDO_ETYPE attribute for this geometry.

ArcGIS:类似弧段数据,修复后可以进行正常统计;

Spatial:和弧段数据一样,无法统计;且Spatial无法修复。

检查方法:入库检查工具-几何异常检查。但对另外特殊图形暂无检查方法。

13349

自相交

"polygon boundary crosses itself"

// *Cause: The boundary of a polygon intersects itself.

// *Action: Correct the geometric definition of the object.

ArcGIS:Repair前无法统计,Repair后可以进行统计;

Spatial:ArcGIS Repair前无法统计,ArcGIS Repair后可以进行统计;且Spatial可以修复此类错误。

检查方法:暂无(由于是容差原因造成,原始数据并不存在自相交错误);

13350

环粘连

"two or more rings of a complex polygon touch"

// *Cause: The inner or outer rings of a complex polygon touch.

// *Action: All rings of a complex polygon must be disjoint. Correct the geometric definition of the object.

ArcGIS:Repair前无法统计,Repair后可以进行统计;

Spatial:ArcGIS Repair前后都无法进行统计,且Spatial无法修复此类错误。

检查方法:暂无;

13351

初始化失败

"failed to initialize spatial object"

// *Cause: This is an internal error.

// *Action: Contact Oracle Support Services.

ArcGIS:暂未没有遇到此类问题;

Spatial:Spatial可以修复此类错误;

检查方法:暂无;

13356

重复点

"adjacent points in a geometry are redundant"

// *Cause: There are repeated points in the sequence of coordinates.

// *Action: Remove the redundant point.

ArcGIS:与自相交类似,Repair前无法统计,Repair后可以进行统计;

Spatial:ArcGIS Repair前无法统计,ArcGIS Repair后可以进行统计;且Spatial可以修复此类错误。

检查方法:暂无(由容差问题造成,原始数据本身并不存在此类错误);

13366

内外环不合法

"invalid combination of interior exterior rings"

// *Cause: In an Oracle Spatial geometry, interior and exterior rings are not used consistently.

// *Action: Make sure that the interior rings corresponding to an exterior ring follow the exterior ring in the ordinate array.

ArcGIS:暂未实验;

Spatial:ArcGIS Repair前无法统计,ArcGIS Repair后可以进行统计;且Spatial无法修复此类错误。

检查方法:面自相交检查。

原文地址:https://www.cnblogs.com/6yuhang/p/8257001.html