【问题标题】:R, rnaturalearth and sf: remove a single border from mapR、rnaturalearth 和 sf:从地图中删除单个边框
【发布时间】:2021-08-05 19:36:29
【问题描述】:

请考虑reprex 中的地图。 我不希望这成为政治,但底线是我需要“北塞浦路斯”之间的边界
“塞浦路斯”(您可以在 ww_ini$name_long 中找到它们)消失。地图中的所有其他边界都可以保留。 关于如何删除地图中的单个边框的任何想法? 非常感谢!

library(tidyverse)
library(rnaturalearth)
library(sf)
#> Linking to GEOS 3.7.1, GDAL 2.4.0, PROJ 5.2.0



ww_ini <- ne_countries(scale = "medium",
                       type = 'map_units',
                       returnclass = "sf")






bb <- ne_download(type = "wgs84_bounding_box", category = "physical",
                  returnclass = "sf") 
#> OGR data source with driver: ESRI Shapefile 
#> Source: "/tmp/RtmpH6Sa4R", layer: "ne_110m_wgs84_bounding_box"
#> with 1 features
#> It has 2 fields


gpl <-   ggplot(data = ww_ini) +
        geom_sf(  col = "black", lwd = 0.3 )+

        coord_sf(xlim=c(-20,45), ylim=c(30, 73) ) +
  theme_minimal()


gpl

reprex package (v2.0.0) 于 2021-08-05 创建

【问题讨论】:

    标签: r maps sf


    【解决方案1】:

    我建议以下步骤:

    • 减少数据集的维度/我希望 ISO 代码作为主键就足够了(您可以轻松地使用它来连接其他数据项); Natural Earth 数据集有 64 列,这与下一步的 summarise() 有点混淆
    • 过滤掉两个塞浦路斯州 - ISO 代码“CYP”和“CYN” - 并通过dplyr::summarise() 将它们合并为一个多边形
    • 过滤掉“世界其他地区”国家 - “CYP”和“CYN”中不是的 ISO 代码 - 并将它们与单个塞浦路斯多边形绑定

    听起来有点复杂,从代码中可能更容易理解:

    cyprus <- ww_ini %>% 
      select(sov_a3) %>% 
      filter(sov_a3 %in% c("CYP", "CYN")) %>% 
      mutate(sov_a3 = "PYC") %>%  # cyprus spelled backwards
      group_by(sov_a3) %>% 
      summarise()
    
    map_src <- ww_ini %>% 
      select(sov_a3) %>% 
      filter(!sov_a3 %in% c("CYP", "CYN")) %>% 
      bind_rows(cyprus)
    
    
    gpl <-   ggplot(data = map_src  ) +
      geom_sf(  col = "black", lwd = 0.3 )+
      
      coord_sf(xlim=c(-20,45), ylim=c(30, 73) ) +
      theme_minimal()
    
    
    gpl
    

    【讨论】:

    • 谢谢!非常有趣的是,我可以使用分组和汇总来合并国家。一个问题:当我下载自然地球地图时,type = 'map_units' 和 type = 'countries' 有什么区别?
    • 按照自然地球:naturalearthdata.com/downloads/10m-cultural-vectors/…。地图单位:(上图)英国的四个组成国家——英格兰、威尔士、苏格兰和北爱尔兰。通常没有用,但一些 FIPS 和 ISO 代码通过这些名称来指代各个 admin-0 区域的组。美国太平洋岛屿领土、法属圭亚那等。 PeakBagger 对依赖关系有很好的概述。
    猜你喜欢
    • 2021-08-17
    • 2019-03-10
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2017-08-29
    • 2016-11-13
    相关资源
    最近更新 更多