r - 找到点所在的状态,`sf` r
问题描述
我有很多从卫星图像生成的点,我想找到这些点的位置(状态)。我搜索了一些链接并得到了我应该使用的线索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()
这是结果图: 我想要的是 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 个点。
谢谢!
解决方案
You can use 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)
推荐阅读
- python - 如何在 Python 2.7 上使用 Gunicorn 刷新 Flask 应用程序日志输出
- javascript - 如何使用 JavaScript 从 HTML 中获取样式属性?
- html - 页面对齐,在手机浏览时如何将页面置于中心?
- sql - 在 Hive 中使用 groupby 函数获取类别计数,但输出表中缺少一个类别,因为数据在输入表中不可用
- php - 单击收音机并将值回显到 php(wordpress 主题)
- javascript - 为什么我的 HTML POST 请求表单没有通过 Express app.post?如何将数字变量传递给另一个 POST 请求?
- python - python中的奇怪情节
- encryption - 与数字签名相比,数字证书的私钥/公钥组合
- vb6 - 在 VB6 中将指纹传感器与 arduino 连接
- python - 从父目录导入函数