为什么rasterToPolygons创建水平线?

时间:2019-05-13 15:49:23

标签: r gis spatial raster

我正在尝试根据其值将栅格图层转换为多边形。我的栅格看起来像这样:

substr

> labels_rast
class       : RasterLayer 
dimensions  : 26, 64, 1664  (nrow, ncol, ncell)
resolution  : 0.03000146, 0.02999809  (x, y)
extent      : 352032, 352033.9, 8551454, 8551455  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs+ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 1, 3  (min, max)

当我应用rasterToPolygons函数(dissolve = TRUE)时,我得到了额外的多边形(由水平线定义):

enter image description here

如何避免创建由水平线定义的多边形?

1 个答案:

答案 0 :(得分:1)

它适用于这种非常相似的情况:

library(raster)
r <- raster(nrow=26, ncol=64, xmn=352032, xmx=352033.9, ymn=8551454, ymx=8551455, crs="+proj=utm +zone=18 +south +datum=WGS84 +units=m", vals=3)
r[, 20:40] <- 2
r[1:3, 1:60] <- 1
r[24:26, 5:64] <- 1
x <- rasterToPolygons(r, dissolve=TRUE)
plot(r)
lines(x)

我猜因为浮点数不精确,它对您不起作用。将必须查看您的文件以确保。但是,如果是这样,也许您可​​以稍微扩展一下范围(或分辨率)。

例如

res(labels_rast) <- 0.03 
y <- rasterToPolygons(labels_rast, dissolve=TRUE)