2017-04-11 1 views
0

Je convertis de nombreux rasters en polygones. Mais dans un certain nombre de cas, je vois des sous-géométries inattendues, et je n'arrive pas à m'en débarrasser.Sous-géométries non désirées lors de la conversion de raster en polygones

Ceci est avec R v3.3.3 et le paquetage raster v2.5-8.

Voici un exemple qui devrait reproduire le problème que j'ai.

Vous pouvez télécharger le raster que j'utilise 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 

Je ne sais pas où le problème est ... Est-ce dans la façon dont le paquet de trame se transforme en cellule polygones? Ou est-ce la façon dont le paquet rgeos dissout ces polygones de cellules ensemble? Y a-t-il une solution de rechange?

Répondre

0

Cela ressemble à un problème de projection. Cela fonctionne pour moi:

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) 

Je ne sais pas pourquoi la nécessité de reprojection depuis epsg: 3577 semble être la même que la projection originale, mais je confirme habituellement projection à l'aide pour faire en sorte que tout proj4string() ou spTransform() s'alignera.