WFS: postgresql(postgis)和shp文件查詢效率對比


對GeoServer上的WFS的各種數據源查詢效率感興趣,做個測試。本次測試了Postgresql、geopackage、shp文件三種數據源的查詢效率,無論是本機還是服務器環境,pg存儲查詢效率都比shp要好。

環境

  • 操作系統 本機=Windows 10 專業版 1903 服務器=Windows Server 2016

  • CPU 本機=i7 9700 服務器=L5xxx

  • 內存 本機&服務器 = 32GB

  • 硬盤 本機=512SSD 服務器=1TB機械

  • geoserver版本:2.16

  • pg版本:10.x

  • 網絡環境:公司局域網

  • 代碼測試環境:Cesium 1.68 原生自帶的請求方法 Cesium.Resource.fetchJson()

  • 測試環境:Microsoft Edge 84.0.488.1 Dev

預備知識

  • WFS
  • WFS的cql_filter過濾條件

shapefiles數據信息

數據名 數據體積 數據量 EPSG 非OBJECTID屬性個數
boundary_vill_sparse 67.9MB 31383 4490 12
village_mz_sparse 17.0MB 6246 4490 12

本文基於公司保密數據進行測試,就不提供數據了,感興趣的朋友可以用全國縣級數據進行模擬。

數據預覽:

boundary_vill_sparse

village_mz_sparse

數據入庫要求:

  • 均建立索引

wfs模糊查詢效率對比(本機)

數據名稱 數據源 體積 查詢用時(6次隨機)
boundary_vill_sparse postgresql 55.65MB [73, 86, 65, 66, 64, 64] / 6 = 69.7ms
boundary_vill_sparse geopackage 71.70MB [580, 640, 635, 610, 603, 653] / 6 = 620.2ms
boundary_vill_sparse shapefiles 67.9MB [412, 344, 359, 396, 339, 369] / 6 = 369.8ms
village_mz_sparse postgresql 13.21MB [52, 68, 29, 26, 70, 60] / 6 = 50.8ms
village_mz_sparse geopackage 16.82MB [195, 243, 254, 232, 207, 168] / 6 = 216.5ms
village_mz_sparse shapefiles 17.0MB [124, 162, 154, 162, 161, 119] / 6 = 147ms

對於shp文件,在geoserver上勾選“若缺少空間索引,則構建空間索引”選項加速索引。

分析

縱向對比,同一份文件,pg的WFS查詢效率遠高於shp文件。geopackage作為sqlite的一種實現,適合用來做數據交換以替代shp文件的編輯功能,不適用於查詢。

橫向對比,數據量越大,pg的優勢越明顯。數據量大的全省村落行政區數據,比數據量小的梅州局部數據有明顯優勢(約3倍vs約6倍)。

除此之外,pg還有數據壓縮方面的優勢,約能節約相對於shp文件20%~30%的文件體積。

對於geopackage,文件體積沒有太大變化,可以犧牲稍微多出來的一點空間解決二維數據編輯交換的各種中文不兼容問題。spatiallite未測試。

wfs模糊查詢效率對比(服務器)

數據名稱 數據源 查詢用時(6次隨機)
boundary_vill_sparse postgresql [419, 354, 411, 425, 360, 362] / 6 = 388.5ms
boundary_vill_sparse geopackage [3.60, 3.37, 3.42, 3.31, 3.36, 3.17] / 6 = 3.37s
boundary_vill_sparse shapefiles [1.94, 1.84, 1.87, 1.48, 1.93, 1.83] / 6 = 1.81s
village_mz_sparse postgresql [320, 316, 314, 316, 316, 312] / 6 = 315.7ms
village_mz_sparse geopackage [1.17, 1.01, 1.00, 1.01, 1.01, 1.01] / 6 = 1.04s
village_mz_sparse shapefiles [656, 640, 636, 639, 637, 637] / 6 = 640.8ms

分析

在服務器環境shp文件發布的WFS查詢時間極其不穩定,有時候會劇增到十幾秒,有的時候一秒多,有的時候幾秒鍾。估計是磁盤IO占用。

總的來說,shp文件的查詢效率在數據量越大的時候,無論是服務器環境,還是本地環境,都是不如pg的。

至於geopackage,這個僅適合做交換格式,以覆蓋shp文件中文不兼容的情況。

版權所有。B站/小專欄/知乎/csdn/博客園 @秋意正寒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM