2015-06-21 121 views
0

我有一個table pline_sp,它有一個包含SDO_GEOMETRY多邊形的幾何列。每個多邊形都有一個類類型。我編寫了一個SQL查詢來查找類C1,並找到位於類C1中的類C2的所有多邊形,然後求和所有區域。Oracle空間計算區域內的多邊形組中的一組多邊形內部的多邊形ID

我不知道這是最好的方式,但查詢如下:

select sum(SDO_GEOM.SDO_AREA(result.geom, 0.005, 'unit=SQ_KM')) 
from (SELECT a.geom 
     FROM pline_sp a, 
      (select A.Geom from pline_sp A where A.class='C1') B 
     WHERE SDO_RELATE(A.Geom, B.Geom, 'mask=inside') = 'TRUE' 
     AND A.Class='C2') result; 

有從C1類約7多邊形表,每一個具有不同label

我想得到裏面的多邊形面積的總和,由標籤分隔,不是所有的總和。

我想要的結果是這樣的:

Label Area 
-------------- 
l324  321.54 
l543  325.21 

...

它有沒有在SQL任何解決方案或我應該寫程序? 謝謝。

回答

0

我找到了我的問題的答案。 首先,SQL可能如下,並通過在年底加入的一切在selectS.labelGROUP BY S.label更具可讀性將被確定:

SELECT S.label,SUM(SDO_GEOM.SDO_AREA(M.geom,0.005,'unit=SQ_KM')) 
     from 
     (SELECT P.label,P.geom from pline_sp P WHERE P.class='class1') S, 
     (SELECT P.geom from pline_sp P WHERE P.class='class2') M 
     WHERE 
     SDO_RELATE(M.geom,S.geom,'mask=inside')='TRUE' 
     GROUP BY S.label;