Resolving this error: "cannot transform sfc object with missing crs"

Resolving this error: "cannot transform sfc object with missing crs"

我试图勾勒出整个美国各州的一组特定人口普查区域。

这是我正在尝试的代码 运行:

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

我尝试了在 Whosebug 上遇到的几十种不同的答案,但似乎没有任何效果。

更奇怪的是,我可以 运行 两个 geom_sf 函数与 ggplot 分开,它们绘制得很好。

只有当我尝试将它们 运行 在一起时才会发生错误,如上面包含的 ggplot 代码所示。

还有其他 thoughts/ideas 吗?

提前致谢。

编辑(回答下面的问题):

> 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]]
> 

您的 arlington.test 对象似乎在 EPSG:4269 中;您试图通过 sf::st_set_crs(4326) 将其覆盖为 WGS 84。你确定你不是说 sf::st_transform(4326) 吗?

设置 crs 最好保留用于您确定 CRS 格式错误/不正确的情况(当 *.prj 从您的 *.shp shapefile 中丢失时可能会发生这种情况)。这不是 {tidycensus} 数据的典型用例。

将投影从一个已知的 CRS 更改为另一个 sf::st_transform() 效果最好。