1 GIS的技術場景
地理資訊系統(Geographic Information System,簡稱GIS)是⼀種整合的計算機系統,⽤於捕獲、儲存、分析、管理和展⽰所有型別的地理資料。GIS的核⼼功能和原理可以從以下⼏個⽅⾯進⾏詳細闡述:
1.1 資料捕獲與儲存
GIS能夠處理各種型別的地理資料,包括但不限於地圖、衛星影像、GPS資料、現場測量資料等。這些資料可以透過數字化、掃描、直接從感測器獲取或透過資料庫導⼊等⽅式進⼊GIS系統。GIS⽀持多種資料格式,如⽮量資料(點、線、面)和柵格資料(畫素或單元格)。
1.2 資料管理
GIS具備強⼤的資料庫管理功能,可以有效地組織、儲存和檢索地理資料。這包括資料的增刪改查、版本控制、後設資料管理和資料的備份與恢復。GIS資料庫系統通常與通⽤資料庫管理系統(如PostGIS、Oracle Spatial等)整合,以⽀持複雜的資料操作和查詢。
1.3 資料展⽰
GIS能夠將地理資料以圖形的形式展⽰在地圖上。⽤⼾可以透過GIS軟體建立和定製地圖,包括選擇不同的地圖樣式、符號、顏⾊和透明度。GIS還⽀持地圖的縮放、平移和標註,以及建立3D視覺化和動畫效果。
1.4 資料查詢與分析
GIS提供了強⼤的查詢和分析⼯具,允許⽤⼾根據空間位置和屬性資訊檢索資料。常⻅的查詢包括緩衝區分析、路徑分析、⽹絡分析、疊加分析等。GIS的空間分析功能可以幫助⽤⼾理解空間模式、趨勢和關係,為決策提供⽀持。
1.5 地理模型建⽴
GIS可以⽤於建⽴地理模型,模擬現實世界的地理過程和現象。例如,透過疊加不同的地理資料層,可以分析⼟地利⽤變化、環境影響評估、城市擴張等。GIS模型可以基於規則、統計資料或機器學習演算法來預測未來的變化。
1.6 地圖製作與輸出
GIS⽀持地圖的製作和輸出,使用者可以建立專業的地圖和報告,用於展示分析結果或作為決策的依據。GIS輸出的地圖可以是紙質的、數字的或線上的,支援多種比例尺和投影系統。
1.7 空間決策⽀持
GIS的核心價值在於其支援空間決策的能⼒。透過GIS,使用者可以評估不同方案的空間影響,進行風險分析、資源管理和城市規劃等。GIS的空間決策支援功能使得它成為政府、企業和研究機構的重要工具。GIS的工作原理基於地理座標系統和地圖投影,確保不同來源和尺度的資料能夠在同⼀地圖上準確展展示。GIS軟體透過演算法處理地理資料,執⾏空間分析和模型模擬,並將結果以圖形和報告的形式呈現給使用者。
GIS技術的發展與計算機硬體的進步、資料庫技術的提升以及遙感和GPS技術的應⽤緊密相關。現代GIS系統通常整合了雲端計算、大資料和⼈⼯智慧等先進技術,以提⾼資料處理能⼒和分析精度。
2崖山資料庫(YashanDB)在地理資訊系統(GIS)領域關鍵
技術
崖⼭資料庫(YashanDB)在地理資訊系統(GIS)領域提供了⼀系列的功能和最佳化,以⽀持空間資料的管理、分析和視覺化。根據提供的資訊,以下是崖⼭資料庫針對GIS所提供的關鍵功能和特性:
2.1 原生 GIS 資料庫引擎和中介軟體
崖⼭資料庫⽀持“原生 GIS 資料庫引擎和中介軟體 + 關係型資料庫”的模式,這意味著它不僅提供了傳統的資料庫功能,還整合了專⻔針對GIS應⽤的空間資料管理能⼒。
2.2 雙形態空間能⼒
崖⼭資料庫具備 GIS 引擎與 SDE(Spatial Database Engine)雙形態空間能⼒,這使得它能夠⽀持⽮量地圖、鐳射雲點、柵格、軌跡、遙感影像等多種空間資料型別。
2.3 空間索引
YashanDB 空間資料庫實現了基於 R-tree 的空間索引能⼒,這有助於提⾼空間資料的查詢效率和效能。空間索引的物理儲存復⽤了崖⼭原有 B-tree 的儲存組織,繼承了併發分裂區域性鎖機制等優勢。
2.4 全節點 MVCC 支援
崖⼭資料庫的空間索引實現了全節點 MVCC(多版本併發控制),⽀持細粒度多版本管理和空值最佳化,確保了空間資料的⼀致性和併發訪問的效率。
2.5 空間計算引擎最佳化
崖⼭資料庫的空間計算引擎在效能上進⾏了最佳化,特別是在處理⼤規模空間資料和複雜查詢時,效能表現優於商業和開源的空間計算引擎。
2.6 空間資料管理模型擴充套件
YashanDB 23.1 版本對地理空間資料管理模型進⾏了擴充套件,增加了⽮量資料、標準函式、空間索引等功能,使得資料庫具備高效能地理空間⽮量資料管理能⼒。
2.7 適配 GIS 平臺
崖⼭資料庫積極與 GIS 平臺進⾏合作,完成了與中地數碼 MapGIS 和超圖 SuperMapGIS 的適配驗證,共同打造出全國產化解決⽅案。
2.8 應用案例
崖⼭空間資料庫作為核⼼時空數字底座,已被應⽤於深圳⻰華區數字孿⽣城市等項⽬,展⽰了其在實際業務場景中的應⽤價值。
2.9 未來規劃
崖⼭資料庫在空間資料管理⽅⾯還在持續最佳化和擴充,未來的規劃包括⽀持更⼤規模的空間應⽤、空間資料的分散式並⾏計算、時空資料冷熱分離儲存等⽅向。
3崖山資料庫(YashanDB)在空間索引方面的技術優勢
崖⼭資料庫(YashanDB)在空間索引⽅⾯的技術查詢效能主要體現在以下⼏個⽅⾯:
3.1 基於 R-tree 的空間索引結構
崖⼭資料庫採⽤了 R-tree 這種平衡樹結構作為其空間索引的基礎。R-tree 是⼀種專為空間資料設計的索引結構,它能夠有效地組織和檢索多維空間中的資料。透過將空間物件按照其邊界框(Bounding
Box)進⾏劃分和層次化管理,R-tree 能夠在查詢時快速定位到相關的空間資料,從⽽提⾼查詢效率。
3.2 外包框最佳化
在 R-tree 索引中,每個節點都有⼀個外包框,它包含了該節點下所有⼦節點的邊界框。崖⼭資料庫透過⾃適應演算法最佳化了外包框的計算,對於較⼤的空間物件,系統能夠提前計算其外包框,確保提取外包框的 I/O 消耗可控。這種最佳化減少了不必要的資料訪問,提⾼了查詢效能。
3.3 物理儲存的複用
崖⼭資料庫的空間索引在物理儲存上覆⽤了原有的 B-tree 儲存組織,這意味著空間索引能夠繼承Btree 在資料管理⽅⾯的優勢,如併發分裂區域性鎖機制等。這種復⽤不僅提⾼了空間索引的效率,還減少了系統的複雜性和維護成本。
3.4 效能測試與最佳化
崖山資料庫在效能測試⽅⾯進⾏了⼤量⼯作,特別是在處理⼤規模空間資料和複雜查詢時。透過與商業和開源的空間計算引擎進⾏對⽐,崖⼭資料庫展⽰了其在空間計算效能上的優勢,這表明其空間索引的最佳化是有效的。
4 GIS的R-tree效能測試對比
4.1 測試物件
本次測試的物件是YashanDB、PostgreSQL單機的rtree效能對⽐測試(表資料量、表資料相同、表結構⼀致,表上僅帶R-tree索引)。測試環境使⽤統⼀引數規格的虛擬機器, YashanDB和PostgreSQL部署在同⼀臺機器上。
4.2 測試場景
4.2.1帶索引的情況
效能場景⼀:
YashanDB:
點選檢視程式碼
select count(OGR_FID) from GIS_OSM_ROADS_FREE_1 where ST_CoveredBy
(YAS_GEOMETRY, st_geomfromtext('POLYGON((115.416827 39.442078,117.508251 39.442078,
117.508251 41.058964, 115.416827 41.058964, 115.416827 39.442078))', 4326));
PostgreSQL:
點選檢視程式碼
select count(gid) from GIS_OSM_ROADS_FREE_1 where ST_CoveredBy (geom,
st_geomfromtext('POLYGON((115.416827 39.442078,117.508251 39.442078, 117.508251
41.058964, 115.416827 41.058964, 115.416827 39.442078))', 4326));
效能場景⼆:
YashanDB:
點選檢視程式碼
select count(a.OGR_FID),count(c.OGR_FID) from GIS_OSM_ROADS_FREE_1 a,
WORLD_LAKES c where ST_contains(c.YAS_GEOMETRY,a.YAS_GEOMETRY);
PostgreSQL:
點選檢視程式碼
select count(a.gid),count(c.gid) from GIS_OSM_ROADS_FREE_1 a, WORLD_LAKES c
where ST_contains(c.geom,a.geom);
4.2.2不帶索引的情況,使⽤的效能場景⼆的語句
YashanDB:
點選檢視程式碼
select count(OGR_FID) from GIS_OSM_ROADS_FREE_1 where ST_CoveredBy
(YAS_GEOMETRY, st_geomfromtext('POLYGON((115.416827 39.442078,117.508251 39.442078,
117.508251 41.058964, 115.416827 41.058964, 115.416827 39.442078))', 4326));
點選檢視程式碼
select count(gid) from GIS_OSM_ROADS_FREE_1 where ST_CoveredBy (geom,
st_geomfromtext('POLYGON((115.416827 39.442078,117.508251 39.442078, 117.508251
41.058964, 115.416827 41.058964, 115.416827 39.442078))', 4326));
4.2.3建立索引
YashanDB:
點選檢視程式碼
create rtree index OSI_14506 on GIS_OSM_ROADS_FREE_1(YAS_GEOMETRY);
點選檢視程式碼
create index index_GIS_OSM_ROADS_FREE_1 on GIS_OSM_ROADS_FREE_1 using
rtree (geom);
4.2.4 WORLD_COUNTRIES的資料量加到60萬+
YashanDB:
點選檢視程式碼
select count(OGR_FID) from WORLD_COUNTRIES where ST_Within (YAS_GEOMETRY,
st_geomfromtext('POLYGON((-69.882232666015625 12.411109924316406, -69.946945190429688
12.436665534973145, -70.059036254882812 12.540207862854004, -70.059661865234375
12.627776145935059, -70.033195495605469 12.618331909179688, -69.932235717773438
12.528055191040039, -69.896957397460938 12.480833053588867, -69.891403198242188
12.472221374511719, -69.885559082031250 12.457777023315430, -69.874862670898438
12.415276527404785, -69.882232666015625 12.411109924316406))', 4326));
點選檢視程式碼
select count(gid) from WORLD_COUNTRIES where ST_Within (geom,
st_geomfromtext('POLYGON((-69.882232666015625 12.411109924316406, -69.946945190429688
12.436665534973145, -70.059036254882812 12.540207862854004, -70.059661865234375
12.627776145935059, -70.033195495605469 12.618331909179688, -69.932235717773438
12.528055191040039, -69.896957397460938 12.480833053588867, -69.891403198242188
12.472221374511719, -69.885559082031250 12.457777023315430, -69.874862670898438
12.415276527404785, -69.882232666015625 12.411109924316406))', 4326));
4.3 測試結果彙總
整體的測試資料優於PostgreSQL,特別是建立R-tree索引的速度,個別場景⽐如資料來源於表,YashanDB沒有對錶資料的快取,相對PostgreSQL會慢⼀點。
彙總資料,採⽤的是三次執⾏結果的平均值,採用四捨五入