Posts mit dem Label ORACLE werden angezeigt. Alle Posts anzeigen
Posts mit dem Label ORACLE werden angezeigt. Alle Posts anzeigen

Mittwoch, 5. Juni 2013

Bentley Map und der ORACLE Spatial Index

Zur Unterstützung von räumlichen Anfragen aus Bentley Map heraus an die ORACLE Tabellen muss die angefragte Featuretabelle einen räumlichen Index aufweisen.

Der räumliche Index ist in der Regel vom Typ = "spatial.index" und wird über die Geometriespalte erzeugt.

Ist dieser nicht vorhanden, können die räumlichen Abfragekriterien (Ansicht, Zaun, etc.) in Bentley Map nicht genutzt werden.


Der Datenimport oder die Datenabfrage wird dann mit einem Fehler beendet.


In dem nachstehenden SQL Script wird ein räumlicher Index mit dem Namen "gully_geometrie_spix" auf der Spalte "geometrie" der Tabelle " gully" erzeugt.

create index gully_geometrie_spix
   on gully(geometrie)
   indextype is mdsys.spatial_index
   parameters('sdo_indx_dims=2, layer_gtype=point');


Weiterhin sind die Index-Parameter zu berücksichtigen, handelt es sich beispielsweise um 2D Datenmengen, ist der Parameter "sdo_indx_dims=2" zu verwenden.

Als Geometrietypen können
  • point
  • line
  • polygon
  • multipoint
  • mulitline
  • multipolygon
verwendet werden.

Burkhard Steuck
http://www.geomapping.de

Freitag, 31. Mai 2013

Daten aus ORACLE Spatial importieren

Geometriedaten, die in einer ORACLE Spatial Tabelle gespeichert sind, können in Bentley Map importiert werden, dazu sind die nachstehenden Voraussetzungen zu erfüllen.

In der Datenbank muss eine Tabelle vorhanden sein, die
  1. einen Primärschlüssel ("id") und
  2. eine Geometriespalte ("mdsys.sdo_geometry")
enthält.

Nachstehend wird eine Tabelle "GULLY" erzeugt, die die Forderungen erfüllt.

create table gully
  (
    id number not null enable,
    geometrie mdsys.sdo_geometry,
    constraint gully_pk primary key (id)
 );


Weiterhin muss die Tabelle mit dem nachstehenden SQL Script in dem Metadaten-Katalog registriert werden.

insert into user_sdo_geom_metadata (table_name, column_name, diminfo, srid)
values (

     'gully', 
     'geometrie',
     mdsys.sdo_dim_array
     (mdsys.sdo_dim_element('x', -10000, 10000, 0.00050),
     mdsys.sdo_dim_element('y',  -10000, 10000, 0.00050)),
     null

);

Über das nachstehende SQL Script wird ein Punkt mit der Koordinate (X=12, Y=14 und Z=0)eingefügt.

insert into gully (id, geometrie) values (
 1,
 sdo_geometry(
      2001,
      null,
      sdo_point_type(12, 14, null),
      null,
      null)
);


Mit dem SQL Kommando "Commit" werden die Änderungen festgeschrieben.

commit;

In Bentley Map muss auf der Karteikarte "Importe" des Hauptdialogs "Map Interoperabilität" eine Verbindug mit der ORACLE Datenbank hergestellt werden, dazu muss zunächst ein "neuer Datenimport" mit der rechten Maustaste erstellt werden.
Anschließend muss mit der rechten Maustaste eine ORACLE Verbindugn hinzugefügt werden.




Aus der Liste der verfügbaren Tabellen wird die betreffende Tabelle ausgewählt.


Im unteren Bereich des Dialogs können teilweise die Verbindungs- und die Darstellungsparameter verändert werden.

Bezüglich der räumlichen Kriterien stellen Sie den Dialog wie folgt ein:



An dieser Stelle kann die Symbolik der zu importierenden Geometrien festgelegt werden.




Über die rechte Maustaste können die Daten in die Zeichnung importiert werden.

Die importiereten Daten können jetzt in Bentley Map genutzt werden.

Burkhard Steuck
www.geomapping.de