3

シェープファイルをラスタライズして 0.5*0.5 グリッド上にポイントを生成する際に問題が発生しています。シェープファイルは、統合された脅威に対する世界のサンゴ礁のリスク レベル (低-0、中-100、高-1000、非常に高-1500) の分類を表します。

正常に動作する別の例からコードを引き出しましたが、データに対して試してみると、プロット関数から何も得られません。シェープファイルと私のコードへのリンクについては、以下を参照してください。

危険にさらされているサンゴ礁: グローバルに統合された脅威

# Read shapefile into R
library(rgdal)
library(raster)    

int.threat.2030 <- readOGR(dsn = "Global_Threats/Integrated_Future", 
                           layer = "rf_int_2030_poly")

## Set up a raster "template" for a 0.5 degree grid
ext <- extent(-110, -50, 0, 35)
gridsize <- 0.5
r <- raster(ext, res=gridsize)

## Rasterize the shapefile
rr <- rasterize(int.threat.2030, r)

## Plot raster
plot(rr)

私が間違っているかもしれないアイデアはありますか?シェープファイル自体の問題ですか?

よろしくお願いします!

4

1 に答える 1

7

ポリゴンが経度/緯度座標にあると想定しましたが、そうではありません。

library(raster)
library(rgdal)
p <- shapefile('Global_Threats/Integrated_Future/rf_int_2030_poly.shp')
p

#class       : SpatialPolygonsDataFrame 
#features    : 63628 
#extent      : -18663508, 14601492, -3365385, 3410115  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=cea +lon_0=-160 +lat_ts=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
#variables   : 3
#names       :    ID, THREAT, THREAT_TXT 
#min values  :     1,      0,   Critical 
#max values  : 63628,   2000,  Very High 

投影を変更することができます

pgeo <- spTransform(p, CRS('+proj=longlat +datum=WGS84'))

そして、次のようなことをします:

ext <- floor(extent(pgeo))
rr <- raster(ext, res=0.5)
rr <- rasterize(pgeo, rr, field=1)

または、元の CRS を保持して、次のようにします。

ext <- extent(p)
r <- raster(ext, res=50000)  
r <- rasterize(p, r, field=1)
plot(r)

非常に小さなポリゴンを大きなラスター セルにラスタライズしていることに注意してください。多角形がセルの中心を覆っている場合、その多角形は「内側」と見なされます (つまり、多角形が複数のセルを覆っている場合を想定しています)。したがって、これらのデータには、はるかに高い解像度を使用する必要があります (そして、おそらく結果を集計します)。または、ポリゴンの重心をラスタライズすることもできます。

ただし、これをすべて逆方向に行っているため、上記のどれも実際には関係ありません。ポリゴンは明らかにラスターから派生したものであり (それらがどれほどブロック状であるかを見てください)、ラスターは指定したデータセットで使用できます!

したがって、ラスタライズする代わりに、次のようにします。

x <- raster('Global_Threats/Integrated_Future/rf_int_2030')
x
#class       : RasterLayer 
#dimensions  : 25456, 80150, 2040298400  (nrow, ncol, ncell)
#resolution  : 500, 500  (x, y)
#extent      : -20037508, 20037492, -6363885, 6364115  (xmin, xmax, ymin, ymax)
#coord. ref. : NA 
#data source : C:\temp\Global_Threats\Integrated_Future\rf_int_2030 
#names       : rf_int_2030 
#values      : 0, 2000  (min, max)
#attributes  :
#   ID  COUNT THREAT_TXT
#    0  80971        Low
#  100 343535     Medium
# 1000 322231       High
# 1500 168518  Very High
# 2000  83598   Critical

ここでパラワンの一部をプロットします:

e <- extent(c(-8990636, -8929268, 1182946, 1256938))
plot(x, ext=e)
plot(p, add=TRUE)

より低い解像度が必要な場合は、 を参照してくださいraster::aggregate。別の座標参照系については、 を参照してくださいraster::projectRaster

于 2016-01-30T05:40:16.057 に答える