Sonntag, 1. Juni 2008

Alternative Bestimmung der MBR's in Oracle Spatial

Zur vollständigen Qualifizierung der Metadaten in Oracle Spatial benötigt man das Minimal Bounding Rectangle, MBR, dessen Seiten parallel zu den Achsen des Koordinatensystems verlaufen. Hiefür gibt es die speziellen Funktionen sdo_min_mbr_ordinate u. sdo_max_mbr_ordinate in Oracle Spatial.

Unlängst bin ich beim Versuch der Bestimmung des MBR's in folgenden Fehler gelaufen (11g DB):


SQL> select MIN(sdo_geom.sdo_min_mbr_ordinate(geometry, 1)) minX,
2 MAX(sdo_geom.sdo_max_mbr_ordinate(geometry, 1)) maxX,
3 MIN(sdo_geom.sdo_min_mbr_ordinate(geometry, 2)) minY,
4 MAX(sdo_geom.sdo_max_mbr_ordinate(geometry, 2)) maxY
5 from ROADS;
MAX(sdo_geom.sdo_max_mbr_ordinate(geometry, 2)) maxY
*
FEHLER in Zeile 4:
ORA-06533: Index oberhalb der Grenze
ORA-06512: in "MDSYS.SDO_GEOM", Zeile 2095
ORA-06512: in "MDSYS.SDO_GEOM", Zeile 2113
.

In diesem Fall sollte man eine alternative MBR-Bestimmung anwenden:

SQL> select min(t.x),max(t.x),
2 min(t.y),max(t.y)
3 from roads g, table(sdo_util.getvertices(g.geometry)) t;

MIN(T.X) MAX(T.X) MIN(T.Y) MAX(T.Y)
---------- ---------- ---------- ----------
11,5615495 14,756139 51,3734974 53,4149581
.

Friedhold

Keine Kommentare: