裁剪出美国13个州以外的所有地图区域

时间:2019-10-07 19:31:02

标签: r crop mask tmap

我刚开始在R中进行映射,并且设法将lat lon数据帧转换为栅格文件,然后在其上绘制状态边框。

enter image description here

现在,我需要准备好发布它,并且只想包括我的13个州的地区(没有大湖)的形状。

library(tmap)    

usa <- st_as_sf(maps::map("state", fill=TRUE, plot =FALSE))

map_us<- tm_shape(usa)+
    tm_borders()  

tm_shape(raster_file) + 
  tm_raster(style = "cont", palette = "viridis", midpoint = 0)+
  map_us  

我很难找到可以为多种状态提供多边形的东西,而且我经历了很多映射包。抱歉,我不能在这里包括我的栅格数据。

1 个答案:

答案 0 :(得分:1)

原则上,要将栅格文件裁剪为{sf}矢量形状,您有两种选择:

  • 在数据级别进行裁剪;这涉及raster::mask(),可能以后还要raster::crop()来减少栅格的范围(被遮罩的栅格保留原始大小)
  • 保留数据,并在绘图上覆盖带有孔的白色多边形

在数据级别进行裁剪更为“纯净”,但会使边缘参差不齐(栅格像元必须为正方形)。

覆盖白色的多边形并不是那么纯净,但是如果您的主要目标是光滑的呈现(并且本质的纯真是可恶的……),则可能更可取

您将在this post on the RStudio community site中找到讨论的所有内容以及示例和示例代码。