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

是否有R函数可提取复合坐标参考系统(CRS)的水平投影分量?

解决方案

可以直接使用sf包(v1.0-14及以上版本)内置的st_horizontal_crs()函数,该函数基于PROJ原生能力实现,可可靠提取各类复合CRS的水平分量,完美适配WKT1、WKT2、EPSG编码等所有新旧CRS定义格式,不需要自己解析WKT字符串。

调用示例

基于你提供的复合CRS对象,直接调用即可:

# 加载sf包
library(sf)

# 提取水平CRS分量
horizontal_crs <- st_horizontal_crs(compound_crs)

# 验证结果,输出对应EPSG码为7856,符合需求
horizontal_crs$epsg

提取得到的horizontal_crs是标准的sf crs对象,可以直接赋值给栅格对象:

  • 适配terra包栅格:crs(你的栅格对象) <- horizontal_crs
  • 适配raster包栅格:crs(你的栅格对象) <- horizontal_crs$proj4string

旧版本sf兼容方案

如果你的sf版本低于v1.0-14无法升级,也可以通过PROJ的转换参数实现提取:

# 通过proj原生能力提取水平分量WKT
horizontal_wkt <- sf::sf_proj_normalize(compound_crs$wkt, format = "WKT2", type = "horizontal")
horizontal_crs <- st_crs(horizontal_wkt)

该方案同样不需要手动解析WKT结构,可靠性远高于正则匹配提取的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:06