4 votos

Convierte un SpatialPolygonsDataFrame a raster utilizando la función rasterize

Estoy intentando convertir mi mapa (un SpatialPolygonsDataFrame) en un raster, usando la función rasterize, aquí hay un error que no entiendo...

> class(parcel) # this is my map
[1] "SpatialPolygonsDataFrame"

> attr(,"package")
[1] "sp"

> head(parcel)
AREAHA RECNO      AREA AREASQKM        OS_06 GRD_CAT_06
0 0.0519     0  519.1941        0 chemin prive        way
1 0.0127     1  127.0963        0 chemin prive        way
2 0.0596     2  596.2204        0 chemin prive        way
3 0.0248     3  248.0452        0    route D90        way
4 0.0375     4  375.0141        0 route privee        way
5 0.1260     5 1260.3941        0 chemin prive        way

> dim(parcel)
[1] 20069     6

> object.size(parcel)
88090144 bytes

> r <- raster(ncol=4001, nrow=4001)
> extent(r) <- extent(parcel)
> parcel_ras<-rasterize(parcel, r, "GRD_CAT_06", CRS("+init=epsg:27572"))
Erreur dans data.frame(ID = as.integer(putvals), value = lvs) :    arguments imply differing number of rows: 20069, 13

No entiendo este comentario: ¿qué es "putvals"? Hay 20069 polígonos en mi mapa, así que ¿qué es "13"?

No puedo reproducir un ejemplo más pequeño de mi mapa, así que aquí están mis datos : http://dl.free.fr/fxdT2oczB

5voto

Rihan Meij Puntos 362

Tu error dice as.integer(putvals). La función rasterizar de R no puede trabajar con cadenas. Tienes que transformar tus datos primero.

Algo así puede funcionar, pero yo asignaría diferentes rangos (ala 1,2,3,4,..) a tus datos. Sin embargo, sigo obteniendo un error (diferente) para el que no tengo explicación. Tal vez el tamaño de su trama es incorrecta ...

library(sp);library(rgdal);library(raster)

r <- raster(ncol=4001, nrow=4001)

extent(r) <- extent(parcel)

parcel$Grd_ranks <- rank(parcel$GRD_CAT_06)

parcel_ras<- rasterize(parcel, r, "Grd_ranks", CRS("+init=epsg:27572"),fun='first')

Tal vez debería utilizar la función rasterizar de QGIS o GRASS en su lugar. Mucho menos complicado ;-)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X