如何在 R 中更改地图的投影从 ETOPO1 测深数据创建

问题描述

我从 etoPO1 网站下载了一个 TIF 文件,其中包含测深信息。我使用以下代码绘制了测深图:

bathy <- raster("ice_data.tif")

plot(bathy)

bathy[bathy>0] <-0

dev.new()

plot(bathy)

intervals<-c(-0.000001,-500,-1000,-5000)

colourscale<-colorRampPalette(c("blue","lightblue1"))
plot(bathy,breaks=intervals,col = colourscale(4))

我想更改地图的项目(改为:+proj=laea +lon_0=-21.09375 +lat_0=-90 +datum=wgs84 +units=m +no_defs)。我曾尝试使用下面的代码(使用 st_transform() 函数),但收到一条错误消息

Error in UseMethod("st_transform") : no applicable method for 'st_transform' applied to an object of class "c('RasterLayer','Raster','BasicRaster')

new_map = st_transform(bathy,crs = "+proj=laea +lon_0=-21.09375 +lat_0=-90 +datum=wgs84 +units=m +no_defs")

有人有什么建议吗?将不胜感激! 谢谢

解决方法

对于栅格,您需要使用 raster::crs() 函数来更改 crs。

sf::st_transform() 函数需要一个 sf 对象作为输入。

试试:

new_crs <- "+proj=laea +lon_0=-21.09375 +lat_0=-90 +datum=WGS84 +units=m +no_defs"

crs(bathy) <- new_crs

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...