Как я могу извлечь значения пространственной df-высоты из растрового файла? - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно извлечь значения высоты из растра, используя точки кадра пространственных данных.

Пересечение двух объектов (растровых и векторных) Я только что получил NA.

> lat41_42_sp
class      : RasterLayer
dimensions : 1201, 10801, 12972001  (nrow, ncol, ncell)
resolution : 0.0008333333, 0.0008333333  (x, y)
extent     : -9.000417, 0.0004166633, 40.99958, 42.00042  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source     : memory
names      : layer
values     : -12, 2307  (min, max)

> spdf
class       : SpatialPointsDataFrame
features    : 1757
extent      : -46.58056, 71.00404, -158.0419, 174.9681  (xmin, xmax, ymin, ymax)
crs         : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables   : 3
names       : WINDFARM_NAME,  LATITUDE,  LONGITUDE
min values  :   'A_Farrapa', -46.58056, -158.04192
max values  :     'Zuromin',  71.00404,   174.9681

Пространственный кадр данныхимеет более длинный экстент, но в RasterLayer есть точки.

Но это не работает: (.

> my<-extract(lat41_42_sp,spdf)
> my[1:10]
 [1] NA NA NA NA NA NA NA NA NA NA
> head(my)
[1] NA NA NA NA NA NA
> tail(my)
[1] NA NA NA NA NA NA

Ответы [ 3 ]

0 голосов
/ 22 июня 2019

Попробуйте выбрать только точки в растре:

library(raster)
spdf_in_lat41_42_sp = crop(spdf ,lat41_42_sp)
my<-extract(lat41_42_sp, spdf_in_lat41_42_sp)
0 голосов
/ 20 июня 2019

Это, вероятно, потому что все точки находятся за пределами растра.Я не могу знать это наверняка, но предоставленная информация показывает, что пространственная протяженность точек намного больше, чем растровая.

Вы можете проверить, есть ли какие-либо точки в растре, выполнив

plot(lat41_42_sp)
points(spdf)

Но, очевидно, ваш spdf неверен: у вас есть широты (y) между -158.0419 и 174.9681;конечно, это должны быть широты.Это говорит о том, что вы допустили ошибку, когда создали spdf, то есть использовали («широта», «долгота») вместо («долгота», «широта»).Вы также можете видеть это из диапазона LONGITUDE и LATITUDE, которые вы показываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...