R、 sf:将线与多多边形的边界相交,提取这些交点的坐标

R、 sf:将线与多多边形的边界相交,提取这些交点的坐标,r,sf,R,Sf,我是SF和stack的新手,希望我的问题足够清楚。 我能够创建一组线,将美国各地的一个点与一组点连接起来。 我可以把美国各州解读成多个角度。 我的目标是找到和地理定位我创建的线跨越县边界的所有点 到目前为止,我能够从点创建线: points_to_lines <- dt %>% st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% group_by(lineid) %>% summarize(do_union

我是SF和stack的新手,希望我的问题足够清楚。 我能够创建一组线,将美国各地的一个点与一组点连接起来。 我可以把美国各州解读成多个角度。 我的目标是找到和地理定位我创建的线跨越县边界的所有点

到目前为止,我能够从点创建线:

points_to_lines <- dt %>% 
  st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% 
  group_by(lineid) %>%
  summarize(do_union = FALSE) %>% lineid
  st_cast("LINESTRING")
我很天真地尝试给他们两个相同的坐标集,然后st_将它们相交。非稀疏矩阵表示所有直线只与一个县相交

gis1930_p <- st_set_crs(gis1930, 4326) %>% st_transform(4326)
st_intersects(points, gis1930_p, sparse=FALSE)

非常感谢您的帮助,如果我能提供任何其他详细信息,请告诉我。

您没有提供数据,因此我将使用中提供的数据集:

您需要的主要功能是
st_交叉口
功能:

库(sf)

嘿,非常感谢。这似乎确实是我在寻找的。不幸的是,我不能完全让它工作。当我在县和一行之间进行st_Intersection时,我得到一个空数据集。我注意到的不同之处是,在我的设置中,有两个对象的地理参考可能不同?我必须运行st_set_crs使其保持不变(例如4326)。奇怪的是,如果我在县上画线,线就不会出现。是的,这听起来像是一个投影问题。您应该使用
st\u变换
来更改CRS而不是
st\u集(CRS
)。我使用
mapview
包调试投影错误。嘿,非常感谢,在我对代码做了两个更改后,它工作了:1。I st_变换,然后st_集_src(4326)。2.我切换到
st_as_sf(coords=c(“lat”,“lon”))
而不是
st_as_sf(coords=c(“lon”,“lat”))
!此外,mapview上的提示很好地解决了第二个错误!!
Reading layer `US_county_1930_conflated' from data source `~/county_gis/1930' using driver `ESRI Shapefile'
Simple feature collection with 3110 features and 18 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -7115608 ymin: -1337505 xmax: 2258244 ymax: 4591848
epsg (SRID):    NA
proj4string:    +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs
gis1930_p <- st_set_crs(gis1930, 4326) %>% st_transform(4326)
st_intersects(points, gis1930_p, sparse=FALSE)
plot(gis1930_p[0], reset = FALSE)
plot(points[0], add = TRUE)