使用 R 中的 sf 对象将比例更改为 lat/long

Changing scale to lat/long using sf objects in R

恐怕我就是想不通。我正在尝试使用县集合在 states/US 地区绘制区域; here is an example file (AK_Test.csv).

数据取自urbn_map数据集territories_counties。据我了解,此数据使用“简单要素”(sf) 几何,因此所有多边形数据都存储在每个县级对象的 geometry 列中。

这是我用来绘图的代码:

g <- ggplot(ak_test)
g <- g + geom_sf(aes(geometry = geometry, fill = Region), 
                 color = "black", show.legend = FALSE)
g <- g + geom_sf_label_repel(aes(geometry = geometry, label = County))
g <- g + coord_sf()
g

这是输出:

我不明白轴上的单位,但我希望它们在 lat/long 中——我认为这是 coord_sf() 函数的目的。我试过添加 x 和 y 限制(使用状态的近似边界),但是当我这样做时,图像从页面上掉下来了。

在其他情况下,输出显示为 rotated/tilted(参见带有 Oregon/Idaho/Montana 的图像)- 我希望转换为 lat/long 也能解决这个问题。

这些数字纬度/经度,但它们与您想要的co-ordinate系统不同。您需要使用适当的 crs re-project 数据:

library(sf)
library(ggplot2)
library(ggrepel)

url <- "https://raw.githubusercontent.com/Doc-Midnight/Test_Dir/main/AK_Test2"

ak_test <- source(url)

ak_test <- ak_test$value

ak_test$geometry <- st_transform(ak_test$geometry, "WGS84")

g <- ggplot(ak_test)
g <- g + geom_sf(aes(geometry = geometry, fill = Region), 
                 color = "black", show.legend = FALSE)
g <- g + geom_sf_label(aes(geometry = geometry, label = County))
g + labs(x = "longitude", y = "latitude")

注意,我不知道 geom_sf_label_repel 的来源,所以我使用了 non-repeling 标签,因为它们是问题的附带条件。