用Oracle的函式,判斷點是否在多邊形內

2021-08-03 14:50:58 字數 1360 閱讀 7474

有個朋友在做地圖相關的程式,程式的需求是:地圖上有好多的點,儲存在資料庫中,輸入是乙個多邊形,輸出是包含在這個多邊形中的點。

朋友發現oracle中有個函式,正好解決這個問題: 

於是我們就了解了oracle spatial的api,來實現查詢的功能。

--建立乙個表,代表點的資訊

create

table t2(

id number,

location sdo_geometry --點

);--插入資料

insert

into t2 values(

3, --id

sdo_geometry

(2001,

32774,

null,

sdo_elem_info_array(1,1,1),

sdo_ordinate_array(1,1) --點的座標1,1

));--插入空間元資料

insert

into user_sdo_geom_metadata

(table_name,column_name,srid,diminfo)

values

( 't2',

'location',

32774,

sdo_dim_array

( sdo_dim_element

('longitude',

-180,

180,

0.1),

sdo_dim_element

( 'latitude',

-90,

90,0.1

)));

--建立空間索引

create index test2_index on t2(location)

indextype is mdsys.spatial_index

select * from t2;

--查詢表t2中的點是否在給定的多邊形中

select * from t2 t where

sdo_relate(t."location", sdo_geometry(

2003, -- two-dimensional polygon

32774,

null,

sdo_elem_info_array (1,2003,1),

sdo_ordinate_array(0,0, 0,3, 7,1, 0,0) --多邊形

),'mask=inside')='true';

參考:

Oracle判斷表是否存在的函式

oracle判斷表是否存在的函式 函式定義 create or replace function is table exists table name to check varchar2 return boolean is row count number is exists boolean beg...

判斷點是否在矩形的裡面

要判斷點 是否在矩形abcd的裡面,有 如果 在ab的左邊,也在bc左邊,也在cd左邊,也在da左邊,則p在abcd的裡面 如果 在ab的右邊,也在bc右邊,也在cd右邊,也在da右邊,則p也在abcd的裡面 否則p不在abcd的裡面 簡單說,在矩形abcd四個邊的同一側,在矩形abcd的裡面,否則...

判斷點是否在麵內

public class point return flag 目標點是否在目標邊上邊上 param px0 目標點的經度座標 param py0 目標點的緯度座標 param px1 目標線的起點 終點 經度座標 param py1 目標線的起點 終點 緯度座標 param px2 目標線的終點 起...