0

我正在尝试转换具有小值的多边形 shapefile。列中的值propEmp范围从0.0000020.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 和 maxValuer_pol而不是得到0.000002and0.119419时,我得到0.08687903and 0.1140689

我不知道问题出在哪里。你可以帮帮我吗?

4

1 回答 1

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)

也许这并没有做到这一点,但很难想象您实际上需要您正在使用的复杂循环。

最后,可能是某些多边形非常小,无法覆盖一个单元格。在这种情况下,他们的价值观可能会丢失。

于 2015-09-19T17:48:10.923 回答