像这样检查几何对象时
SELECT t.STREET_ID,
t.FC_GEOM.SDO_SRID SRID,
SUBSTR(t.FC_GEOM.SDO_GTYPE, 1, 1) DIM_COUNT,
SUBSTR(t.FC_GEOM.SDO_GTYPE, 4, 1) GTYPE,
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(t.FC_GEOM, 0.05) VALIDATION_RES
FROM ST_SEGMENT t WHERE t.STREET_ID = 'STEID5005';
我得到了所有(74行)TRUE
验证结果,如您所见
但是当我试着计算几何对象的长度
SELECT t.STREET_ID, SDO_GEOM.SDO_LENGTH(t.FC_GEOM, 0.005, 'KM')
FROM ST_SEGMENT t WHERE t.STREET_ID = 'STEID5005';
我收到这些错误
ORA-13029: Invalid SRID in the SDO_GEOMETRY object
ORA-06512: at "*****.MD", line 1723
ORA-06512: at "*****.MDERR", line 8
ORA-06512: at "*****.SDO_GEOM", line 2217
ORA-06512: at "*****.SDO_GEOM", line 2149
ORA-06512: at line 1
13029. 00000 - "Invalid SRID in the SDO_GEOMETRY object"
*Cause: There is an invalid SDO_SRID in the SDO_GEOMETRY object.
The specified SRID may be outside the valid SRID range.
*Action: Verify that the geometries have valid SRIDs.
为什么我仍然收到此错误?
1条答案
按热度按时间cbjzeqam1#
我很惊讶你的例子中的验证返回
TRUE
,也就是说没有错误。你应该得到同样的13029
错误。例如:出现错误的原因是您的数据是3D(在您显示的示例中,
SDO_GTYPE
是3002
),但坐标系是2D。请查看计算3D直线长度时发生的情况:如果您的数据不是真正的3D(所有Z都是或甚至是NULL),则可以执行以下操作:
请注意,指定单位的正确方式是
unit=xxx
。结果是: