删除R中国家/地区地图边界外的数据

时间:2017-12-07 13:37:50

标签: r google-maps ggplot2 geospatial raster

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

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()

enter image description here

我想删除状态边界之外的所有数据。 使用readRDS从Rdata文件获取边界坐标,状态为ID_2,区域为ID_3,因此是名称。请指点我。

1 个答案:

答案 0 :(得分:1)

由于我们没有您的数据,因此很难处理您的案例。但是,我想为你留一个方法。只要我从您的代码中看到,您就拥有一个名为protected void configure(HttpSecurity http) throws Exception { http. authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/rest/**").permitAll() .antMatchers("/login").permitAll() .antMatchers("/landing").hasAnyAuthority("ADMIN","EMPLOYEE") .antMatchers("/admin/**").hasAuthority("ADMIN") .antMatchers("/employee/**").hasAuthority("EMPLOYEE") .anyRequest() .authenticated().and() .formLogin() .loginPage("/login").failureUrl("/login?error=true") .defaultSuccessUrl("/landing") .usernameParameter("email") .passwordParameter("password") .and().logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) .logoutSuccessUrl("/login").and().exceptionHandling() .accessDeniedPage("/access-denied"); } 的数据框。您想要创建临时的SpatialPointsDataFrame。我们称之为df。您还有一个名为spdf的多边形数据,它也是一个数据框。如果rwa2来自空间类对象(即SpatialPolygonsDataFrame),则您希望使用它来对多边形内的数据点进行子集化。让我们想象你有一个名为rwa2的空间对象。

sp.rwa2

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

spdf

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

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

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

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

然后,您将运行ggplot的代码。 whatever <- as.data.frame(whatever) 是一个数据框。

rwa2