Rasterize SpatialPolygons в R игнорирует небольшие значения

Я пытаюсь преобразовать шейп-файл полигона с небольшими значениями. Значения из колонны propEmp диапазон от 0.000002 в 0.119419, Это моя попытка:

# Load shapefile
emp_planejado <- shapefile("./planejado/7_wgs/emp_planejado.shp")

# Load raster model
r_bioma<- raster("./_GRID/grid_caatinga_disol_64bit.tif")

# List values from tipologia field
tipologia<-unique(emp_planejado$tipologia)


for (tp in tipologia){
# Select features for each value in tipologia
tipo<- emp_planejado[emp_planejado$tipologia==tp,]

# Rasterize
r_pol <- rasterize(tipo,r_bioma,field="propEmp",background=NA,mask=F)

# Merge 
raster_merge <- merge(r_pol,r_bioma)

# Save raster
writeRaster(raster_merge,filename= paste0("./planejado/8_raster/",tp,"_planejado"),format="GTiff",NAflag=-9999,overwrite=TRUE)  
}

r_bioma это 64-битный растр с двойной точностью со всеми значениями пикселей, равными 0.

Там нет перекрытия между функциями этого многоугольника, только касание границы, поэтому я не использовал funв качестве аргумента rasterize,

После rasterize, когда я проверяю minValue и maxValue из r_polвместо того, чтобы получать 0.000002 а также 0.119419, Я получил 0.08687903 а также 0.1140689,

Я не знаю, где проблема. Не могли бы вы помочь мне?

1 ответ

Ваш вопрос не ясен, ваш пример не воспроизводим, и мы не знаем, чего вы пытаетесь достичь. Поэтому очень сложно оказать значимую помощь.

Первый, r_pol создается внутри цикла, в котором tipo подмножество, так что можно ожидать, что диапазон значений не совпадает.

Более фундаментально, почему вы делаете этот сложный цикл? Казалось бы, что вы хотите, это что-то вроде ниже, но я не могу этого знать, так как вы не сказали, что вы хотели достичь.

library(raster)
emp_planejado <- shapefile("./planejado/7_wgs/emp_planejado.shp")
r_bioma <- raster("./_GRID/grid_caatinga_disol_64bit.tif")

r_pol <- rasterize(emp_planejado, r_bioma, field="propEmp", background=0, filename="./planejado/8_raster/planejado.tif",overwrite=TRUE)

Возможно, это не делает этого, но трудно представить, что вам действительно понадобится сложный цикл, который вы используете.

Наконец, может оказаться, что некоторые многоугольники очень малы и не покрывают ячейку. В этом случае их значения могут потеряться.

Другие вопросы по тегам