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

R使用Eurostat包绘图提示旧版CRS对象的代码修正方法

问题背景

基于R的eurostat包绘制欧洲地图时,代码可正常运行,输出的地图效果符合预期,但运行过程中会持续返回提示信息:

old-style crs object detected; please recreate object with a recent sf::st_crs()

原始运行代码如下:

europe <- eurostat_geodata_60_2016 

# basic map
ggplot(europe) + geom_sf() + 
  coord_sf(crs = 3035)
问题原因

提示触发的原因是eurostat包内置的示例地理数据eurostat_geodata_60_2016存储时使用了旧版sf包规范的坐标参考系(CRS)对象,新版sf加载这类旧格式对象时就会抛出对应提示。

修正代码

只需要在绘图前对空间对象的CRS按新版规范重建,同时将坐标系统一用st_crs()函数声明即可消除提示,绘图效果和原有代码完全一致:

library(sf)
library(ggplot2)
library(eurostat)

europe <- eurostat_geodata_60_2016
# 按新版sf规范重建空间对象的CRS
st_crs(europe) <- st_crs(europe)

# 绘制基础地图
ggplot(europe) + 
  geom_sf() + 
  coord_sf(crs = st_crs(3035))
调整说明
  • 新增st_crs(europe) <- st_crs(europe)语句:读取原有空间数据自带的CRS信息,通过新版sf::st_crs()生成符合最新规范的CRS对象重新赋值,从数据源层面消除旧格式CRS问题
  • 将coord_sf()的crs参数从纯EPSG编码数值3035改为st_crs(3035)格式:避免坐标投影转换环节触发旧格式CRS检测

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:36:17