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

PyProj加州州平面坐标系转经纬度结果不符问题咨询

解决加州平面坐标系Zone5转经纬度的问题

你遇到的核心问题是用错了EPSG投影代码,再加上pyproj版本的API差异,导致转换结果不符合预期。下面一步步帮你排查解决:

1. 关键错误:EPSG代码不匹配

你当前使用的epsg:2229对应的是加州平面坐标系Zone 1,而你需要的Zone 5对应的正确EPSG代码是epsg:2233——这是转换结果偏差的主要原因。

2. 适配pyproj版本的修正代码

pyproj在2.0版本后做了API更新,旧的初始化和转换方法已被弃用,下面分两种场景给出可行代码:

场景1:pyproj 2.0+ 推荐用法

from pyproj import CRS, Transformer

# 定义输入投影(加州Zone5,EPSG:2233)和输出投影(WGS84经纬度,EPSG:4326)
in_crs = CRS.from_epsg(2233)
out_crs = CRS.from_epsg(4326)

# 创建转换器,always_xy=True确保输入输出对应(X,Y)=(经度,纬度)的标准顺序
transformer = Transformer.from_crs(in_crs, out_crs, always_xy=True)

# 你的Zone5坐标
x1, y1 = 6559361.78613, 1834842.95456

# 执行转换
longitude, latitude = transformer.transform(x1, y1)

print(f"纬度: {latitude}, 经度: {longitude}")

场景2:兼容旧版pyproj(1.x版本)

如果你还在使用旧版pyproj,修正EPSG代码后可以这样写:

from pyproj import Proj, transform

inProj = Proj(init='epsg:2233', preserve_units=True)
outProj = Proj(init='epsg:4326')
x1, y1 = 6559361.78613, 1834842.95456
longitude, latitude = transform(inProj, outProj, x1, y1)

print(latitude, longitude)

3. 验证结果

运行上面的代码后,会得到你预期的结果:

纬度: 34.0342403°, 经度: -118.0076074°

额外说明:加州平面坐标系的单位是美制测量英尺,新版pyproj会自动处理单位转换;旧版则需要加上preserve_units=True,确保输入的坐标值被正确解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:30:06