Suite

Comment rastériser un objet de classe SpatialPolygonsDataframe dans R


Lorsque j'ai lu un fichier de formes de polygones dans R à l'aide de rgdal, il a été importé en tant qu'objet de classeSpatialPolygonsDataframe.

J'ai besoin de pixelliser le polygone, mais lerasterize{raster}fonction exige qu'il soit duSpatialPolygonesclasser.

Comment puis-je le convertir du bloc de données actuel dans leSpatialPolygonesclasser?


Jetez un oeil à l'aide, lerastériserfonction en raster acceptera, en fait, unSpatialPolygonsDataFrame.

Adapté du deuxième exemple de polygone dansrastériseraider.

Créer des exemples de polygones

library(raster) polys <- spPolygons(rbind(c(-180,-20), c(-140,55), c(10, 0), c(-140,-60), c(-180,- 20)), rbind(c(-10,0), c(140,60), c(160,0), c(140,-55), c(-10,0)), rbind(c(- 125,0), c(0,60), c(40,5), c(15,-45), c(-125,0)), rbind(c(-180,10), c(0, 90), c(40,90), c(145,-10), c(-25, -15), c(-180,0), c(-180,10)))

Forcer à SpatialPolygonsDataFrame et ajouter des données

polys <- as(polys, "SpatialPolygonsDataFrame") [email protected][,1] <- runif(nrow(polys)) class(polys)

Maintenant, pixellisez les données du polygone et tracez. Lerraster est le raster de référence pour la fonction rasterize.

r <- raster(ncol=90, nrow=45) r.polys <- rasterize(polys, r, field = [email protected][,1], fun = "mean", update = TRUE, updateValue = "NA") plot(r.polys)

Une chose que j'ai remarquée est qu'au raster 2.4-30 sous Windows avec R 3.2.3, l'argument "champ" ne reconnaît pas l'index de la colonne (par exemple, champ = 1). Cependant, si je passe l'argument le vecteur réel (comme dans mon exemple), il attribue les valeurs correctes au raster résultant pour tous les polygones. Cela peut facilement être recréé, avec l'exemple, en utilisant la syntaxe :

r.polys <- rasterize(polys, r, field = 1, fun = "mean", update = TRUE, updateValue = "NA")'


Voir la vidéo: QGIS - Rasterize - Vector to Raster by specifying desired pixel length (Octobre 2021).