我有一个 shapefile(带有多个多边形)和一个带坐标的数据框。我想将数据框中的每个坐标分配给 shapefile 中的多边形。因此,要在具有多边形名称或 id 的数据框中添加一列 这是link to the data
library(sf)
library(readr)
shape <- read_sf("data/mesopelagic_regions/GlasgowMesopelagicProvinces_v1_2017.shp")
data<- read_csv("data/data.csv")
但是当我尝试加入他们时,我总是收到错误
pts = st_as_sf(data, coords = c("dec_lon", "dec_lat"), crs= 4326)
st_join(pts, shape)
我尝试了 over()
函数和其他技巧,例如 st_make_valid()
但我总是收到此错误:
Error in s2_geography_from_wkb(x, oriented = oriented, check = check) : Evaluation error: Found 30 features with invalid spherical geometry.
这是一个最近的问题(在我的代码工作之前),但现在我无法使用 sf 包来完成这个任务,我总是以这个错误告终。我更新了库,看看它是否有帮助,但我无法让它工作。
非常感谢您对此事的帮助
答案 0 :(得分:2)
您有两个选择:
sf::sf_use_s2(FALSE)
关闭 s2 处理;理论上,行为应该恢复到 1.0 版之前的行为我无法访问您的文件并确定,但这段代码过去曾帮助过我:
yer_object$geometry <- yer_object$geometry %>%
s2::s2_rebuild() %>%
sf::st_as_sfc()