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()
效果最好。
我试图勾勒出整个美国各州的一组特定人口普查区域。
这是我正在尝试的代码 运行:
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()
效果最好。