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)
Возможно, это не делает этого, но трудно представить, что вам действительно понадобится сложный цикл, который вы используете.
Наконец, может оказаться, что некоторые многоугольники очень малы и не покрывают ячейку. В этом случае их значения могут потеряться.