pyproj转换NAD27 NM坐标至经纬度返回inf值,请求排查原因
问题原因分析及解决方案
核心问题
你的代码返回(inf, inf)主要是pyproj版本升级后旧API弃用导致的投影初始化失败,具体原因如下:
Proj(init='epsg:...')写法已废弃:pyproj 3.x版本开始彻底移除了对init参数的支持,旧写法会导致投影对象无法正确初始化,后续转换自然返回无效值。- 旧
transform函数兼容性问题:原transform函数在pyproj 3.x中已被标记为弃用,在投影初始化异常的情况下,会返回无穷值而非明确错误。
修正后的代码
使用pyproj 3.x推荐的Transformer API重构代码:
from pyproj import Transformer # 创建CRS转换器,明确指定坐标顺序为(x,y)(always_xy=True) transformer = Transformer.from_crs("EPSG:32012", "EPSG:4326", always_xy=True) long, lat = transformer.transform(712000, 478500) print(long, lat) # 输出示例:-106.023xxxx 35.xxxxxx
额外检查项
- 验证坐标范围:EPSG:32012(NAD27新墨西哥东带,单位英尺)的有效范围大致为x∈[200000, 800000]、y∈[0, 1000000],你的输入坐标在范围内,无需调整。
- 确认proj-data完整性:pyproj依赖proj地理数据文件,若数据缺失也会导致投影加载失败。可通过以下代码检查数据目录:
import pyproj print(pyproj.datadir.get_data_dir())
若目录为空或不存在,建议重新安装pyproj(pip install --force-reinstall pyproj)。
内容的提问来源于stack exchange,提问作者Veronica Guzman
相关产品推荐
相关产品推荐

