最近專案應用到了根據geometry型別資料範圍內查詢更新資料的操作,對於此種資料型別的小白,在這兩天惡補了一些相關知識,做一些簡單的分享。
geometry資料型別簡介:
可以參考這篇文章和以上了解基本資料格式和內容,下面直接上應用乾貨。
在專案應用中多為構建多邊形與位置資料,或通過位置資訊對資料進行操作,下面總結了這幾天我的一些應用。
1.資料轉換
struct struct = (struct) rs.getobject("origin_geo")
jdbc中resulthandler通過獲取物件方式提取資料並強轉為struct,並 通過oracle幾何體轉wkt幾何操作可獲取string型別的資料:
通過以上操作可以得到string型別的資料,並進行範圍計算;
2.範圍計算
1.以某個點為中心點周邊範圍內檢索資料,可以通過sdo_within_distance實現,具體如下
2.spatial的函式
用於判斷乙個幾何體與另乙個幾何體的關係,我們用於判斷當前點是否在某乙個面(省份面、縣市面、鄉鎮面)上。
引數說明:
sdo_geometry1,sdo_geometry2為空間資料對應的幾何物件。
tolerance: 容許的精度範圍;
mask引數:
anyinteract: sdo_geometry2落在sdo_geometry1面上包括在邊上。
contains: sdo_geometry2完全包含在sdo_geometry1幾何物件中,並且兩個幾何物件的邊沒有交叉。
coveredby: sdo_geometry1完全包含在sdo_geometry2中,並且這兩個幾何物件的邊有乙個或多個點相互重疊。
covers: sdo_geometry2完全包含在sdo_geometry1中,並且這兩個幾何物件的邊有乙個或多個點相互重疊。
disjoint: 兩個幾何沒有重疊交叉點,也沒有共同的邊。
equal: 兩個幾何是相等的。
inside: sdo_geometry1完全包含在sdo_geometry2幾何物件中,並且兩個幾何物件的邊沒有交叉。
on: sdo_geometry1的邊和內部的線完全在sdo_geometry2上。
overlapbdydisjoint: 兩個幾何物件交迭,但是邊沒有交叉。
overlapbdyintersect: 兩個幾何物件交迭,並且邊有部分交叉。
touch: 兩個幾何物件有共同的邊,但沒有交叉。
下面上demo:
假如以a點為原點,檢索a的範圍內的資料,包含與a相交的資料(例如一條高速公路b橫跨a,b兩省)
檢索條件為:
以上:其中b為想要檢索的目的資料,如一條高速公路,?部分為元範圍資料,在?範圍內搜尋範圍內的b資料,?在jdbc中傳遞string型別wkt引數即可,檢索結果為範圍內+在範圍邊界上+穿過範圍的結果集。
mask引數的拼裝如上demo!
空間資料庫學習筆記 二 空間資料型別
一 空間資料庫型別 1 geometry 資料型別 支援平面或歐幾里得 平面球 資料 2 geography 資料型別 符合適用於 sql 規範的開放地理空間聯盟 ogc 簡單特徵 1.1.0 版。可儲存諸如 gps 緯度和經度座標之類的橢圓體 圓球 資料 二 geometry和geography層...
mysql空間資料型別解釋 MySQL空間資料型別
mysql空間資料型別講解 mysql具有與opengis類對應的資料型別。某些型別只能儲存單個幾何值 geometry point linestring polygon geometry能夠儲存任何型別的幾何值。其他的單值型別point linestring以及polygon只能儲存特定幾何型別的...
記憶體空間,資料型別,static作用
記憶體圖 一 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結...