GDAL1 11版本對SHP檔案索引加速測試

2021-06-22 20:23:26 字數 1718 閱讀 9737

gdal庫中對於向量資料的讀取中可以設定一些過濾器來對向量圖形進行篩選,對於shapefile格式來說,如果資料量太大,設定這個過濾器時間慢的簡直無法忍受。好在gdal1.10版本開始支援讀取shapefile檔案的空間索引檔案(.sbn / .sbx)來進行加速。下面就同樣的資料同樣的**來對gdal1.9.0和gdal1.11.0兩個版本進行測試時間,比較下速度(看到結果你肯定會張大嘴巴的~~)。

首先是測試**,功能很簡單,兩個shp檔案,乙個點檔案,乙個面檔案。面檔案很大,需要根據點檔案中的點來查詢到對應的面檔案中的圖形。在此感謝「午夜風」提供的資料進行測試。圖1是使用arcmap開啟兩個資料顯示的效果,圖2是兩個資料的資料量以及要素個數。

圖1 使用arcmap開啟的效果

圖2 兩個資料的資料量和要素個數

下面是測試**,只貼出來關鍵部分的函式。

void searchsampledatafromshp_liml()

ogrfeature::destroyfeature(ppntfeature);

ogrfeature::destroyfeature(pplgfeature);

} ogrdatasource::destroydatasource(ppntds);

ogrdatasource::destroydatasource(pplgds);

}

下面是main函式以及輸出時間的乙個小函式。

void showtime()

int _tmain(int argc, _tchar* argv)

首先來看看使用gdal1.9.0版本的時間,處理時間如圖3所示。(注意,以下測試時間全部使用release版本進行測試所得)

圖3 使用gdal1.9.0所用時間

再看看gdal1.11.0所用的時間,處理時間如圖4所示。

圖4 使用gdal1.11.0所用時間

由上面兩個處理時間可以看到,在gdal1.11.0版本處理時間大幅度提高(100倍啊),所以用到了空間索引這塊的同學還是將gdal的版本更新一下吧。

我們知道shapefile檔案一般必須的是3個檔案,字尾名是shp、dbf和shx。如果資料有投影資訊的話再加乙個prj檔案。這種標準的shp檔案是我們常用的,使用gdal建立的話也會生成這麼幾個檔案。但是當用arcmap開啟的時候,會自動多出來幾個檔案,字尾名是sbn和sbx,可能還有個xml檔案。如圖2所示。這兩個檔案就是arcmap自動生成的空間索引檔案(esri spatial index files)。

按照gdal的官方文件說明,目前gdal庫只支援讀取空間索引檔案,還不支援建立,所以如果要處理大資料量的shp檔案,可以先用arcmap開啟讓其建立好空間索引檔案再用gdal處理。此外gdal還支援讀寫umn mapserver使用的四叉樹索引檔案(.qix)。具體可以參考gdal官網中的shapefile格式頁面(**是:

GDAL1 11版本號對SHP檔案索引加速測試

gdal庫中對於向量資料的讀取中能夠設定一些過濾器來對向量圖形進行篩選。對於shapefile格式來說。假設資料量太大,設定這個過濾器時間慢的簡直無法忍受。好在gdal1.10版本號開始支援讀取shapefile檔案的空間索引檔案 sbn sbx 來進行加速。以下就相同的資料相同的 來對gdal1....

Go 1 11版本發布

這個版本中工具鏈,執行時和庫有許多變化和改進,但是兩個特別突出的特性特別令人興奮 modules和webassembly支援。此版本增加了 modules 的新概念的初步支援,這是gopath的替代方案,整合了對版本控制和軟體包分發的支援。modules支援目前仍然是實驗性的,並且仍有一些持續優化的...

GDAL 2 0版本RPC校正速度測試

gdal2.0版本的更新日誌中提到了對rpc校正的優化,今天測試了一下,發現提公升的速度還是蠻快的,測試的資料是乙個irs p5的資料。首先使用乙個執行緒進行測試,使用下面的批處理進行執行,將opencl禁用,測試結果見圖1.圖中黃色的部分為處理時間,可以看出2.0版本同樣的資料大約處理時間提公升了...