ArcSDE vs. Oracle Spatial 13

來源:互聯網
上載者:User



I. 空間關係運算

以上兩個章節是必不可少的基礎,涉及到空間資料在資料庫中的儲存和通過索引加速空間資料的擷取。從這句話也可以看出,後續的章節並不是必須的,也就是說某些基於空間資料的應用可能並不需要諸如空間關係判斷、幾何對象處理等功能。這並不是說這些功能就用不著了,而是這些功能並不一定需要在資料庫端執行。比如基於ArcSDE,這些空間演算法和功能在ArcGIS的產品線中無處不在,很多時候都不會把這些功能放到資料庫上去。

· Oracle Spatial

在Oracle Spatial中,主要的空間關係操作在下表中列出:

空間操作

描述

SDO_FILTER

主過濾,判斷哪些幾何對象可能和給定的幾何對象相交

SDO_JOIN

基於一定空間關係的表串連

SDO_NN

查詢離某個幾何對象最近的幾何對象

SDO_NN_DISTANCE

查詢離某個幾何對象最近的幾何對象與當前對象的距離

SDO_RELATE

判斷兩個幾何對象是否滿足某種空間關係

SDO_WITHIN_DISTANCE

判斷兩個幾何對象間距離是否小於某給定值

其中SDO_RELATE操作比較特殊,它通過mask參數來判斷幾何對象間是否滿足某種空間關係,但是事實上如果都用參數來指定空間關係的話使用上就不太方便,因此,Oracle Spatial還提供了基於SDO_RELATE不同參數代表的不同空間關係的一些操作,如下表:

衍生自SDO_RELATE的空間操作

描述

SDO_ANYINTERACT

任意部分有相交

SDO_CONTAINS

 

SDO_COVEREDBY

SDO_COVERS

SDO_EQUAL

SDO_INSIDE

SDO_ON

SDO_OVERLAPBDYDISJOINT

SDO_OVERLAPBDYINTERSECT

SDO_OVERLAPS

SDO_TOUCH

下面我們看一些空間關係操作的大概用法,比如我用一個三角形去查詢所有滿足“INSIDE”關係的幾何對象,我們可以通過以下兩種等價的方式操作:

SQL> select continent from continent where sdo_inside(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)))='TRUE';

CONTINENT

---------------------------------------

Australia

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE')='TRUE';

CONTINENT

---------------------------------------

Australia

圖 13 判斷和圖示三角形滿足一定空間關係的幾何對象

雖然有一些比較方便的SDO_RELATE的衍生操作,不過SDO_RELATE支援更靈活的空間關係判斷,比如以下的SQL語句可以查詢和上面的三角形滿足“OVERLAPBDYDISJOINT”關係、“INSIDE”關係及同時滿足這兩種關係的幾何對象:

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=OVERLAPBDYDISJOINT')='TRUE';

CONTINENT

---------------------------------------

North America

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE')='TRUE';

CONTINENT

---------------------------------------

Australia

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE+OVERLAPBDYDISJOINT')='TRUE';

CONTINENT

---------------------------------------

North America

Australia

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.