HOW TO
Beim Erstellen eines Abfrage-Layers, der eine Oracle-Ansicht referenziert, die ein Oracle Spatial-Attribut enthält, kann es erforderlich sein, einen räumlichen Index zu implementieren. Ohne einen räumlichen Index kann es bei Abfragen von Tabellen und Ansichten mit einer großen Anzahl von Attributen zu Leistungseinbußen kommen.
In Fällen, in denen die Performance ein Problem darstellt, sollte beim Ableiten eines Oracle Spatial-Attributs durch die Ansicht ein funktionsbasierter Index für die Attribute der Tabelle erstellt werden, die zur Ableitung des räumlichen Attributs verwendet werden.
Das folgende Beispiel beinhaltet die Tabelle "ellipse", die kein räumliches Attribut besitzt. Die Ansicht namens "sdo_ellipse" erstellt das Attribut "SDO_Geometry".
DROP TABLE ellipse; CREATE TABLE ellipse ( id NUMBER(38) NOT NULL UNIQUE, name VARCHAR2(50), x NUMBER, y NUMBER, semi_major NUMBER, semi_minor NUMBER, azimuth NUMBER); INSERT INTO ellipse VALUES (1, 'ellipse 1', 10, 10, 500, 250, 0); INSERT INTO ellipse VALUES (2, 'ellipse 2', 10, 10, 500, 250, 90); INSERT INTO ellipse VALUES (3, 'ellipse 3', 10, 10, 500, 250, 180); INSERT INTO ellipse VALUES (4, 'ellipse 4', 10, 10, 500, 250, 45);
DROP VIEW sdo_ellipse; CREATE VIEW sdo_ellipse AS SELECT id, name, SDO_UTIL.ELLIPSE_POLYGON(x,y,semi_major,semi_minor,azimuth,0.1) shape FROM ellipse;
Jetzt gibt es weder ein räumliches Attribut, noch einen räumlichen Index. Der Layer wird in ArcGIS erfolgreich dargestellt, jedoch treten Leistungsprobleme auf, wenn die Tabelle oder die Ansicht sehr viele Datensätze enthält. Die Implementierung eines funktionsbasierten Index kann zur Leistungsverbesserung beitragen.
DROP INDEX sdo_ellipse_spindx; DELETE FROM user_sdo_geom_metadata WHERE table_name = 'ELLIPSE'; INSERT INTO user_sdo_geom_metadata VALUES ( 'ellipse', 'MDSYS.SDO_UTIL.ELLIPSE_POLYGON(x,y,semi_major,semi_minor,azimuth,0.1)', SDO_DIM_ARRAY( SDO_DIM_ELEMENT('Lat', -90, 90, 0.05), SDO_DIM_ELEMENT('Long', -180, 180, 0.05)), 8307);
DELETE FROM user_sdo_geom_metadata WHERE table_name = ‘sdo_ellipse’; insert into user_sdo_geom_metadata (table_name, column_name, diminfo, srid) values (‘sdo_ellipse’, ‘SHAPE’, SDO_DIM_ARRAY( SDO_DIM_ELEMENT(‘Lat’, -90, 90, 0.05), SDO_DIM_ELEMENT(‘Long’, -180, 180, 0.05)), 8307); commit;
CREATE INDEX sdo_ellipse_spindx ON ellipse(SDO_UTIL.ELLIPSE_POLYGON(x,y,semi_major,semi_minor,azimuth,0.1)) INDEXTYPE IS MDSYS.SPATIAL_INDEX_V2;
Aufgrund des erstellten räumlichen Index wird in ArcGIS eine bessere Leistung erzielt, wenn große Datenmengen in der Ansicht bzw. Tabelle angezeigt werden. Weitere Informationen zur räumlichen Indizierung finden Sie in diesem Dokument.
Hilfe von ArcGIS-Expert*innen erhalten
Die Esri Support-App herunterladen