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

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

環境

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

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

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

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

  • geoserver版本:2.16fetch

  • pg版本:10.xspa

  • 網絡環境:公司局域網操作系統

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

  • 測試環境:Microsoft Edge 84.0.488.1 Devserver

預備知識

  • 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/博客園 @秋意正寒

相關文章
相關標籤/搜索