如何操作 Oracle Spatial Geometry 來達到比對的效果
可使用 SDO_RELATE() 這個函式
使用方式如下
select *
from tbl_test a
where MDSYS.SDO_RELATE(a.geom, MDSYS.SDO_GEOMETRY('POINT(215277 2682575)'), 'mask=CONTAINS querytype=window') = 'TRUE'
SELECT 出 tbl_test 中 geom 這個 spatial column 包含 (215277, 2682575) 這個點位的所有資料
其中
mask=CONTAINS 表示包含
querytype=window 表示第二個 Geometry 可使用函式建立 若為 join 則第二個 Geometry 必須也是 spatial column
原文網址
流風羽 發表在 痞客邦 留言(0) 人氣(108)
要使用 Oracle Spatial 函式進行比對時
必須先針對該 Geometry 欄位建立 Oracle Spatial Index
語法如下
CREATE INDEX <YOUR INDEX NAME> ON <YOUR SPATIAL TABLE>(<YOUR SPATIAL COLUMN>)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
使用範例
CREATE INDEX tbl_test_sindx ON tbl_test(geom)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
其中 tbl_test_sindx 為 Index 名稱
tbl_test 為 Table 名稱
geom 為 Geometry 欄位名稱
流風羽 發表在 痞客邦 留言(0) 人氣(120)
利用 SDO_GEOMETRY() Constructors
可產出 Oracle Spatial Geometry 資料
大致使用方式有三
SDO_GEOMETRY(wkt CLOB, srid NUMBER DEFAULT NULL);
SDO_GEOMETRY(wkt VARCHAR2, srid NUMBER DEFAULT NULL);
SDO_GEOMETRY(wkb BLOB, srid NUMBER DEFAULT NULL);
使用範例 - 建立 Polygon Geometry
SELECT SDO_GEOMETRY('POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))') FROM DUAL;
原文網址
WKT格式可參考
流風羽 發表在 痞客邦 留言(1) 人氣(185)
SDO_GEOM.SDO_MAX_MBR_ORDINATE
|
Returns the maximum value for the specified ordinate (dimension) of the minimum bounding rectangle of a geometry object.
|
SDO_GEOM.SDO_MIN_MBR_ORDINATE
|
Returns the minimum value for the specified ordinate (dimension) of the minimum bounding rectangle of a geometry object.
|
利用以上兩個 Function 可利用 Geometry Column 得到所要的四角座標
使用方法
SDO_GEOM.SDO_MAX_MBR_ORDINATE(
[geom] IN SDO_GEOMETRY,
[ordinate_pos] IN NUMBER
) RETURN NUMBER;
說明
[geom] - Geometry Column
[ordinate_pos] - 坐標位置; 1 即是 X; 2 即是 Y
使用範例
SDO_GEOM.SDO_MAX_MBR_ORDINATE(geo, 1);
SDO_GEOM.SDO_MIN_MBR_ORDINATE 使用方法一樣
取得四角坐標範例
SELECT
SDO_GEOM.SDO_MIN_MBR_ORDINATE(a.geom, 1) as XMIN,
SDO_GEOM.SDO_MIN_MBR_ORDINATE(a.geom, 2) as YMIN,
SDO_GEOM.SDO_MAX_MBR_ORDINATE(a.geom, 1) as XMAX,
SDO_GEOM.SDO_MAX_MBR_ORDINATE(a.geom, 2) as YMAX
from TABLE a
參考網址
流風羽 發表在 痞客邦 留言(0) 人氣(170)