GIS區域空間搜尋乙個必要的優化

2021-08-22 15:31:56 字數 552 閱讀 4809

在專案中需要對乙個物件的周邊做空間搜尋,當空間資料表相當大的時候直接搜尋是非常緩慢的。

比如在全上海的地物資訊包括政務機關,商業,交通,娛樂,餐飲,醫院,學校..等等合計有數十萬條記錄。當對乙個座標點(x,y)的周邊1000m做空間搜尋時,就是對這個點畫圓,然後求圓內的點,用數學公式就是求兩點間距離。

乙個實際的例子就是在oracle spatail中,對這麼一張地物表做空間搜尋,所用到的函式是sdo_geom.sdo_distance,列出函式返回值小於1000的結果集,搜尋結果為1000條左右的情況下我的指令碼執行了60秒。資料庫的空間索引是沒有問題的,似乎兩點距離函式沒有用到空間索引。

我們可以把圓的外切矩形先求出來,這個是比較容易,而且也不用那麼精確,先用這個矩形去縮小範圍,再求距離。畢竟矩形只需要大於和小於不像圓的運算複雜。在oracle spatail中求矩形空間搜尋結果應該用sdo_filter函式,這個可以充分利用空間索引來提高效率,同樣的結果集只用時不到2秒。最後的語句大致如下:

where sdo_filter(..)=true and sdo_geom.sdo_distance(...)<=1000

GIS簡介 乙個GIS的組成

gis 由五個主要的元素所構成 硬體 軟體 資料 人員和方法。硬 件 硬體是gis所操作的計算機。今天,gis軟體可以在很多態別的硬體上執行。從 計算機伺服器到桌面計算機,從單機到網路環境。軟 件 gis軟體提供所需的儲存 分析和顯示地理資訊的功能和工具。主要的軟體部件有 數 據 乙個gis系統中最...

n個平面最多把乙個空間拆成多少個區域

n條直線最多把乙個平面拆成1 n 1 n 2個區域,請問 n個平面最多把乙個空間拆成多少個區域?n 0 這個問題我想了挺久,後來有在網上搜,並且也搜到了很詳細的解答,但是沒有看,我還是希望能自己想出來 其實是覺得看那 麼多字很煩 p 終於在乙個漆黑的夜晚靈光一現,地球 了。答案是什麼並不重要,重要的...

用C 實現乙個XML parser的必要工作。

考慮乙個完整的xml parser一般由幾部分組成 必要元件 1.dom 介面定義,以及dom model的實現。2.乙個xml詞法分析器,用於將xml字元流轉換成token流。3.乙個xml parser,將token流組織成dom model.4.一套在dom node中遍歷的資料結構和演算法,...