Шейп-файлы не перекрывают растровый слой в R - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть сотни шейп-файлов без системы координат. Моя цель - наложить пространственные полигоны на растровый слой WorldClim. Я использовал этот подход раньше без проблем. Однако на этот раз координаты из моих шейп-файлов для меня странны. Каждая координата для ограничительной рамки и координат внутри многоугольников состоит из 8 цифр без запятой или точки для разделения десятичных дробей. Это ограничивающий прямоугольник одной из фигур:

SHP bbox: xmin:-17367529, xmax:17367529, ymin:-5997367 and ymax:7052489 

, который явно отличается от ограничивающего прямоугольника растрового слоя WorldClim.

WorldClim bbox: xmin=-180,xmax=180,ymin=-60 and ymax=90

Когда я пытался наложить шейп-файлна растровом слое с помощью команды plot ничего не происходит.

plot(shapefile, add=T)

Я понял, что это проблема проецирования. Затем я попытался назначить ту же систему координат растрового слоя WorldClim в шейп-файле, используя функцию CRS. Тем не менее, результат остается прежним (т.е. шейп-файлы не над растром). В этой последовательности я попытался использовать функцию spTransform из пакета rgdal для перепроектирования координат шейп-файла. Однако, поскольку шейп-файл не имеет никакой системы отсчета, функция не работает, и я не знаю, как перепроецировать шейп-файл для соответствия растровому слою. В течение нескольких дней я исследовал, как справиться с этой проблемой, и я считаю, что отсутствие системы отсчета является ключевым моментом в проблеме. Однако мне не удается решить эту проблему, и я хотел бы знать, может ли кто-то помочь, как справиться с этой ситуацией.

1 Ответ

2 голосов
/ 11 ноября 2019

Вы должны определить проекцию файлов формы, сначала используя proj4string(meuse) или crs(shapefile)<-crs string, затем вы можете использовать spTransform:

library(rgdal)
data(meuse)
coordinates(meuse) <- c("x", "y")

Здесь у вас есть пространственные данные с x и y, но выcrs пока нет! Так что если вы используете spTransform, это не удастся.

summary(meuse) #proj4string : [NA] so below line fails!
meuse.utm <- spTransform(meuse, CRS("+proj=utm +zone=32 +datum=WGS84"))
# Error in spTransform(xSP, CRSobj, ...) : 
#   No transformation possible from NA reference system

Чтобы обойти это, как уже упоминалось выше, сначала необходимо определить проекцию следующим образом:

proj4string(meuse) <- CRS(paste("+init=epsg:28992",
"+towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812"))
summary(meuse) #proj4string : epsg:28992...  and then you may use spTransform

, а затем:

meuse.utm <- spTransform(meuse, CRS("+proj=utm +zone=32 +datum=WGS84"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...