Geom_points 未绘制在 ggplot 地图上

Geom_points not being drawn on ggplot map

我正在尝试在我从 shapefile(在此 link 下载)创建的地图上叠加几个点。我正在使用 sf 包绘制我的地图,并且能够获得以下地图。

first.map<-ggplot()+ 
  geom_sf(data = shp)+
  ggtitle("First Map")


如您所见,这工作正常,但当我尝试叠加我的点时,我得到以下结果。

second.map<-ggplot()+ 
  geom_sf(data = shp)+
  geom_point(data=locations, aes(long,lat),inherit.aes = F)+
  ggtitle("Second Map")


我认为这与 sf 如何解释我的点坐标有关,但我无法弄清楚如何将我的点坐标转换为 R 想要的坐标。以下是我要覆盖的坐标。我对处理此类数据不是很有经验,因此我们将不胜感激。

locations<-data.frame(id=c(1,2,3,4,5),
                      long=c(96.73872,96.69264,96.69264,96.69250,96.68029),
                      lat=c(43.52769,43.53598,43.53598,43.54669,43.53585))

这不是我的强项,所以也很想玩。

我让它像这样工作,

  • 将位置转换为 sf 对象
  • 将形状转换为具有相同的 crs
  • 通过在输入数据中添加 *-1 来编辑位置经度以从西向东交换

很想听听其他人的更好做法,但这应该会让你继续前进。

shp <- st_read("Subdivisions/Subdivisions.shp")

locations<-data.frame(id=c(1,2,3,4,5),
        long=c(96.73872,96.69264,96.69264,96.69250,96.68029)*-1,
        lat=c(43.52769,43.53598,43.53598,43.54669,43.53585))


locations_g <- st_as_sf(locations, coords = c("long", "lat"), crs = 4326)
shp2 <- st_transform(shp, 4326)

ggplot()+ 
  geom_sf(data = shp2)+
  geom_sf(data=locations_g)+
  ggtitle("Second Map")