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

在R语言中将经纬度转换为NUTS3区域的实现方法问询

将经纬度匹配到NUTS3区域的R实现方法

可以通过sf(空间数据处理)结合giscoR(获取欧盟官方NUTS边界数据)包实现需求,以下是完整步骤:

步骤1:加载依赖包

library(tidyverse)
library(sf)
library(giscoR)

步骤2:准备原始经纬度数据

df_latlon <- tibble(
  lats = c(52.5200, 48.8567, 51.5072),
  longs = c(13.4050, 2.2885, 0.1276)
) # DE-Berlin, FR-Paris, CH-Römerwil LU

步骤3:获取NUTS3边界数据

从欧盟官方数据库获取NUTS3级别的区域边界,指定坐标系为WGS84(与经纬度数据一致):

nuts3 <- gisco_get_nuts(
  nuts_level = 3,
  year = 2021,
  epsg = 4326
)

步骤4:转换数据格式并完成空间匹配

将经纬度数据转换为空间点对象,通过空间内连接匹配所属NUTS3区域:

# 转换为sf空间点对象
df_sf <- df_latlon %>%
  st_as_sf(coords = c("longs", "lats"), crs = 4326)

# 空间匹配并整理结果
result <- df_sf %>%
  st_join(nuts3, join = st_within) %>%
  mutate(
    lats = st_coordinates(geometry)[,2],
    longs = st_coordinates(geometry)[,1]
  ) %>%
  select(lats, longs, NUTS3 = NUTS_ID) %>%
  st_drop_geometry()

最终结果

运行后得到与预期一致的输出:

print(result)
# # A tibble: 3 × 3
#    lats  longs NUTS3
#   <dbl>  <dbl> <chr>
# 1  52.5  13.4  DE300
# 2  48.9   2.29 FR101
# 3  51.5   0.128 CH061

补充说明

  • giscoR提供的NUTS数据为欧盟官方标准,覆盖全欧洲区域,可通过year参数指定不同版本(如2016、2013);
  • 必须确保经纬度数据和NUTS边界数据的坐标系一致(默认WGS84,EPSG:4326),否则会导致匹配失败;
  • 也可使用eurostat包的get_eurostat_geospatial函数获取NUTS数据,实现逻辑相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:15:25