Oracleの空間テーブルに曲線が含まれているかどうかを判断するためのSQLクエリ

StackOverflow https://stackoverflow.com/questions/3971693

  •  09-10-2019
  •  | 
  •  

質問

私は、SDOテーブルに曲線やアークが含まれているかどうかを教えてくれるOracle SQLクエリを作成するのに苦労してきました。 SDO_ELEM_INFOには必要な情報が含まれていることは知っていますが、SQLを使用してSDO_ELEM_INFOからETYPEと解釈を分離する方法はわかりません。

これまでのところ、私が持っているのは、my_table tblからtbl.shape.sdo_elem_infoを選択することです

役に立ちましたか?

解決

テーブル関数を使用してSDO_ELEM_INFO_ARRAY要素を抽出し、それをピボットして、結果の行を集計して、オフセット、ETYPE、および解釈用の列を使用して要素ごとの行を生成します。

このようなことはあなたにあなたの質問を与えるべきです...(警告:テストされていない)

WITH elem_info AS (
  SELECT 
    TRUNC((ROWNUM - 1) / 3, 0) element_no
  , MAX(DECODE(MOD(ROWNUM, 3), 1, t.COLUMN_VALUE, NULL)) offset
  , MAX(DECODE(MOD(ROWNUM, 3), 2, t.COLUMN_VALUE, NULL)) etype
  , MAX(DECODE(MOD(ROWNUM, 3), 0, t.COLUMN_VALUE, NULL)) interpretation
  FROM my_table tbl
  , TABLE(tbl.shape.sdo_elem_info) t
  GROUP BY TRUNC((ROWNUM - 1) / 3, 0)
)
SELECT DECODE(COUNT(*), 0, 'false', 'true')
FROM elem_info ei
WHERE ei.etype IN (1005, 2005) 
OR ei.interpretation IN (2, 4)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top