簡體   English   中英

R - 從大型柵格中有效創建數據幀,不包括NA值

[英]R - Efficiently create dataframe from large raster excluding NA values

在GIS堆棧中交叉發布類似內容的道歉。

我正在尋找一種更有效的方法來創建基於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

這使用來自R的柵格包中的freq()函數usaNA=no標志將轉儲NA值。

我的問題是:

1)有沒有一種更有效的方法從99%NA值的大型柵格創建頻率表? 或者2)從基礎柵格中導出值比使用mask()更有效嗎? (在ArcGIS中使用Mask GP功能非常快,但仍然具有NA值,這是一個額外的步驟

*附加信息: sampling_site_raster表示的樣本區域是在研究區域內隨機分布的各種大小的不規則形狀。 sampling_site_raster ,采樣點被編碼為1 ,非采樣區域被編碼為NA

謝謝!

如果您通過柵格屏蔽柵格,您將始終獲得另一個巨大的柵格。 我不認為這是一種讓事情變得更快的方法。

我要做的是嘗試使用extract通過多邊形圖層進行遮罩:

res <- extract(raster, polygons)

然后,您將獲得每個多邊形的所有單元格值,並可以對它們運行freq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM