st_intersects 错误 st_crs(x) == st_crs(y) 不正确
st_intersects errors for st_crs(x) == st_crs(y) is not TRUE
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)
我明白了
Error: st_crs(x) == st_crs(y) is not TRUE
然后我尝试了
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)
我明白了
Error: st_crs(x) == st_crs(y) is not TRUE
此时我无法判断是设置CRS或转换或st_intersects
功能有问题。谢谢,
我没有你的位置数据,但如果我尝试使用 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)
请注意,这会在 santacruz 对象上 st_as_sf 之前 st_set_crs。
st_set_crs(santacruz, 4269)
设置返回对象的CRS,但不替换santacruz
。您需要保存它:
santacruz <- st_set_crs(santacruz, 4269)
或者做
st_crs(santacruz) <- 4269
替换 CRS。
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)
我明白了
Error: st_crs(x) == st_crs(y) is not TRUE
然后我尝试了
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)
我明白了
Error: st_crs(x) == st_crs(y) is not TRUE
此时我无法判断是设置CRS或转换或st_intersects
功能有问题。谢谢,
我没有你的位置数据,但如果我尝试使用 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)
请注意,这会在 santacruz 对象上 st_as_sf 之前 st_set_crs。
st_set_crs(santacruz, 4269)
设置返回对象的CRS,但不替换santacruz
。您需要保存它:
santacruz <- st_set_crs(santacruz, 4269)
或者做
st_crs(santacruz) <- 4269
替换 CRS。