将强化的 data.frame 转换回 sf 对象
convert a fortified data.frame back to sf object
fiftystater 包提供了一张很棒的美国地图,下面的插图中有夏威夷和阿拉斯加。对象 fifty_states 已经针对 ggplot2 的使用进行了强化。但是,我想使用 geom_sf.
将其绘制为 sf 对象
作为一个更普遍的问题,将强化 data.frame 转换回 sf 多边形的最佳方法是什么?
library(fiftystater)
fifty_states <– fifty_states
> head(fifty_states)
long lat order hole piece id group
1 -85.07007 31.98070 1 FALSE 1 alabama Alabama.1
2 -85.11515 31.90742 2 FALSE 1 alabama Alabama.1
3 -85.13557 31.85488 3 FALSE 1 alabama Alabama.1
4 -85.13156 31.78381 4 FALSE 1 alabama Alabama.1
5 -85.13017 31.77885 5 FALSE 1 alabama Alabama.1
6 -85.11529 31.73157 6 FALSE 1 alabama Alabama.1
注意这个问题 有点相似,但不完全符合我的需要。
这可行:您首先使用 st_as_sf
转换为点 sf
数据集,然后从每个 state/piece 的点创建多边形。
sf_fifty <- sf::st_as_sf(fifty_states, coords = c("long", "lat")) %>%
group_by(id, piece) %>%
summarize(do_union=FALSE) %>%
st_cast("POLYGON") %>%
ungroup()
plot(sf_fifty["id"])
fiftystater 包提供了一张很棒的美国地图,下面的插图中有夏威夷和阿拉斯加。对象 fifty_states 已经针对 ggplot2 的使用进行了强化。但是,我想使用 geom_sf.
将其绘制为 sf 对象作为一个更普遍的问题,将强化 data.frame 转换回 sf 多边形的最佳方法是什么?
library(fiftystater)
fifty_states <– fifty_states
> head(fifty_states)
long lat order hole piece id group
1 -85.07007 31.98070 1 FALSE 1 alabama Alabama.1
2 -85.11515 31.90742 2 FALSE 1 alabama Alabama.1
3 -85.13557 31.85488 3 FALSE 1 alabama Alabama.1
4 -85.13156 31.78381 4 FALSE 1 alabama Alabama.1
5 -85.13017 31.77885 5 FALSE 1 alabama Alabama.1
6 -85.11529 31.73157 6 FALSE 1 alabama Alabama.1
注意这个问题
这可行:您首先使用 st_as_sf
转换为点 sf
数据集,然后从每个 state/piece 的点创建多边形。
sf_fifty <- sf::st_as_sf(fifty_states, coords = c("long", "lat")) %>%
group_by(id, piece) %>%
summarize(do_union=FALSE) %>%
st_cast("POLYGON") %>%
ungroup()
plot(sf_fifty["id"])