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

CSV中NAD83/BC Albers转WGS84坐标未变化,如何解决?

NAD83/BC Albers(EPSG:3005)转WGS84(EPSG:4326)解决方案

QGIS 操作步骤

  • 导入CSV时必须明确指定原投影,这是你之前转换失败的核心原因:
    1. 点击「图层」→「添加图层」→「添加分隔文本图层」
    2. 选择目标CSV文件,设置分隔符为逗号
    3. 在「几何图形定义」区域,选择「点坐标」,并对应选择你的X(东向)、Y(北向)列
    4. 点击「坐标系」,输入3005,选择「NAD83 / BC Albers」,不要使用默认的WGS84
    5. 确定导入后,右键图层→「打开属性表」→「字段计算器」
    6. 新建两个字段:
      • 字段名lon_wgs84,类型选「实数」,精度设为10
      • 字段名lat_wgs84,类型同样选「实数」,精度设为10
    7. 分别输入表达式计算:
      • 经度:x(transform($geometry, 'EPSG:3005', 'EPSG:4326'))
      • 纬度:y(transform($geometry, 'EPSG:3005', 'EPSG:4326'))
    8. 点击确定,即可得到转换后的WGS84经纬度

R 操作步骤(使用sf包)

用sf包可以精准处理投影转换,避免手动识别错误:

  1. 安装并加载sf包:
install.packages("sf")
library(sf)
  1. 读取CSV并转换为带投影的sf对象:
# 替换为你的CSV路径和实际X/Y列名(比如你的东向列叫"x",北向列叫"y")
df <- read.csv("your_file.csv")
# 创建sf对象,指定原投影为EPSG:3005
sf_data <- st_as_sf(df, coords = c("x", "y"), crs = 3005)
  1. 转换到WGS84并提取经纬度:
# 转换投影到EPSG:4326
sf_wgs84 <- st_transform(sf_data, crs = 4326)
# 把经纬度提取回原数据框
df$lon_wgs84 <- st_coordinates(sf_wgs84)[, 1]
df$lat_wgs84 <- st_coordinates(sf_wgs84)[, 2]
# 保存转换后的CSV
write.csv(df, "converted_coords.csv", row.names = FALSE)

失败原因说明

你之前转换后坐标无变化,几乎可以确定是导入数据时未指定原投影,软件默认将NAD83/BC Albers的平面坐标当成了WGS84的经纬度,转换时相当于同一投影内的无效转换,因此坐标完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:52:25