提问人:confusedindividual 提问时间:9/25/2022 最后编辑:Philconfusedindividual 更新时间:9/26/2022 访问量:283
在 R 中使用 shapefile 进行映射
Mapping with shapefiles in R
问:
我有一个 shapefile,其中包含大量不同的多边形,代表不同的水体(湖泊、河流等)。
我想创建某些多边形的地图。我目前能找到的所有示例都只展示了如何绘制 shapefile,其中只有想要的多边形。所以我不确定如何只绘制特定的多边形。
指向 shapefile 的链接:https://hub.arcgis.com/datasets/esri::usa-detailed-water-bodies/explore?location=45.461044%2C-84.374110%2C10.71
我想策划OBJECTID295061、295018和295017
当前代码:
library(sf)
shp = st_read("USA_Detailed_Water_Bodies.shp")
ggplot(data = shp) +
geom_sf()+
coord_sf()+
theme_bw()
答:
1赞
Spacedman
9/26/2022
#1
假设是数据的数字列:OBJECTID
library(sf)
shp = st_read("USA_Detailed_Water_Bodies.shp")
然后,您可以创建如下所示的“感兴趣区域”子集:
aoi = shp[shp$OBJECTID %in% c(295061, 295018, 295017),]
然后使用 .aoi
如果数字与行号相同,则可以按行选择:OBJECTID
aoi = shp[c(295061, 295018, 295017),]
但我不确定,因为现在没有时间下载 250Mb,但我认为这是正确的。
空间数据帧的行为大多与常规数据帧类似,但有一些奇怪的例外。但是对于选择行和列,它没有太大区别。sf
评论
subset()
或会有所帮助,例如:dplyr::filter()
shp = st_read("USA_Detailed_Water_Bodies.shp") |> subset(OBJECTID %in% c(295061, 295018, and 295017))