Startseite › Foren › Map 3D Basics › SDO_AGGR_CONCAT_LINES: ORA-29400: / ORA-06502: / ORA-06512
-
AutorBeiträge
-
Vorbemerkung: Das Problem scheint (für mich) „gelöst durch Vermeidung“ – mit einem anderen Befehl scheint es zu klappen.
Wenn das aber für jemand eine Herausforderung ist, dann bin ich gespannt auf Ergebnisse.
Peter
—————————————————————Eine Spezialfrage an die Oracle-Spezialisten (Oracle 11).
ich habe eine Abwasserhaltung, bestehend auf 4 Segmenten. In AutoCAD-Begriffen:
– 1 Linie, 1.5 m
– 1 Linie, 1.5 m
– 1 Polylinie; 4 m Gerade – Ausrundung Viertelkreis Radius 4 – 150 m Gerade – 3 m Gerade
– 1 Linie, 0.4 mAlles sitzt sauber Punkt-auf-Punkt, Rundungsprobleme dürfte es nicht geben.
Oracle- Validierung in Ordnung; geometrische Prüfung aus MAP in OrdnungAber – jetzt kommt’s. Ich will mit SDO_AGGR_CONCAT_LINES diese Linien zusammenführen,
SELECT
SDO_AGGR_CONCAT_LINES (
L.GEOM
)
FROM
WW_LINE L
WHERE
FID IN (47145
47146
58182
58183);und ich bekomme:
ORA-29400: data cartridge error
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at „MDSYS.SDO_UTIL“, line 1852
29400. 00000 – „data cartridge error\n%s“
*Cause: An error has occurred in a data cartridge external procedure.
This message will be followed by a second message giving
more details about the data cartridge error.
*Action: See the data cartridge documentation
for an explanation of the second error message.Da gibt es einen gewaltigen Artikel
https://gis.stackexchange.com/questions/290515/error-concatenating-lines-in-oracle-spatial
der sagt ungefähr:
– laut Oracle sind abgerundete Elemente nicht erlaubt
– es könnte an Überlagerungen der Linien liegen
– man soll entgegen Oracle SDO_AGGR_UNION verwendenJetzt habe ich kreuz und quer probiert und gebastelt und gefunden:
– es gibt andere Abwasserhaltungen auch, da ist die Abrundung kein Problem
– wenn ich nicht diese 4 Segmente zusammenhänge, sondern aus den 4 irgendwelche, dann kein Fehler
– kein Fehler, wenn ich die Ausrundung wegnehme
– kein Fehler, wenn ich die Laufrichtung der „Polylinie“ wegnehmeHier die Koordinaten der 4 Linien; die Fliess- / Verbindungsrichtung ist 182 – 183 – 145 – 146
47145 MDSYS.SDO_GEOMETRY(2002,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,4,3, 1,2,1, 3,2,2, 7,2,1),MDSYS.SDO_ORDINATE_ARRAY(2708505.684,1278836.14, 2708503.253,1278837.696, 2708498.719,1278838.317, 2708495.31,1278835.265, 2708435.915,1278693.834, 2708431.984,1278692.847))
47146 MDSYS.SDO_GEOMETRY(2002,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(2708431.984,1278692.847, 2708431.596,1278692.75))
58182 MDSYS.SDO_GEOMETRY(2002,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(2708508.04,1278834.731, 2708506.862,1278835.436))
58183 MDSYS.SDO_GEOMETRY(2002,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(2708506.862,1278835.436, 2708505.684,1278836.14))ist das erklärbar und vermeidbar?
Hallo Peter,
das Problem kenne ich nur zu gut. Ich bin auch zuerst darauf hereingefallen, aber Oracle schreibt in der Dokumentation ganz eindeutig, dass man die Funktion nicht benutzen darf, wenn Bögen in den Geometrien sind. Dass es manchmal trotzdem klappt, ist die Tücke. SDO_AGGR_UNION darf man auch nicht verwenden, wenn man die Richtung beibehalten will, denn damit laufen die Linien immer von links nach rechts und die Koordinaten werden seltsamerweise in den Nachkommastellen leicht verändert. Wird ja auch nicht empfohlen. Ich nutze also weiterhin die CONCAT-Funktion, aber in Kombination mit einer Linearisierung über SDO_ARC_DENSIFY. Das klappt immer.
Ich hoffe, dass das auch in deinem Fall hilft.Schönen Tag
Gorden -
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.