Вы предположили, что многоугольники были в координатах долгота/широта, но это не так:
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
.
person
Robert Hijmans
schedule
30.01.2016