【问题标题】:Crop out all mapped area beyond region of 13 U.S. states裁剪出美国 13 个州以外的所有地图区域
【发布时间】:2019-10-09 14:47:04
【问题描述】:

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

现在我需要准备好发布它,并且只想包含我的 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  

我很难找到可以为多个状态提供多边形的东西,而且我已经使用了很多映射包。抱歉,我无法在此处包含我的栅格数据。

【问题讨论】:

  • 明确一点,您希望将大湖排除在 map_us 之外,对吧?
  • 是的!仅北达科他州、南达科他州、内布拉斯加州、堪萨斯州、密苏里州、爱荷华州、明尼苏达州、威斯康星州、伊利诺伊州、印第安纳州、俄亥俄州、威斯康星州和密歇根州。没有湖泊。
  • 这并不容易。我不认为那里有一个栅格将水体排除在地图之外。您需要手动排除它们。这就是我的想法,也许有人有更好的主意。

标签: r crop mask tmap


【解决方案1】:

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

  • 在数据级别进行裁剪;这涉及到raster::mask() 和可能的raster::crop() 以减少栅格的范围(蒙版栅格保留原始大小)
  • 保留数据,并在绘图上覆盖一个带有孔的白色多边形

数据级别的裁剪更“纯粹”,但会留下参差不齐的边缘(栅格单元必须是方形的)。

覆盖一个白色的多边形不是那么纯粹,但如果你的主要目标是一个漂亮的演示,可能会更可取(并且本质的纯度该死......)

您将在this post on the RStudio community site 中找到对它们的讨论以及示例和示例代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多