library(tidyverse)
library(tigris)
library(sf)
santacruz <- tracts("CA", "Santa Cruz")
coords_sf <- locations %>% st_as_sf(coords = c("Longitude", "Latitude"), crs=4269) 这应该有相同的CRS,但当我尝试
st_intersects(coords_sf, santacruz)我得到了
错误: st_crs(x) == st_crs(y)不是真
然后我试着
st_set_crs(santacruz, 4269)
st_set_crs(coords_sf, 4269)
st_transform(santacruz, 4269)
st_transform(coords_sf, 4269)但不起作用。我也试过
st_transform(santacruz, crs = "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
st_transform(coords_sf, crs = "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")无论我尝试设置CRS并在尝试时转换它。
st_intersects(coords_sf, santacruz)我得到了
错误: st_crs(x) == st_crs(y)不是真
此时,我无法判断设置CRS、转换或st_intersects函数是否有问题。谢谢,
发布于 2018-03-07 20:37:10
st_set_crs(santacruz, 4269)设置返回对象的CRS,但不替换santacruz。你需要拯救它:
santacruz <- st_set_crs(santacruz, 4269)或者另一种选择
st_crs(santacruz) <- 4269 以取代CRS。
发布于 2018-03-07 02:27:59
我没有您的位置数据,但是如果我尝试使用sf的nc数据集,这个方法适用于我:
library(tidyverse)
library(tigris)
library(sf)
santacruz <- tracts("CA", "Santa Cruz")
santacruz <- st_as_sf(santacruz) %>% st_set_crs(4269)
nc <- st_read(system.file('shape/nc.shp', package = 'sf')) %>%
st_transform(4269)
st_intersects(nc, santacruz)
#> Sparse geometry binary predicate list of length 100, where the predicate was `intersects'
#> first 10 elements:
#> 1: (empty)
#> 2: (empty)
#> 3: (empty)
#> 4: (empty)
#> 5: (empty)
#> 6: (empty)
#> 7: (empty)
#> 8: (empty)
#> 9: (empty)
#> 10: (empty)注意,这会在桑塔克鲁斯对象的st_as_sf之前执行st_set_crs。
https://stackoverflow.com/questions/49141192
复制相似问题