r - 找到点所在的州, `sf` r

标签 r geospatial r-sf

我有很多从卫星图像生成的点,我想找到这些点在哪里(州)。我搜索了一些链接并得到了一个线索,我应该使用 sf::st_intersects ,但事实证明它不起作用。这是一个最小的例子:

library(sf)
library(ggplot2)
library(dplyr)

# Contiguous US state boundaries
usa = st_as_sf(maps::map("state", fill = TRUE, plot = FALSE))

# Simulate some random points
pts = data.frame(
  x = c(-91.6, -74.3, -101.5),
  y = c(36.1, 42.1, 25.3)
  ) %>%
  st_as_sf(coords=c("x", "y"), crs = 4326)

ggplot() +
  geom_sf(data = usa, fill = NA) +
  geom_sf(data = pts,
          shape = 21, size = 4, fill = "red") +
  coord_sf(crs = st_crs(102003)) +
  theme_minimal()

这是结果图: enter image description here 我想要的是 pts data.frame ,其中多一行指示点的状态:

             geometry  state
1  POINT (-91.6 36.1)  arkansas
2  POINT (-74.3 42.1)  new york
3  POINT (-101.5 25.3) NA

我知道我应该显示sf::st_transform,但没有成功。理想情况下,我希望相交是可扩展的,因为我有超过 1,000,000,000 个点。

谢谢!

最佳答案

您可以使用st_join

a <- pts %>% 
  st_join(usa)

> a 
Simple feature collection with 3 features and 1 field
geometry type:  POINT
dimension:      XY
bbox:           xmin: -101.5 ymin: 25.3 xmax: -74.3 ymax: 42.1
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs
        ID            geometry
1 arkansas  POINT (-91.6 36.1)
2 new york  POINT (-74.3 42.1)
3     <NA> POINT (-101.5 25.3)

关于r - 找到点所在的州, `sf` r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60550186/

相关文章:

使用公式作为变量 : instant evaluation instead of later evaluation? 运行鼠标

r - 有条件的 which.min 函数

r - 如何使用 R 找到具有不同土地利用分类的栅格的平均坡度?

r - 将列添加到 r 中的 sf() 数据框中?

mongodb - 如何使用 Mongoid 执行 $geoIntersects 查询?

gis - 将小多边形与R中最大的邻居合并

r - 如何在R中没有列名的情况下获取矩阵元素?

r - 使用 markovchain 包计算观察序列的概率

r - R 控制台能否支持后台任务或中断(事件处理)?

javascript - 根据缩放调整点的大小