下面是一个快速的
sf
。我推荐
平方英尺
vignette和docs以查看任何函数的更多详细信息。我第一次读到的是
SF
对象使用
sf::st_read
,然后过滤、变异和选择与
dplyr
以获得形状的较小版本。
library(tidyverse)
library(sf)
rivers_sf <- st_read("rivers_bavaria/rivers_bavaria.shp") %>%
filter(WDM %in% c("1310", "1320", "1330")) %>%
mutate(name2 = ifelse(WDM == "1330", "river 2", "river 1")) %>%
select(name2, NAM, geometry)
对象相当大,而且绘图非常慢,所以我通过将几何结构按名称结合来简化它,然后使用
st_simplify
. 还有
rmapshaper::ms_simplify
,它使用MapShaper,我更喜欢它来更好地控制您保留的信息量。然后为了显示crs转换,我从
Spatial Reference
为了德国。
riv_simple <- rivers_sf %>%
group_by(name2, NAM) %>%
summarise(geometry = st_union(geometry)) %>%
ungroup() %>%
st_simplify(preserveTopology = T, dTolerance = 1e6) %>%
st_transform(31493)
开发版本
ggplot2
在github上有一个函数
geom_sf
用于绘制不同类型的
SF
物体。要获取此版本,请运行
devtools::install_github("tidyverse/ggplot2")
.
吉姆斯夫
有一些怪癖,和其他GEOM有点不同,但是它非常灵活。我相信它会被列入下一个Cran版本。
吉姆斯夫
有相应的
stat_sf
和
coord_sf
. 默认情况下,它绘制分划线;若要关闭这些分划线,请添加
coord_sf(ndiscr = F)
.
ggplot(riv_simple) +
geom_sf(aes(size = name2), color = "dodgerblue", show.legend = "line") +
scale_size_manual(values = c("river 1" = 1, "river 2" = 0.5)) +
theme_minimal() +
coord_sf(ndiscr = F)
希望能帮助你开始!