如何相交两个 sf 对象?

How to intersect two sf objects?

我从这里下载了两个 .gdb 文件:

我将两个文件夹都保存到数据文件夹中并解压缩了它们

library(sf)

lots <- st_read("data/Lots_GDB/lots.gdb",layer= "lot")
lots <-st_transform(st_cast(lots , "MULTIPOLYGON"), "+proj=longlat +datum=WGS84")

buildings <- st_read("data/buildings_gdb/buildings.gdb",layer= "buildings")
buildings <-st_transform(st_cast(buildings , "MULTIPOLYGON"), "+proj=longlat +datum=WGS84") %>%  select( FACILITYID,FACILITY_TYPE, STATUS)

我想获得的东西:

  1. 我只想保留对象地块中没有建筑物对象多边形的多边形(即我想要没有建筑物的地块)
  2. 同样的事情,但也只得到里面有建筑物的地段。

我用st_intersection()重叠了两个对象

lots_building<- st_intersection(lots, buildings)

然后绘制在地图上:

ggmap() +
  geom_sf(data= lots_building,  alpha=0.9, inherit.aes = FALSE)

但不知何故 lots_building 似乎不是完成任务的正确特征。

我尝试了很多方法,但这是唯一有效的方法:

diffPoly <-lots[lengths(st_intersects(lots,buildings))==0,]