【问题标题】:SDO_GEOMETRY error 13348 [Element <1>] [Ring <1>], ora-13348SDO_GEOMETRY 错误 13348 [元素 <1>] [环 <1>],ora-13348
【发布时间】:2018-01-25 16:45:50
【问题描述】:

我有一个查询,它返回错误 13348 [Element ] [Ring ]

select sdo_geom.validate_geometry_with_context (SDO_GEOMETRY(2003, 32638, null, SDO_ELEM_INFO_ARRAY(1,1003,1, 123,2003,1),
SDO_ORDINATE_ARRAY(503155.9729, 4545931.3636, 503141.2136, 4545929.3680, 503120.7778, 4545890.0976, 503120.5720, 4545869.2721, 
503120.5720, 4545846.1102, 503115.0572, 4545828.4628, 503107.3365, 4545820.7423, 503105.1307, 4545799.7861, 503085.2776, 4545788.7565, 
503066.5272, 4545774.4181, 503063.7454, 4545752.8579, 503053.2918, 4545740.2265, 503051.0860, 4545718.1675, 503021.3061, 4545643.1667,
 503002.5557, 4545606.7692, 502984.1996, 4545579.2346, 502958.4378, 4545545.0038, 502957.3349, 4545521.8417, 502950.7171, 4545493.1648,
 502944.8510, 4545482.3126, 502946.1332, 4545483.6864, 502966.1585, 4545500.6307, 503002.0277, 4545530.9815, 503031.8558, 4545572.0962,
 503040.7238, 4545563.2283, 503045.0232, 4545524.5323, 503060.0716, 4545494.4353, 503064.3714, 4545434.2415, 503072.9704, 4545346.1006,
 503077.2699, 4545309.5543, 503083.7193, 4545294.5056, 503107.6265, 4545285.9675, 503105.9029, 4545295.7362, 503097.0790, 4545351.9868, 
503095.9761, 4545377.3547, 503105.9029, 4545410.4434, 503109.2116, 4545450.1496, 503109.2116, 4545477.7236, 503108.1086, 4545527.3564, 
503107.0057, 4545546.1067, 503095.9761, 4545559.3421, 503088.2555, 4545576.9894, 503102.5938, 4545579.1952, 503104.7997, 4545606.7692, 
503088.2555, 4545628.8282, 503080.5348, 4545648.6813, 503079.4317, 4545671.8434, 503080.5348, 4545708.2408, 503091.5643, 4545740.2265, 
503102.5938, 4545771.1093, 503122.4471000010, 4545785.4476, 503152.2268, 4545801.9919, 503162.1534, 4545829.5659, 503165.4623, 4545859.3456,
 503167.6682, 4545885.8165, 503177.5947, 4545881.4047, 503204.0656, 4545876.9928, 503228.3306, 4545873.6840, 503243.7720, 4545873.6840,
 503259.2134, 4545885.8165, 503276.8605, 4545901.2578, 503288.2421, 4545903.2663, 503298.8938, 4545935.9514, 503272.4488, 4545936.5523,
 503254.8015, 4545925.5229, 503231.6395, 4545912.2874, 503218.7349, 4545921.1109, 503207.7054, 4545929.9346, 503196.6759, 4545938.7583, 
503175.7196, 4545945.3760, 503166.8961, 4545944.2730, 503155.9729, 4545931.3636,

494122.3421, 4546309.1762, 494141.8681, 4546318.6243, 494152.5760, 4546337.5203, 494150.0564, 
4546361.4553, 494138.7187, 4546380.9813, 494124.5329, 4546393.4604, 494124.3262, 4546393.7363, 494111.6344, 4546386.7131, 
494083.5899, 4546353.5178, 494075.7316, 4546341.9923, 494071.1720, 4546333.6315, 494084.1080, 4546338.4824, 494095.4270, 
4546338.4824, 494106.7460, 4546323.9296, 494109.3666, 4546315.5439, 494115.4135, 4546311.6956, 494122.3421, 4546309.1762
)), 0.05) from dual;

有两个多边形,当我只选择一个它的工作并返回 true 时, 有问题SDO_ELEM_INFO_ARRAY,我现在不知道怎么写 请帮助我,并解释如何添加第三个,第四个... n 多边形

