Re: Oracle Spatial SDO Aggregate Union fails with ORA-29913 ODCIAGGREGATEMERGE
Date: Thu, 12 Jun 2008 18:32:19 +0200
Message-ID: <48514f99$0$14357$e4fe514c@news.xs4all.nl>
"Eduard Witteveen" <eywitteveen_at_gmail.com> schreef in bericht
news:f26766d3-a914-4f72-96d9-05226fc4bb5e_at_c58g2000hsc.googlegroups.com...
On Jun 12, 3:04 pm, "Shakespeare" <what..._at_xs4all.nl> wrote:
> ...
> ORA-29913 may have something to do with a too small tolerance setting. Try
> a
> larger one and see what happens.
Look at the end for output of the tolerance's
> What OS are you on?
The server is running on:
cpu: 3.40 GHZ intel xeon(hyperthreaded)
ram: 4032mb
os: Windows 2003 SP
servicepack: 2
<tolorance10cm>
SQL> SELECT
2 DISTINCT(GUID),
3 SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(GEOMETRIE, 0.1)) AS GEOMETRIE
4 FROM
5 (
6 SELECT
7 COALESCE(MULTI.PARENT, GUIDS.ID) AS GUID,
8 TOPO.GEOMETRIE AS GEOMETRIE
9 FROM DGDTW_TOPOGRAFIE TOPO
10 INNER JOIN DGDTW_OBJECTGUIDS GUIDS
11 ON GUIDS.DGDTW_PRIMARY_KEY = TOPO.ID
12 LEFT OUTER JOIN DGDTW_PARENT_CHILD MULTI
13 ON MULTI.CHILD = GUIDS.ID
14 AND ARCHIVE IS NULL
15 WHERE TOPO.VERVAL IS NULL
16 AND NOT TOPO.PARAMETERS = 515
17 -- check the input for the SDO_AGGR_UNION
18 AND TOPO.GEOMETRIE.SDO_GTYPE = 2003
19 AND SDO_GEOM.VALIDATE_GEOMETRY(GEOMETRIE, 0.1) = 'TRUE'
20 ) LINES
21 GROUP BY GUID;
SELECT
*
FOUT in regel 1:
.ORA-29913: Er is een fout opgetreden bij het uitvoeren van de
toelichting
ODCIAGGREGATEMERGE.
</tolorance10cm>
<tolorance1m>
SQL> SELECT
2 DISTINCT(GUID),
3 SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(GEOMETRIE, 1)) AS GEOMETRIE
4 FROM
5 (
6 SELECT
7 COALESCE(MULTI.PARENT, GUIDS.ID) AS GUID,
8 TOPO.GEOMETRIE AS GEOMETRIE
9 FROM DGDTW_TOPOGRAFIE TOPO
10 INNER JOIN DGDTW_OBJECTGUIDS GUIDS
11 ON GUIDS.DGDTW_PRIMARY_KEY = TOPO.ID
12 LEFT OUTER JOIN DGDTW_PARENT_CHILD MULTI
13 ON MULTI.CHILD = GUIDS.ID
14 AND ARCHIVE IS NULL
15 WHERE TOPO.VERVAL IS NULL
16 AND NOT TOPO.PARAMETERS = 515
17 -- check the input for the SDO_AGGR_UNION
18 AND TOPO.GEOMETRIE.SDO_GTYPE = 2003
19 AND SDO_GEOM.VALIDATE_GEOMETRY(GEOMETRIE, 1) = 'TRUE'
20 ) LINES
21 GROUP BY GUID;
GUID
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
{001FA2FC-1448-42C5-BC5F-480AD7392891}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(-3,403E+38, 3,4028E+38, -3,403E+38, -3,403E+38, 3,4028E+38, -3,403E
+38, 3,402
8E+38, 3,4028E+38, -3,403E+38, 3,4028E+38))
{003E7376-7418-4361-A139-F58251E06127}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(252697,14, 556409,2, 252690,788, 556404,936, 252711,182,
556400,086, 252716,6
7, 556404,21, 252697,14, 556409,2))
GUID
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
{00708284-7AB4-4CCC-82D1-CE86BD38777F}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(247689,96, 558009,63, 247722,7, 558019,81, 247722,152, 558021,61, 247689,42, 558011,33, 247689,96, 558009,63))
{00832FCD-A3D6-4422-BDE1-BE937C0740E8}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(241710,281, 551011,756, 241711,873, 551007,536, 241720,75,
551012,4, 241735,7
................................ ................................ ................................
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR AY(244241,1, 564379,01, 244242,76, 564376,3, 244259,59, 564386,54, 244251,37, 56
4400,14, 244245,54, 564396,48, 244251,6, 564385,54, 244241,1, 564379,01))
{7A42B22C-F30D-460C-8615-8B6083BBB3F7}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(247852,537, 558231,679, 247850,79, 558231,19, 247855,48, 558215,5,
247862,903
, 558191,244, 247866,38, 558179,88, 247868,317, 558180,469, 247864,422, 558193,2
38, 247863,5, 558196,26, 247852,537, 558231,679))
GUID
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
{7A687E8B-B8EC-41D9-80CB-3EC2C2C44EF2}
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
SDO_ORDINATE_ARR
AY(-3,403E+38, 3,4028E+38, -3,403E+38, -3,403E+38, 3,4028E+38, -3,403E
+38, 3,402
8E+38, 3,4028E+38, -3,403E+38, 3,4028E+38))
ERROR:
ORA-03113: Einde-van-bestand op communicatiekanaal.
375 rijen zijn geselecteerd.
SQL>
</tolorance1m>
<tolorance1cm-withoutcheck>
SQL> SELECT
2 DISTINCT(GUID),
3 SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(GEOMETRIE, .01)) AS GEOMETRIE
4 FROM
5 (
6 SELECT
7 COALESCE(MULTI.PARENT, GUIDS.ID) AS GUID,
8 TOPO.GEOMETRIE AS GEOMETRIE
9 FROM DGDTW_TOPOGRAFIE TOPO
10 INNER JOIN DGDTW_OBJECTGUIDS GUIDS
11 ON GUIDS.DGDTW_PRIMARY_KEY = TOPO.ID
12 LEFT OUTER JOIN DGDTW_PARENT_CHILD MULTI
13 ON MULTI.CHILD = GUIDS.ID
14 AND ARCHIVE IS NULL
15 WHERE TOPO.VERVAL IS NULL
16 AND NOT TOPO.PARAMETERS = 515
17 ) LINES
18 GROUP BY GUID;
SELECT
*
FOUT in regel 1:
.ORA-29913: Er is een fout opgetreden bij het uitvoeren van de
toelichting
ODCIAGGREGATEMERGE.
</tolorance1cm-withoutcheck>
<tolorance10cm-withoutcheck>
SQL> SELECT
2 DISTINCT(GUID),
3 SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(GEOMETRIE, 0.1)) AS GEOMETRIE
4 FROM
5 (
6 SELECT
7 COALESCE(MULTI.PARENT, GUIDS.ID) AS GUID,
8 TOPO.GEOMETRIE AS GEOMETRIE
9 FROM DGDTW_TOPOGRAFIE TOPO
10 INNER JOIN DGDTW_OBJECTGUIDS GUIDS
11 ON GUIDS.DGDTW_PRIMARY_KEY = TOPO.ID
12 LEFT OUTER JOIN DGDTW_PARENT_CHILD MULTI
13 ON MULTI.CHILD = GUIDS.ID
14 AND ARCHIVE IS NULL
15 WHERE TOPO.VERVAL IS NULL
16 AND NOT TOPO.PARAMETERS = 515
17 ) LINES
18 GROUP BY GUID;
SELECT
*
FOUT in regel 1:
.ORA-29913: Er is een fout opgetreden bij het uitvoeren van de
toelichting
ODCIAGGREGATEITERATE.
ORA-13347: De cośrdinaten voor een boog mogen niet gelijk zijn.
<tolorance10cm-withoutcheck>
It looks like you have some problematic geometries (which is often the case with spatial). The aggregate causes points to overlap. You could try a SMALLER tolerance, like 0.0005. Still, with the aggregate function, if two geometries have some overlap, they will be considered one, which could cause some strange effects. Another thing I have seen in the past is that flushing the SGA before executing your script may help.
By the way: the error is a wrong translation. Call out is translated as toelichting, which is not correct. ODCIAGGREGATEITERATE is an external callout function. Too large values (in size) can cause problems like this. I have not seen workarounds for this. But there must be another way to join multiple geometries to one.
Shakespeare Received on Thu Jun 12 2008 - 11:32:19 CDT