2017-01-11 3 views
2

пакет растра обеспечивает функцию, называемую rotate, чтокак выполнить обратную растра :: поворачивать

«вращается растровый * объект, который имеет координаты х (широта, долгота) от 0 до 360 , к стандартным координатам между -180 и 180 градусов. Долгота между 0 и 360 часто используется в глобальном климате моделей. "

Но если мы хотим, чтобы выполнить обратную функцию, чтобы это преобразование -180 до 180 долготы в 0 до 360 один, то функция не работает, потому что все это делает, чтобы отказаться от каких-либо данных, которые произошли от долготы меньше нуля:

library(maps) 
library(maptools) 
library(raster) 
world = map("world", fill=TRUE, col="transparent", plot=FALSE) 
world = map2SpatialPolygons(world, world$names, CRS("+proj=longlat +ellps=WGS84")) 
world = rasterize(world, raster(nrows=100,ncols=200, ext=extent(-180,180,-90,90))) 

plot(world) 

enter image description here

plot(rotate(world)) 

enter image description here

Как выполнить инверсию rotate для преобразования «стандартных координат» в диапазоне от -180 до 180 в 0 до 360 координат?

+0

Это его собственный обратный, или, по крайней мере, он имел обыкновение быть – mdsumner

+0

@mdsumner конечно, это то, что можно было бы ожидать. Но, как показывает мой пример, это не сейчас, хотя вы можете быть правы, что это было когда-то. Документация предполагает, что она предназначена только для работы в одном направлении, поэтому я не думаю, что это ошибка, как недостающая функция. – dww

+1

Да, жаль, что это был просто комментарий :) FWIW Я сохранил прежнее поведение здесь, потому что это было намного проще, чем обновление всех его применений: https://github.com/AustralianAntarcticDivision/raadtools/blob/3c92c6a6873a550773ff9e583e009bc1b62020be/R/utils .Р – mdsumner

ответ

4

Это должно сделать трюк:

w2 <- shift(rotate(shift(world, 180)), 180) 
plot(w2) 

enter image description here

Смежные вопросы