SpatialGridDataFrame en lenguaje R a partir de parámetros de topología de la rejilla

Los SpatialGridDataFrame son listas de variables (DataFrame) que están asociadas a una rejilla espacial (SpatialGrid) donde todas ellas, listas y número de celdas de la rejilla, tienen la misma longitud. Es el formato, dentro de R, en el que se almacena una imagen ráster como objeto al ser leída con los métodos de la librería rgdal. Por tanto, si se entiende que tipo de objetos son sus partes componentes se puede deducir cuales serían los métodos para su creación.

Vamos a cargar la banda 1 (b1) a la cual se hizo referencia en artículos anteriores:

> setwd('proyectoR')
> library(rgdal)
Loading required package: sp
rgdal: version: 0.8-16, (SVN revision 498)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.7.3, released 2010/11/10
Path to GDAL shared files: /usr/share/gdal/1.7
GDAL does not use iconv for recoding strings.
Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009, [PJ_VERSION: 470]
Path to PROJ.4 shared files: (autodetected)
> b1<-readGDAL('b1_c.tif')
b1_c.tif has GDAL driver GTiff
and has 256 rows and 280 columns
> class(b1)
[1] "SpatialGridDataFrame"
attr(,"package")
[1] "sp"

donde se verifica que es un “SpatialGridDataFrame” y donde los values del ráster están asociados a unas coordenadas. Para acceder a los values y a las coordenadas:

> names(b1)
[1] "band1"
> values<-b1$band1
> class(values)
[1] "integer"
> length(values)
[1] 71680
> pts<-coordinates(b1)
> class(pts)
[1] "matrix"
> dim(pts)
[1] 71680     2

donde se corrobora que la lista de values y de coordenadas tienen la misma longitud. Para convertir la matriz de puntos en un objeto espacial se tiene:

> pes<-SpatialPoints(pts)
> class(pes)
[1] "SpatialPoints"
attr(,"package")
[1] "sp"
> gridded(pes)
[1] FALSE
> gridded(pes)<-TRUE
> class(pes)
[1] "SpatialPixels"
attr(,"package")
[1] "sp"

Para asociar al DataFrame y expandir las coordenadas:

> grd.pes<-data.frame(pes,values)
> class(grd.pes)
[1] "data.frame"
> summary(pes)
Object of class SpatialPixels
Coordinates:
     min    max
x 679125 687525
y 965265 972945
Is projected: NA 
proj4string : [NA]
Number of points: 71680
Grid attributes:
  cellcentre.offset cellsize cells.dim
x            679140       30       280
y            965280       30       256
> coordinates(grd.pes)<-~x+y
> class(grd.pes)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

Para convertir de “SpatialPointsDataFrame” a “SpatialGridDataFrame”:

> gridded(grd.pes)
[1] FALSE
> gridded(grd.pes)<-TRUE
> class(grd.pes)
[1] "SpatialPixelsDataFrame"
attr(,"package")
[1] "sp"
> fullgrid(grd.pes)
[1] FALSE
> fullgrid(grd.pes)<-TRUE
> class(grd.pes)
[1] "SpatialGridDataFrame"
attr(,"package")
[1] "sp"

Otra forma de generar la matriz mencionada arriba es con los grid parameters.

> gp<-gridparameters(b1)
> gp
  cellcentre.offset cellsize cells.dim
x            679140       30       280
y            965280       30       256
> pts<-coordinates(GridTopology(gp$cellcentre.offset,gp$cellsize,gp$cells.dim))
> class(pts)
[1] "matrix"
>pts
.
.
.
[49996,] 683790 967590
[49997,] 683820 967590
[49998,] 683850 967590
[49999,] 683880 967590
 [ reached getOption("max.print") -- omitidas 21681 filas ]]

A partir de aquí el procedimiento es el mismo para producir los SpatialPoints, sin embargo, la asignación de coordenadas en lugar de ser con ~x+y es con ~s1+s2 (si no cambiamos los labels por defecto a ‘x’ e ‘y’).

Esta entrada fue publicada en Lenguaje R, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a SpatialGridDataFrame en lenguaje R a partir de parámetros de topología de la rejilla

  1. Pingback: SpatialGridDataFrame en lenguaje R a partir de ...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s