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

使用R语言转换坐标:SWEREF转WGS84遇异常求助

解决SWEREF 99 TM到WGS84坐标转换异常的问题

你遇到的转换后纬度接近赤道、偏离瑞典区域的问题,大概率是坐标输入格式或工具使用细节导致的。下面给你分析原因并提供修复方案:

1. 核心问题排查

proj4包的ptransform()函数要求输入的坐标为**(东向x, 北向y)**的UTM格式,但直接传入data.frame时可能出现解析偏差;另外旧版proj4的稳定性也不如现在主流的空间数据处理工具。

2. 修复方案

方案一:调整输入格式(适配proj4包)

先将data.frame转为矩阵格式,确保坐标顺序正确传入:

library(proj4)

# 原始坐标数据
temp <- data.frame(
  x = c(598223, 598812, 598824, 598232, 597614, 597629),
  y = c(7095460, 7095426, 7094827, 7094227, 7094821, 7095433)
)

# 转为矩阵格式,保证x(东向)、y(北向)顺序正确
temp_mat <- as.matrix(temp)

# 执行坐标转换
result <- ptransform(
  temp_mat,
  src.proj = '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',
  dst.proj = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs',
  silent = TRUE
)

# 查看转换结果(第一列为经度,第二列为纬度,对应瑞典北部区域)
print(result)

方案二:使用更可靠的sf包(推荐)

proj4包已停止维护,现在R语言中优先推荐用sf包处理空间坐标转换,稳定性更强:

library(sf)

# 将原始数据转为sf空间对象,指定原始坐标系为SWEREF 99 TM
temp_sf <- st_as_sf(temp, coords = c("x", "y"), 
                    crs = "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")

# 转换为WGS84坐标系
temp_wgs84 <- st_transform(temp_sf, crs = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

# 提取转换后的经纬度坐标
coords_wgs84 <- st_coordinates(temp_wgs84)
print(coords_wgs84)

3. 结果验证

正确转换后的坐标应该落在东经19-20度、北纬63.5-64度之间,对应瑞典北部区域,以此判断转换是否成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:02:47