将栅格转换为多边形时不需要的子几何

时间:2017-04-11 21:38:40

标签: r raster

我正在将许多栅格转换为多边形。但在很多情况下,我看到了意想不到的子几何,我似乎无法摆脱它们。

这是R v3.3.3和光栅包v2.5-8。

这是一个应该重现我遇到的问题的例子。

您可以下载我使用here的栅格。

# first, read in raster and coarsen to something more manageable

library(raster)
library(rgeos)
env <- raster('adefi.tif')
env2 <-aggregate(env, 8)

# Reclassify such that cells are either 1 or NA
env2[!is.na(env2)] <- 1

# this is what the raster now looks like:
plot(env2)

enter image description here

# Now I convert to polygon, choosing to dissolve
p <- rasterToPolygons(env2, dissolve=T)

plot(p)

enter image description here

# I find that I can't get rid of these subgeometries
p <- gUnaryUnion(p) # identical result
gIsValid(p) # returns TRUE

我不确定问题出在哪里......是否光栅包如何转换为单元格多边形?或者rgeos包是如何将这些细胞多边形溶解在一起的? 有解决办法吗?

1 个答案:

答案 0 :(得分:0)

这看起来像投影问题。这对我有用:

library(raster)
library(rgeos)

env <- raster(file.path(fp, "adefi.tif"))
env2 <- aggregate(env, 8)
env2[is.na(env2) == F] <- 1
# Project Raster
proj_env2 <- projectRaster(env2, crs = CRS("+init=epsg:3577"))
p <- rasterToPolygons(proj_env2, dissolve = T)
plot(p)

不确定为什么需要重新投影,因为epsg:3577看起来与原始投影相同,但我通常使用proj4string()或spTransform()确认投影,以确保所有内容都排成一行。