2017-04-11 88 views
0

我正在將許多柵格轉換爲多邊形。但在很多情況下,我看到了意想不到的子幾何,我似乎無法擺脫它們。將柵格轉換爲多邊形時不需要的子幾何圖形

這是與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包如何將這些細胞多邊形溶解在一起? 是否有解決方法?

回答

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(),以確保一切確認投影將排隊。