¿Generando un archivo de forma de rejilla en R?

8

Tengo el siguiente archivo de forma de una cuadrícula de 10x10 grados de latitud / longitud que creé en QGIS. Puedo leerlo en R usando el paquete rgdal.

Grid<-readOGR(".","GridShapeFile")

Tiene los siguientes atributos y estructura.

summary(Grid)

Object of class SpatialPolygonsDataFrame
Coordinates:
   min max
x -180 190
y -100  90
Is projected: FALSE 
proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]
Data attributes:
       ID             XMIN           XMAX           YMIN           YMAX    
 Min.   :  0.0   Min.   :-180   Min.   :-170   Min.   :-100   Min.   :-90  
 1st Qu.:175.5   1st Qu.: -90   1st Qu.: -80   1st Qu.: -60   1st Qu.:-50  
 Median :351.0   Median :   0   Median :  10   Median : -10   Median :  0  
 Mean   :351.0   Mean   :   0   Mean   :  10   Mean   : -10   Mean   :  0  
 3rd Qu.:526.5   3rd Qu.:  90   3rd Qu.: 100   3rd Qu.:  40   3rd Qu.: 50  
 Max.   :702.0   Max.   : 180   Max.   : 190   Max.   :  80   Max.   : 90 

# An example row of the data
Grid[50,]
class       : SpatialPolygonsDataFrame 
features    : 1 
extent      : -60, -50, 70, 80  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84+towgs84=0,0,0 
variables   : 5
names       : ID, XMIN, XMAX, YMIN, YMAX 
min values  : 49,  -60,  -50,   70,   80 
max values  : 49,  -60,  -50,   70,   80 

Me gustaría aprender cómo crear esta misma cuadrícula / archivo de forma completamente dentro de R, en lugar de en QGIS, así como en cuadrículas de otros tamaños (1x1,5x5, etc.). El objetivo final es usar over () en el paquete sp para superponer esta cuadrícula en otro archivo de polígonos y contar el número de cuadrículas intersectadas por cada polígono. Ya sé cómo hacer el siguiente paso (creo), solo quiero saber cómo generar la capa de cuadrícula en R.

Andy
fuente

Respuestas:

6

Eche un vistazo a la función ráster en el paquete ráster. Le permitirá crear un ráster con una extensión específica, número de filas / columnas y resolución.

Aquí usaré las características de su resumen de datos para crear un ráster de 100x100 dentro de la extensión especificada. Estoy pasando un objeto de extensión para definir los límites x e y. También puede usar los argumentos específicos (xmn, xmx, ymn, ymx) dentro de la función ráster.

library(raster) 
library(sp) 

r <- raster(extent(matrix( c(-180, -100, 190,  90), nrow=2)), nrow=100, ncol=100, 
            crs = "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")            
  r[] <- 1:ncell(r)
  summary(r)
  print(r)
  plot(r)

Es simple obligar a los objetos ráster a un objeto sp cuadriculado usando;

sp.r <- as(r, "SpatialPixelsDataFrame")
  class(sp.r)   
  spplot(sp.r, "layer") 
Jeffrey Evans
fuente
1
Funciona. Para cambiar el tamaño de la celda, modifique los argumentos nrow y ncol. Por ejemplo, para incrementos de 10 grados, cambie nrow = 100, ncol = 100 a nrow = length (seq (-90,90,10)), ncol = length (seq (-180,180,10))
Andy
Después de crear el ráster, también puede usar algo como: "res (r) <- 3.7" o el argumento "resolución" en la función ráster directamente, pero esto ignoraría el número especificado de filas y columnas.
Jeffrey Evans
@JeffreyEvans Creo que busco lo mismo, pero una versión rectangular de estas celdas. Me gustaría una cuadrícula de celdas de 20 x 10 grados de 180, -180 a 90, -90. Sin embargo, no estoy seguro de qué partes de esta respuesta editar para obtener ese resultado (nuevo en estos programas) y, bueno, estoy confundido por todos los colores.
Amroco