|
Oracle Spatial
Für den Zugriff auf ORACLE-SDO Ebenen sind umfangreiche Einstellungen möglich/nötig.
Im besonderen die Beschaffung von Informationen zu der geographischen Ausdehnung der Ebenenelemente ist nicht immer ganz trivial. Iwan kann mit diesen (ansonsten optionalen) Informationen einige Optimierungen vornehmen.
Da iwan als Quellenangabe jedes abfragbare Datenbankobjekt (Tabellenname, Synonyme, View, Select - Statements usw.) akzeptiert, greift er nicht direkt auf die Informationen in der SDO_GEOM_METADATA Tabelle zu.
Wenn der Zugriff auf die USER_SDO_GEOM_METADATA Informationen möglich ist, kann durch einen View auf diese Informationen zugegriffen werden.
Ist die Angabe nicht einfach möglich, verwenden Sie alternativ den Parameter theInitExtent.
View für die Extent-Ermittlung im iwan StilCREATE OR REPLACE VIEW VW_IWANSTYLE_EXTENTS AS ( SELECT XVALS.TABLE_NAME SOURCE, XVALS.XMIN XMIN, YVALS.YMIN YMIN , XVALS.XMAX XMAX, YVALS.YMAX YMAX FROM (SELECT e.sdo_lb as xmin, e.sdo_ub as xmax, G.TABLE_NAME,G.COLUMN_NAME from user_Sdo_geom_metadata G, TABLE(G.diminfo)e WHERE e.sdo_dimname='X') XVALS, (SELECT e.sdo_lb as ymin, e.sdo_ub as ymax, G.TABLE_NAME,G.COLUMN_NAME from user_Sdo_geom_metadata G, TABLE(G.diminfo)e WHERE e.sdo_dimname='Y') YVALS WHERE XVALS.TABLE_NAME = YVALS.TABLE_NAME
AND XVALS.COLUMN_NAME = YVALS.COLUMN_NAME );
Ermittlung der Ausdehnung aller Elemente einer Tabelle
Wenn Sie Probleme bei der Zuweisung der DIMINFO Daten für USER_SDO_GEOM_METADATA haben, hilft Ihnen dieses PL/SQL Skript weiter.
DECLARE
v_tableName VARCHAR(50) := 'ALK_FL'; v_columnName VARCHAR(50) := 'GEOM';
BEGIN UPDATE user_sdo_geom_metadata SET diminfo = (SELECT MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', EX.XMIN, EX.XMAX, .005), MDSYS.SDO_DIM_ELEMENT('Y', EX.YMIN, EX.YMAX, .005)) FROM (SELECT
v.constVal, SUM(DECODE(v.idx,1,v.column_value,0)) xmin, SUM(DECODE(v.idx,2,v.column_value,0)) ymin, SUM(DECODE(v.idx,3,v.column_value,0)) xmax, SUM(DECODE(v.idx,4,v.column_value,0)) ymax FROM (SELECT b.COLUMN_VALUE,
rowNum idx, 1 constVal FROM (SELECT SDO_TUNE.EXTENT_OF(v_tableName,v_columnName) geom FROM dual) a, TABLE(a.geom.sdo_ordinates) b )v GROUP BY v.constVal ORDER BY v.constVal )EX ) WHERE TABLE_NAME = v_tableName AND COLUMN_NAME=v_columnName; END; /
|