orical空間資料型別GEOMETRY使用乾貨

2021-12-30 01:01:57 字數 1516 閱讀 6942

最近專案應用到了根據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 注意它與資料結...