将背景底图添加到使用R中的geom_sf绘制的.shp图层

问题描述 投票:0回答:1

我正在创建萨克拉门托市的地图,其中有一个图层指示土地利用并仅限于公用事业服务区。我需要添加背景图以使其更容易识别。 这是我正在绘制的地图

 ` Parcel_map<-
             ggplot()+
             geom_sf(data = Parcel, aes(fill = Land_Use), color = NA) +
             geom_sf(data = Water_Boundary, fill = NA, color = "blue") +
             scale_fill_viridis_c()+
             labs(title = "Heatmap of Start of Tracking Period (2025 for all others)", fill = "Year_dum") +
             labs(fill=" Meter Installation")+
             theme_minimal()`

我尝试了多种方法来添加谷歌地图作为背景。一种方法如下:

 `myLocation <- c(-121.6, 38.4, -121.35, 38.7) 
           myMap <- get_map(location=myLocation, source="google", maptype="terrain", crop=FALSE) 
           ggmap(myMap) 
           `

然而,最终的地图并未使用并抛出错误来生成。

>            GParcel_map_Strt_dt_dm <-
+              ggmap(myMap)+
+              geom_sf(data = Parcel_Strt_dt, aes(fill = Year_dum), color = NA) +
+              geom_sf(data = Water_Boundary, fill = NA, color = "blue") +
+              scale_fill_viridis_c()+
+              labs(title = "Heatmap of Start of Tracking Period (2025 for all others)", fill = "Year_dum") +
+              labs(fill=" Meter Installation") +
+              coord_sf(datum = NA,
+                       xlim = c(bbox['xmin'], bbox['xmax']),
+                       ylim = c(bbox['ymin'], bbox['ymax'])) +
+              theme_minimal()

坐标系已经存在。添加新的坐标系,它将取代现有的坐标系。

> GParcel_map_Strt_dt_dm
geom_sf()
中的错误: !计算美学时出现问题。 ℹ 第4层发生错误。 错误原因: !未找到对象“lon” 运行
rlang::last_trace()
查看错误发生的位置。

我只需要当前地图的背景地图,如下所示。

r ggplot2 geospatial ggmap colormap
1个回答
0
投票

我以前遇到过类似的问题,如果我没记错的话,可以通过在每次调用

inherit.aes = FALSE
时添加
geom_sf()
来解决该错误。正如警告消息所示,已经存在一个来自
myMap
的坐标系。 Google 将底图作为 EPSG: 3857 或“Google PseudoMercator”投影中的栅格图层返回,而您的其他
sf
对象可能位于不同的 CRS 中,例如 EPGS: 4326 或 WGS 84(您可以使用
sf::st_crs(Parcel_Strt_dt)
检查,例如实例)。

我发现这篇 StackOverflow 帖子在遇到此错误时很有帮助,您也可以:如何将 geom_sf 生成的地图放在 ggmap 生成的栅格之上

© www.soinside.com 2019 - 2024. All rights reserved.