Raster-Shapefile in R generieren?

8

Ich habe das folgende Shapefile eines 10x10-Grad-Breiten- / Längengrad-Gitters, das ich in QGIS erstellt habe. Ich kann es mit dem rgdal-Paket in R einlesen.

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

Es hat die folgenden Attribute und Struktur.

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 

Ich möchte lernen, wie man dasselbe Gitter / Shapefile vollständig in R und nicht in QGIS sowie in Gittern anderer Größen (1x1,5x5 usw.) Erstellt. Das ultimative Ziel ist es, over () im sp-Paket zu verwenden, um dieses Gitter auf eine andere Datei von Polygonen zu legen und die Anzahl der Gitter zu zählen, die von jedem Polygon geschnitten werden. Ich weiß bereits, wie man diesen nächsten Schritt macht (glaube ich), ich möchte nur wissen, wie man die Gitterebene in R erzeugt.

Andy
quelle

Antworten:

6

Schauen Sie sich die Rasterfunktion im Rasterpaket an. Damit können Sie ein Raster mit einem bestimmten Umfang, einer bestimmten Anzahl von Zeilen / Spalten und einer bestimmten Auflösung erstellen.

Hier werde ich die Merkmale Ihrer Datenzusammenfassung verwenden, um ein 100x100-Raster im angegebenen Umfang zu erstellen. Ich übergebe ein Extent-Objekt, um die x- und y-Grenzen zu definieren. Sie können auch die spezifischen Argumente (xmn, xmx, ymn, ymx) innerhalb der Rasterfunktion verwenden.

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 ist einfach, Rasterobjekte mit einem gerasterten sp-Objekt zu zwingen.

sp.r <- as(r, "SpatialPixelsDataFrame")
  class(sp.r)   
  spplot(sp.r, "layer") 
Jeffrey Evans
quelle
1
Es klappt. Um die Zellengröße zu ändern, ändern Sie die Argumente nrow und ncol. Ändern Sie beispielsweise für 10-Grad-Schritte nrow = 100, ncol = 100 in nrow = Länge (seq (-90,90,10)), ncol = Länge (seq (-180,180,10))
Andy
Nach dem Erstellen des Rasters können Sie auch Folgendes verwenden: "res (r) <- 3.7" oder das Argument "Auflösung" in der Rasterfunktion, dies würde jedoch die angegebene Anzahl von Zeilen und Spalten ignorieren.
Jeffrey Evans
@ JeffreyEvans Ich denke, ich bin nach der gleichen Sache, aber einer rechteckigen Version dieser Zellen. Ich möchte ein Raster von 20 x 10 Grad Zellen von 180, -180 bis 90, -90. Ich bin mir jedoch nicht sicher, welche Teile dieser Antwort bearbeitet werden müssen, um dieses Ergebnis zu erzielen (neu in diesen Programmen), und ich bin durch alle Farben verwirrt.
Amroco