【问题标题】:Removing data outside country map boundary in R在R中删除国家地图边界之外的数据
【发布时间】:2021-06-02 03:10:04
【问题描述】:

我知道这很简单,但无法正常工作。我想删除下面地图上的多余数据点。我该怎么做? 下面的代码给了我结果。

ggplot() +
geom_polygon(data = rwa2, aes(x = long, y = lat, group= group),
             colour = "black", size = 0.5, fill = "white") +
geom_tile(data = df, aes(x = Lon, y = Lat, z = z, fill = z), alpha = 0.8) +
ggtitle("State Data") +
xlab("Longitude") +
ylab("Latitude") +
scale_fill_distiller(type = "div", palette = "Spectral")+
theme_bw() +
theme(plot.title = element_text(size = 25, face = "bold"),
      legend.title = element_text(size = 15),
      axis.text = element_text(size = 15),
      axis.title.x = element_text(size = 20, vjust = -0.5),
      axis.title.y = element_text(size = 20, vjust = 0.2),
      legend.text = element_text(size = 10)) +
coord_map()

我想删除州界之外的所有数据。 边界坐标是使用readRDS 从 Rdata 文件中获得的,ID_2 用于州,ID_3 用于地区,名称也是如此。请在这里指导我。

【问题讨论】:

    标签: r google-maps ggplot2 geospatial raster


    【解决方案1】:

    由于我们没有您的数据,因此很难处理您的案件。但是,我想给你留下一个方法。只要我可以从您的代码中看到,您就有一个名为df 的数据框。您想创建一个临时的 SpatialPointsDataFrame。我们称之为spdf。您还有名为rwa2 的多边形数据,它也是一个数据框。如果 rwa2 来自空间类对象(即 SpatialPolygonsDataFrame),您希望使用它来对多边形内的数据点进行子集化。假设您有一个名为 sp.rwa2 的空间对象。

    library(sp)
    library(ggplot2)
    

    第 1 步:使用 df 创建一个 SpatialPointsDataFrame 确保将sp.rwa2 的proj4string 分配给spdf。我在这段代码中只有一个示例 proj4string。

    spdf <- SpatialPointsDataFrame(coords = df[, c("Lon", "Lat")], data = df,
                                   proj4string = CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"))
    

    第 2 步:保留 sf.rwa2 内的子集数据点。

    whatever <- spdf[!is.na(over(spdf, as(sp.rwa2, "SpatialPolygons"))), ]
    

    第 3 步:将 spdf 转换为数据框

    whatever <- as.data.frame(whatever)
    

    然后,您将为 ggplot 运行代码。 rwa2 是一个数据框。

    ggplot() +
    geom_polygon(data = rwa2, aes(x = long, y = lat, group = group),
                 colour = "black", size = 0.5, fill = "white") +
    geom_tile(data = whatever, aes(x = Lon, y = Lat, fill = z), alpha = 0.8) +
    labs(title = "State Data", x = "Longitude", y = "Latitude") +
    scale_fill_distiller(type = "div", palette = "Spectral") +
    theme_bw() +
    theme(plot.title = element_text(size = 25, face = "bold"),
          legend.title = element_text(size = 15),
          axis.text = element_text(size = 15),
          axis.title.x = element_text(size = 20, vjust = -0.5),
          axis.title.y = element_text(size = 20, vjust = 0.2),
          legend.text = element_text(size = 10)) +
    coord_map()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2013-05-16
      • 2021-05-11
      相关资源
      最近更新 更多