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
相关产品推荐
相关产品推荐

