Rでグリッドシェープファイルを生成していますか?


8

QGISで作成した次の10x10度の緯度/経度グリッドのシェープファイルがあります。rgdalパッケージを使用してRに読み込むことができます。

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

次の属性と構造があります。

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 

QGISではなく、他のサイズのグリッド(1x1、5x5など)ではなく、完全にR内でこの同じグリッド/シェープファイルを作成する方法を学びたいと思います。最終的な目標は、spパッケージでover()を使用して、このグリッドをポリゴンの別のファイルにオーバーレイし、各ポリゴンが交差するグリッドの数を数えることです。私はすでにこの次のステップを実行する方法を知っています(私は思う)、Rでグリッドレイヤーを生成する方法を知りたいだけです。

回答:


6

ラスターパッケージのラスター関数を見てください。指定した範囲、行数/列数、解像度でラスターを作成できます。

ここでは、データサマリの特性を使用して、指定された範囲内に100x100のラスタを作成します。xとyの制限を定義するために、extentオブジェクトを渡します。ラスター関数内で特定の引数(xmn、xmx、ymn、ymx)を使用することもできます。

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)

ラスターオブジェクトをグリッド付きのspオブジェクトに強制変換するのは簡単です。

sp.r <- as(r, "SpatialPixelsDataFrame")
  class(sp.r)   
  spplot(sp.r, "layer") 

1
できます。セルサイズを変更するには、nrow引数とncol引数を変更します。たとえば、10度の増分の場合、nrow = 100、ncol = 100をnrow = length(seq(-90,90,10))、ncol = length(seq(-180,180,10))に変更します
Andy

ラスターを作成した後、「res(r)<-3.7」またはラスター関数の「解像度」引数を直接使用することもできますが、指定した行数と列数は無視されます。
ジェフリーエヴァンス

@JeffreyEvans同じことをしていると思いますが、これらのセルの長方形バージョンです。180、-180から90、-90の20 x 10度のセルのグリッドが欲しいのですが。ただし、この結果を得るためにこの回答のどの部分を編集するかはわかりません(これらのプログラムの新機能)。まあ、すべての色に戸惑っています。
アムロコ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.