【问题讨论】:

    标签: oracle spatial oracle-spatial


    【解决方案1】:

    您的几何图形中存在三个错误:

    1. 第二个环 (2003) 的偏移量不正确。应该是 145,而不是 123
    2. 第二个环不是内环。应该是 1003
    3. 对于多多边形(不是 2003),sdo_gtype 应该是 2007。

    像这样:

    select sdo_geom.validate_geometry_with_context (
      SDO_GEOMETRY(
        2007, 32638, null, 
        SDO_ELEM_INFO_ARRAY(1,1003,1, 145,1003,1),
        SDO_ORDINATE_ARRAY(
          503155.9729, 4545931.3636, 503141.2136, 4545929.3680, 503120.7778, 4545890.0976, 503120.5720, 4545869.2721, 503120.5720, 4545846.1102, 
          503115.0572, 4545828.4628, 503107.3365, 4545820.7423, 503105.1307, 4545799.7861, 503085.2776, 4545788.7565, 503066.5272, 4545774.4181, 
          503063.7454, 4545752.8579, 503053.2918, 4545740.2265, 503051.0860, 4545718.1675, 503021.3061, 4545643.1667, 503002.5557, 4545606.7692, 
          502984.1996, 4545579.2346, 502958.4378, 4545545.0038, 502957.3349, 4545521.8417, 502950.7171, 4545493.1648, 502944.8510, 4545482.3126, 
          502946.1332, 4545483.6864, 502966.1585, 4545500.6307, 503002.0277, 4545530.9815, 503031.8558, 4545572.0962, 503040.7238, 4545563.2283, 
          503045.0232, 4545524.5323, 503060.0716, 4545494.4353, 503064.3714, 4545434.2415, 503072.9704, 4545346.1006, 503077.2699, 4545309.5543, 
          503083.7193, 4545294.5056, 503107.6265, 4545285.9675, 503105.9029, 4545295.7362, 503097.0790, 4545351.9868, 503095.9761, 4545377.3547, 
          503105.9029, 4545410.4434, 503109.2116, 4545450.1496, 503109.2116, 4545477.7236, 503108.1086, 4545527.3564, 503107.0057, 4545546.1067, 
          503095.9761, 4545559.3421, 503088.2555, 4545576.9894, 503102.5938, 4545579.1952, 503104.7997, 4545606.7692, 503088.2555, 4545628.8282, 
          503080.5348, 4545648.6813, 503079.4317, 4545671.8434, 503080.5348, 4545708.2408, 503091.5643, 4545740.2265, 503102.5938, 4545771.1093, 
          503122.4471, 4545785.4476, 503152.2268, 4545801.9919, 503162.1534, 4545829.5659, 503165.4623, 4545859.3456, 503167.6682, 4545885.8165, 
          503177.5947, 4545881.4047, 503204.0656, 4545876.9928, 503228.3306, 4545873.6840, 503243.7720, 4545873.6840, 503259.2134, 4545885.8165, 
          503276.8605, 4545901.2578, 503288.2421, 4545903.2663, 503298.8938, 4545935.9514, 503272.4488, 4545936.5523, 503254.8015, 4545925.5229, 
          503231.6395, 4545912.2874, 503218.7349, 4545921.1109, 503207.7054, 4545929.9346, 503196.6759, 4545938.7583, 503175.7196, 4545945.3760, 
          503166.8961, 4545944.2730, 503155.9729, 4545931.3636, 
          494122.3421, 4546309.1762, 494141.8681, 4546318.6243, 494152.5760, 4546337.5203, 494150.0564, 
          4546361.4553, 494138.7187, 4546380.9813, 494124.5329, 4546393.4604, 494124.3262, 4546393.7363, 494111.6344, 4546386.7131, 
          494083.5899, 4546353.5178, 494075.7316, 4546341.9923, 494071.1720, 4546333.6315, 494084.1080, 4546338.4824, 494095.4270, 
          4546338.4824, 494106.7460, 4546323.9296, 494109.3666, 4546315.5439, 494115.4135, 4546311.6956, 494122.3421, 4546309.1762
        )
      ), 
      0.05
    ) from dual;
    

    不确定您所说的“如何添加第三个、第四个……n 个多边形”是什么意思。您的意思是您需要构建一个包含大量元素的多面体对象吗?

    如果您的目标是用许多对象(例如许多地块)填充一个表,那么您需要为每个对象插入一行(= 一个 sdo_geometry)。不要将它们全部放在一个 sdo_geometry 对象中。

    你能解释一下你想要达到什么目标吗?

    【讨论】:

    • 第三个和第四个多边形的 145 会怎样
    • 145 是坐标数组中第二个元素开始的偏移量。如果您想添加更多内容,请使用相同的技术。您确实需要首先阅读并理解 Oracle Spatial 开发人员指南。
    • 多边形的数据来自哪里?并不希望您完全手动构建几何图形。几何图形通常从文件中加载或使用 GIS 工具捕获
    • 如果你想从一个表格中的一组多边形构造一个多多边形,那么看看 SDO_AGGR_UNION() 构造。
    猜你喜欢
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多