Смещение в растре и форме, несмотря на аналогичную проекцию - PullRequest
0 голосов
/ 29 января 2019

Я обрезал климатические данные, полученные от Chelsa, чтобы получить растр для Нидерландов, используя файл формы страны.Отображение обоих указывает, что они смещены.Проекция такая же.

сюжет https://ibb.co/f2f49PJ

Я следил за введением в растр на neonscience.org и, как оказалось, прочитал несколько постов и пакетной документации за последние два дня.на удивление трудно получить климатические данные для GPS-данных.(Или я просто более некомпетентен, чем я надеялся)

setwd(pathtodata)

library(rgdal)
library(raster)

# data for raster http://chelsa-climate.org/downloads/ (adjust file name)
climate <- raster('CHELSAcruts_prec_8_2015_V.1.0.tif')

# data for NUTS shape files https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/administrative-units-statistical-units/nuts#nuts16
bounds  <- readOGR(dsn=getwd(),'NUTS_RG_01M_2016_4326_LEVL_0')
bounds  <- bounds[bounds$NUTS_ID=='NL',]  

climate_nl <- crop(x=climate,y=bounds)
climate_nl@data@values[which(climate_nl@data@values==-32768)] <- NA

plot(climate_nl)
plot(bounds,add=T)

В результате будет обрезан оригинальный файл .tif, чтобы отобразить только Нидерланды.Затем я хотел бы продолжить извлечение значений для местоположений GPS.В настоящее время я получаю NA для мест, которые должны быть в пределах экстента.

1 Ответ

0 голосов
/ 30 января 2019

Как и у вас, у меня было много НС, но я мог получить все, кроме одного, если бы я буферизовал экстент bounds:

# remotes::install_github("adamhsparks/GSODRdata", build_vignettes = TRUE)
library(GSODRdata)
library(GSODR)
library(dplyr)
library(sf)
library(raster)

climate <- raster("CHELSAcruts_prec_8_2015_V.1.0.tif") 
# https://stackoverflow.com/a/49159943/3362993
climate <- reclassify(climate, cbind(-Inf, 0, NA), right=FALSE)

NL <- get_GSOD(years = 2010, country = "Netherlands", max_missing = 5)
bounds <- GSODRdata::CHELSA[,c("STNID", "CHELSA_prec_8_1979-2013")] %>% 
  left_join(NL, by = "STNID") %>%
  dplyr::filter(!is.na(LON)) %>%
  distinct(STNID, `CHELSA_prec_8_1979-2013`, .keep_all = TRUE) %>%
  dplyr::filter(LON > -33) %>% # fix misclassified county codes
  st_as_sf(coords = c("LON", "LAT"), crs = 4326)

climate_nl <- raster::crop(climate, as_Spatial(st_buffer(bounds, 0.1)))
res        <- extract(climate_nl, as_Spatial(bounds))

plot(climate_nl)
plot(bounds, add = TRUE, color = "black")
plot(bounds[which(is.na(res)),]$geometry, add = TRUE, color = "red", pch = 19)
legend("topleft", legend = c("NA vals"), pch = 19)

enter image description here

...