R语言空间数据操作:从QLD sf对象提取sa3_code_2016的方法
从QLD sf对象提取sa3_code_2016字段并匹配到测试数据框的解决方案
实现逻辑如下:
- 将经纬度点数据转换为sf空间对象后,必须对齐其坐标参考系(CRS)与QLD空间对象的CRS保持一致
- 调用
sf包的st_join()函数即可自动完成点与多边形的空间匹配,将对应sa3_code_2016字段值合并到测试点数据框中
完整可运行示例代码如下:
library(absmapsdata) library(leaflet) library(tidyverse) library(sf) # 提取昆士兰州2016年SA3边界数据,仅保留需要的sa3_code_2016和几何字段 QLD <- sa32016 %>% filter(state_name_2016 == "Queensland") %>% dplyr::select(sa3_code_2016, geometry) # 构造测试经纬度点数据框 Points <- data.frame( Longitude = c(148.275355, 148.872268, 150.490145), Latitude = c(-23.683148, -21.228157,-22.705135), names = c("First", "Second", "Last") ) # 将普通数据框转为sf空间点对象,同时对齐QLD的CRS Points <- st_as_sf(Points, coords = c("Longitude", "Latitude")) %>% st_set_crs(st_crs(QLD)) # 可选:可视化验证点和边界的位置是否匹配 leaflet() %>% addTiles() %>% addPolygons( data = QLD, color = "#b3acc2", fillOpacity = 0.5 ) %>% addMarkers(data = Points) # 执行空间连接,匹配每个点对应的SA3编码,结果存储到Test数据框 Test <- st_join(Points, QLD)
内容的提问来源于stack exchange,提问作者k3r0
相关产品推荐
相关产品推荐

