Announcement

Collapse
No announcement yet.

Oracle spatial 11g - 3D-Geometrie speichern und KML-Export

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oracle spatial 11g - 3D-Geometrie speichern und KML-Export

    Hi,

    versuche mal mein Problem auf diesem Wege zu schildern.

    Ich arbeite derzeit mit einer Oracle Spatial 11g - Datenbank und in dieser mit
    2d und 3d-Geometrien. Ab dieser Version ist es nun möglich Flächen zu
    3D-Körpern zu extrudieren und des Volumen zu ermitteln. Dies klappt auch weitesgehend reibungslos.

    Das Problem liegt nun darin diese extrudierten Flächen als 3D-Geometrie in einer Tabelle zu speichern. Anbei ist der SQL-Code des bisherigen Workflows:

    1. Anlegen der Tabellen für die 2D- und 3D-Geomtrien (inkl. Metadaten und Spatial-Index):
    Code:
    -- Tabelle für 2D-Geometrien
    CREATE
        TABLE ta_gebaeude(
            geometrie MDSYS.SDO_GEOMETRY
           ,flaeche NUMBER(12,3)
        );
    
    --Metadaten 2D
    INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
      VALUES
      (
      	'ta_gebaeude',
      	'geometrie',
        MDSYS.SDO_DIM_ARRAY
          (MDSYS.SDO_DIM_ELEMENT('X',4439900.00, 4440020.00, 0.005),
           MDSYS.SDO_DIM_ELEMENT('Y', 5664050.00, 5664130.00, 0.005)
          ),
         31468
      );
    
    -- Spatial Index 2D
    CREATE
        INDEX ta_gebaeude_index ON ta_gebaeude(geometrie) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    
    
    -- Tabelle für 3D-Geometrien
    CREATE
        TABLE ta_3dgebaeude(
            geometrie3d MDSYS.SDO_GEOMETRY
        );
    
    -- Metadaten 3D
    INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
      VALUES
      (
      	'ta_3dgebaeude',
      	'geometrie3d',
        MDSYS.SDO_DIM_ARRAY
          (	MDSYS.SDO_DIM_ELEMENT('X',4439900.00, 4440020.00, 0.005),
           	MDSYS.SDO_DIM_ELEMENT('Y', 5664050.00, 5664130.00, 0.005),
    	MDSYS.SDO_DIM_ELEMENT('Z', 0, 200, 0.005)
          ),
         31468
      );
    
    -- Spatial Index
    CREATE
        INDEX ta_3dgebaeude_index ON ta_3dgebaeude(geometrie3d) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('SDO_INDX_DIMS=3');
    2. Einfügen einer 2D-Geomtrie (Grundfläche)
    Code:
    INSERT
        INTO
            ta_gebaeude
        VALUES
            (
                MDSYS.SDO_GEOMETRY(
                    2003
                    ,31468
                    ,NULL
                    ,MDSYS.SDO_ELEM_INFO_ARRAY(
                        1
                        ,1003
                        ,1
                    )
                    ,MDSYS.SDO_ORDINATE_ARRAY(
                        	4439975.91,5664077.07,
    		4439967.98,5664072.06,
    		4439975.33,5664060.42,
    		4439983.26,5664065.43,
    		4439975.91,5664077.07
                    )
                )
                ,null --flaeche
            );
    3. Berechnung des Volumen der extrudierten Geometrie
    Code:
    SELECT SDO_GEOM.SDO_VOLUME(SDO_UTIL.EXTRUDE(
    	GEOMETRIE,
      	SDO_NUMBER_ARRAY(0),
      	SDO_NUMBER_ARRAY(10),
      	'false', --validation
      	0.005),0.005) 
    from ta_gebaeude;
    Das funktioniert soweit reibungslos. Nun möchte ich über einen INSERT-befehl die extrudierte Fläche in die Tabelle ta_3dgebaeude reinbekommen. Meine bisherigen Versuche mit folgendem Befehl schlugen fehl...
    Code:
    INSERT
        INTO
            ta_3dgebaeude
        select   
            SDO_UTIL.EXTRUDE(
    		GEOMETRIE,
      		SDO_NUMBER_ARRAY(0),
      		SDO_NUMBER_ARRAY(10),
      		'false', --validation
      		0.005)
    from ta_gebaeude;
    Nach dem Ausführen dieser Anweisung erhalte ich folgende Fehlermeldung:


    ORA-29875: Routine ODCINDEXINSERT nicht erfolgreich ausgeführt
    ORA-13365: Ebenen-SRID stimmt nicht mit Geometrie-SRID überein
    ORA-06512: in "MDSYS.SDO_INDEX_METHOD_10I", Zeile 709
    ORA-06512: in "MDSYS.SDO_INDEX_METHOD_10I", Zeile 225


    Habe danach die Metadaten und Spatial-Indizes verändert, erhalte aber dennoch dieselbe Fehlermeldung. Hat jemand eine Rat wie der Fehler zu beheben ist??

    Anschließend würde ich gerne die entstandene 3D-Geometrie als KML-exportieren und in Google Earth visualisieren. Von Oracles Seite wird dafür auch ein Tool bereitgestellt, aber das funktioniert irgendwie auch nicht so recht. Gibt es hierfür eventuell ein paar Tipps bezüglich des Workflows bzw. gibt es Alternative Tools, die ein KML-Export unterstützen.

    Bin für jede Ratschläge dankbar!

    Grüße
Working...
X