试图通过ggplot在r中显示两个sf数据集,但没有得到预期的结果

ebdffaop  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(110)

**你好,

尝试将一个shpMap(墨西哥城)与kaggle的数据集覆盖在r中的airbnb(墨西哥城)。如果我将它们分开绘制,它可以正常工作,但当尝试将它们绘制在一起时,它会显示一些奇怪的东西......以下是到目前为止的代码和结果:**

cdmx3 <- st_read("inegi/09_CDMX/cartografia/municipal.shp")
ggplot() + 
  geom_sf(data = cdmx3, color = "black") + 
  ggtitle("Municipios de CDMX")

enter image description here

airbnb_mexico <- read.csv(file = "listings.csv")
airbnb_mexico_sf <- st_as_sf(x = airbnb_mexico, coords = c("longitude","latitude"))
ggplot() + 
  ggtitle("Municipios de CDMX") + 
  geom_sf(data= airbnb_mexico_sf, color = "blue")

enter image description here

st_crs(airbnb_mexico_sf) <- st_crs(cdmx3)

但在尝试叠加时,显示如下:

ggplot() + 
  geom_sf(data = cdmx3, color = "black", fill = "cyan1") + 
  ggtitle("Municipios de CDMX") + 
  geom_sf(data= airbnb_mexico_sf, color = "blue")

enter image description here

以下是每个sf文件的摘要:

cdmx 3包含16个要素和261个字段的简单要素集合几何类型:多边形尺寸:XY边界框:xmin:2776218 ymin:786788.9 xmax:2820850最大值:846749.5预计CRS:Mexico_ITRF2008_LCC前10个功能:...
airbnb_mexico_sf简单的功能集合,包含19852个功能和14个字段几何类型:点尺寸:XY边界框:xmin:-99.33963 ymin:19.16914 xmax:-98.96297 ymax:19.55734预计CRS:Mexico_ITRF2008_LCC前10个功能:...

任何反馈或建议都非常感谢...

我试着让两个sf集都有相同的CRS(Mexico_ITRF2008_LCC),但它什么也没做...

oug3syen

oug3syen1#

您要更改此行:

st_crs(airbnb_mexico_sf) <- st_crs(cdmx3)

airbnb_mexico_sf <- airbnb_mexico_sf %>%
       st_transform(crs = st_crs(cdmx3))

问题是,您正在覆盖CRS信息,而没有实际重新投影形状。这是您需要做的...
st_crs()的直接分配最好保留用于错误校正-当存在关于CRS的信息但已知是错误的情况。
也考虑更换

airbnb_mexico_sf <- st_as_sf(x = airbnb_mexico, coords = c("longitude","latitude"))

airbnb_mexico_sf <- st_as_sf(x = airbnb_mexico, coords = c("longitude","latitude"), crs = 4326)

crs = 4326很重要,它告诉{sf}如何解释您的坐标-这些数字是指纬度和经度,还是距离米?也许是美国测量英尺?4326确保数据在球体上以度为单位进行解释(处理GPS坐标时,这是一个很好的默认值)。

相关问题