Startseite Foren Basics SDO_AGGR_CONCAT_LINES: ORA-29400: / ORA-06502: / ORA-06512

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beiträge
  • Peter2
    Teilnehmer
    Beitragsanzahl: 8

    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 m

    Alles sitzt sauber Punkt-auf-Punkt, Rundungsprobleme dürfte es nicht geben.
    Oracle- Validierung in Ordnung; geometrische Prüfung aus MAP in Ordnung

    Aber – 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 verwenden

    Jetzt 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“ wegnehme

    Hier 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?

    Gorden Kock
    Administrator
    Beitragsanzahl: 42

    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

    Peter2
    Teilnehmer
    Beitragsanzahl: 8

    Danke, Gorden
    für die Rückmeldung. Für mich ist in dem konkreten Fall die Laufrichtung egal, weil es nur um eine Distanzberechnung geht. Aber ich werde es mir notieren.

    Grüsse
    Peter

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.