2013-11-26 101 views
3

在GIS堆棧中交叉發佈類似內容的道歉。R - 從不包含NA值的大型柵格中有效創建數據幀

我正在尋找一種更有效的方式R.創建基於大光柵頻率表

目前,我有幾十個光柵,〜1.5億細胞中的每個和我需要創建每個頻率表。這些柵格來自於掩蓋具有幾百個小採樣位置*的基礎柵格。因此我創建表格的柵格包含〜99%的NA值。

我當前的工作方式是這樣的:

sampling_site_raster <- raster("FILE") 
    base_raster <- raster("FILE") 

    sample_raster <- mask(base_raster, sampling_site_raster) 

    DF <- as.data.frame(freq(sample_raster, useNA='no', progress='text')) 

    ### run time for the freq() process ### 
    user system elapsed 
    162.60 4.85 168.40 

此使用freq()功能從R的光柵包的usaNA=no標誌將轉儲NA值。

我的問題是:

1)是否有從大柵格是99%的NA值創建一個頻率表更有效的方法? 或 2)是比使用mask()更有效的方式從基礎柵格派生值? (在ArcGIS中使用Mask GP功能非常快速,但仍然具有NA值,並且是額外的步驟

*其他信息:sampling_site_raster表示的樣本區域是在研究區域內隨機散佈的各種大小的不規則形狀。在sampling_site_raster採樣點被編碼爲1和非抽樣領域NA

謝謝!

回答

1

如果你掩蓋通過光柵光柵,你總是會得到另一個巨大的光柵。我不認爲這是讓事情變得更快的一種方法。

我會做的就是儘量使用extract面層掩蓋:

res <- extract(raster, polygons) 

然後,你將擁有所有爲每個多邊形單元格的值,並能夠對它們freq

+0

感謝Tomas。我確實喜歡使用提取的想法,但正如前面提到的那樣,採樣點有許多不規則的多邊形。爲了獲得用於提取函數的座標,我想我需要將樣本點引入,因爲shapefile會讀出多邊形幾何。準確地說,是 –

+0

@ user10553。但是如果有非常大的柵格和非常稀疏的採樣點,我想它可能會更快。當然,如果您可以將柵格和適當的採樣點進行分區並按照每個分區進行分區,那麼最好的做法是。這很快**(記憶,緩存...) - 個人經驗 – TMS