首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rasterVis地图绘制水深和地形

rasterVis地图绘制水深和地形
EN

Stack Overflow用户
提问于 2018-01-19 15:19:59
回答 1查看 370关注 0票数 2

我有一个群岛(斐济)的栅格,具有海洋范围的水深测量值(即负值)和岛屿陆地的高度数据(即正值)-见附件。我在R中使用rasterVis包,想要给地图上色,所以测深数据是蓝色的阴影,陆地是绿色的阴影。我正在使用brewer.pal生成蓝色和绿色调色板,然后将它们组合为一个主题,然后使用"levelplot“函数和'at =‘选项来确定从蓝色到绿色的交叉点在哪里(用编号序列从最低的测深点-5150m’到最高的山峰- 1200m )。尽管改变了seq长度

在'at =‘内的值(很多次)我不能让交叉点以零为中心(即从海洋到陆地的过渡-图像中的图例显示零是蓝色的,因此岛屿陆地太小)。这是我的代码,附件是我能得到的最好的图。另外,如果有人知道如何在上面叠加斐济的轮廓地图,那也是很棒的(似乎我不能使用' map‘功能)。

代码语言:javascript
复制
fj<-raster('FJ.asc')
greens<-brewer.pal(9,"Greens")[c(5,6,7,8,9)]
blues<-rev(brewer.pal(9,"Blues")[c(4,5,6,7,8,9)])
myTheme<- rasterTheme(region = c(blues, greens))
col_breaks = c(seq(-5150,-0.0001,length=50), seq(0.0001,1200,length=50)) 
levelplot(fj, par.settings = myTheme, at=col_breaks)

对不起,我不能附加我的ascii栅格

非常感谢

克莱夫

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 20:33:03

添加等高线图(我没有斐济DEM,并且我使用了较少的断点):

代码语言:javascript
复制
levelplot(fj, par.settings = myTheme, at=col_breaks) + contourplot(fj, at = 0.0001 , labels = F)

在0周围添加更多分隔符:

代码语言:javascript
复制
levelplot(fj, par.settings = myTheme, at=col_breaks) + contourplot(fj, at = c(-0.00001,0,0.0001) , labels = F)

使用具有陆地边界的矢量文件(可在Diva-GIS layers上获取

代码语言:javascript
复制
shp <- raster::shapefile('path/to/shapefile.shp')

if (proj4string(fj) != proj4string(shp)) {
  shp <- spTransform(shp, proj4string(fj))
}

levelplot(fj, par.settings = myTheme, at=col_breaks) + layer(sp.polygons(shp))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48335947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档