You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中根据ONS LSOA代码获取区域质心经纬度的方法

解决LSOA代码查询质心经纬度的方法

方法一:使用geographrR包直接调用内置数据

这个包内置了英国LSOA区域的质心坐标数据,无需额外下载外部文件,步骤简单:

  • 安装并加载包:
install.packages("geographr")
library(geographr)
  • 调用内置的LSOA质心数据集,编写查找函数:
# 加载内置的LSOA质心数据
data(lsoa_centroids)

# 自定义查找函数,输入LSOA代码返回经纬度
get_lsoa_centroid <- function(target_code) {
  match_result <- lsoa_centroids[lsoa_centroids$lsoa_code == target_code, c("longitude", "latitude")]
  if (nrow(match_result) == 0) {
    return(data.frame(longitude = NA, latitude = NA))
  }
  return(match_result)
}

# 测试示例代码
get_lsoa_centroid("E01004735")

方法二:通过ONS Shapefile计算质心

如果你想直接使用ONS官方数据,可以处理其发布的LSOA边界Shapefile来生成质心坐标:

  • 下载ONS的LSOA边界数据(如2011版英格兰威尔士LSOA边界Shapefile)
  • 使用sf包加载并计算质心:
install.packages("sf")
library(sf)

# 加载Shapefile文件,替换为你的文件路径
lsoa_boundaries <- st_read("your_path_to_lsoa_shapefile.shp")

# 计算每个LSOA区域的质心
lsoa_centroids <- st_centroid(lsoa_boundaries)

# 提取LSOA代码和经纬度,转换为数据框
centroid_df <- data.frame(
  lsoa_code = lsoa_centroids$LSOA11CD, # 字段名根据Shapefile实际情况调整
  longitude = st_coordinates(lsoa_centroids)[, 1],
  latitude = st_coordinates(lsoa_centroids)[, 2]
)

# 查找函数示例
find_centroid <- function(code) {
  centroid_df[centroid_df$lsoa_code == code, c("longitude", "latitude")]
}

方法三:使用ukboundaries包获取数据

该包同样包含英国各级区域的地理数据,可快速提取LSOA质心:

install.packages("ukboundaries")
library(ukboundaries)

# 获取LSOA边界数据
lsoa_data <- ukboundaries::lsoa()

# 计算质心并提取坐标
centroids <- st_centroid(lsoa_data)
centroid_data <- data.frame(
  lsoa_code = centroids$lsoa11cd,
  longitude = st_coordinates(centroids)[, 1],
  latitude = st_coordinates(centroids)[, 2]
)

内容的提问来源于stack exchange,提问作者hwk2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:15:35