我正在将许多栅格转换为多边形。但在很多情况下,我看到了意想不到的子几何,我似乎无法摆脱它们。
这是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)
# Now I convert to polygon, choosing to dissolve
p <- rasterToPolygons(env2, dissolve=T)
plot(p)
# I find that I can't get rid of these subgeometries
p <- gUnaryUnion(p) # identical result
gIsValid(p) # returns TRUE
我不确定问题出在哪里......是否光栅包如何转换为单元格多边形?或者rgeos包是如何将这些细胞多边形溶解在一起的? 有解决办法吗?
答案 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()确认投影,以确保所有内容都排成一行。