R 如何在地图上显示long和lat的值?

R 如何在地图上显示long和lat的值?,r,projection,R,Projection,我有一个投影为EPSG:3410的文件,我只想用R来绘制。由于投影是以米为单位的,我对lat和long值(轴)有一个问题。你可以在地图上看到,不是90-90 180-180,而是其他数字 绘制此地图的代码: con1 <- file("C:\\Users\\data.bin","rb") r = raster(y) extent(r) = extent(c(xmn=-17334194,xmx=17334194,ymn=-7356860,ymx=731

我有一个投影为
EPSG:3410
的文件,我只想用R来绘制。由于投影是以米为单位的,我对lat和long值(轴)有一个问题。你可以在地图上看到,不是90-90 180-180,而是其他数字

绘制此地图的代码:

       con1 <- file("C:\\Users\\data.bin","rb")
       r = raster(y)
      extent(r) = extent(c(xmn=-17334194,xmx=17334194,ymn=-7356860,ymx=7310585))
      plot(r)
      plot(wbuf, add=TRUE)

con1以下是一些避免空白和添加轴标签的解决方法。由于两张地图都以米为单位,所以绘制横向标签并不容易

library(raster) # for xmin, ymin etc.

# plot raster without axes and box
plot(r, asp=1, axes=F, box=F)

# add polygons
plot(wbuf, add=TRUE, axes=F)

# draw bounding box at raster limits 
rect(xmin(r), ymin(r), xmax(r), ymax(r))
要添加纬度刻度,我们需要将EPSG:3410(米)投影转换为纬度(度)。我们可以在latlon中创建虚拟空间点,并将其转换为3410,然后提取转换后的坐标以添加记号

# y axis:
x = -180
y = seq(-90,90,30) # you can adapt this sequence if you want more or less labels
S <- SpatialPoints(cbind(x,y), proj4string = CRS("+proj=longlat +datum=WGS84"))
S2<- spTransform(S, CRS(" +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +no_defs ")) 
axis(side = 2, pos=xmin(r), at = S2@coords[,'y'], lab=y, las=1)


# x axis
y = -90
x = seq(-180,180,30)
S <- SpatialPoints(cbind(x,y), proj4string = CRS("+proj=longlat +datum=WGS84"))
S2<- spTransform(S, CRS(" +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +no_defs "))
axis(side = 1, pos=ymin(r), at = S2@coords[,'x'], lab=x)

这些“其他数字”显然是米,因为它们在-2e7到2e7,或~40000公里(地球周长)的范围内运行,而且样本代码中的
a
b
单位(地球半径)。我们可以放心地假设这一切都与语句
+units=m
有关,因此请在其文档中搜索其他单位。
par(pin=c(宽度,高度)
par(pin=c(10,5)
plot(r)
par中的错误(plt=bigplot):为图形参数“plt”指定的值无效好的,我为x轴添加了正确的位置,现在应该可以了。因为您正在查看投影贴图()。您使用的EPSG:3410投影将压缩贴图的底部和顶部区域。
# reproject and plot raster
r2 = projectRaster(r, crs=CRS("+proj=longlat +datum=WGS84"))
plot(r2, axes=F, box=F)

# there's an option to disable internal boundaries, which is nice
map(database = 'world', regions = '', interior = F, add=T)

# still have to add bounding box and axes
rect(xmin(r), ymin(r), xmax(r), ymax(r))
axis(1, pos = ymin(r2))
axis(2, pos= xmin(r2), las=1)