我试图勾勒出整个美国各州的一组特定的人口普查结果。
这是我试图运行的代码:
sf_states <- sf::st_as_sf(fifty_states, coords = c("long", "lat")) %>%
group_by(id, piece) %>%
summarize(do_union = FALSE) %>%
st_cast("POLYGON") %>%
ungroup()
illinois <- sf_states %>%
filter(id == "illinois")
arlington.crs <- arlington.test %>%
st_set_crs(4326)
ggplot() +
theme_minimal() +
geom_sf(data = illinois) +
geom_sf(data = arlington.crs, col = "green", alpha = 0, size = 2)
arlington.test
数据来自tidycensus
包,包括每个人口普查域的相关几何学。
但是,当我运行代码时,会得到以下错误:
Error in st_transform.sfc(st_geometry(x), crs, ...) :
cannot transform sfc object with missing crs
我尝试了几十个不同的答案,我在StackOverflow上遇到的,似乎没有任何东西使这个工作。
更奇怪的是,我可以单独运行两个geom_sf
函数,并且它们的绘图非常好。
只有当我试图一起运行它们时,才会发生错误,如上面包含的ggplot
代码所示。
还有其他的想法吗?
提前谢谢。
编辑(回答以下问题):
> sf::st_crs(arlington.test)
Coordinate Reference System:
User input: NAD83
wkt:
GEOGCRS["NAD83",
DATUM["North American Datum 1983",
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["latitude",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["longitude",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4269]]
>
发布于 2022-02-04 17:21:35
您的arlington.test
对象似乎位于EPSG:4269中;您试图通过sf::st_set_crs(4326)
将其重写为WGS 84。你确定你不是指sf::st_transform(4326)
set最适合您确定crs格式错误/不正确的情况(当*.prj
从*.shp
shapefile中丢失时就会发生这种情况)。这不是{tidycensus}
数据的典型用例。
要将投影从一个已知的CRS更改为另一个sf::st_transform()
,效果最好。
https://stackoverflow.com/questions/70989790
复制相似问题