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

PostGIS ST_TRANSFORM使用EPSG 27200报错的问题求助

解决PostGIS中EPSG:27200转换报错的问题

问题根源

报错是因为服务器B使用的PROJ 6.3.1版本无法找到EPSG:27200(新西兰地图投影)与EPSG:4326(WGS84)之间转换所需的基准面转换网格文件。服务器A的PROJ 4.9.2版本对基准转换的处理更宽松,可能内置了简化转换参数,因此未出现问题;而PROJ 6+版本要求必须加载精确网格文件才能完成这类转换。

解决步骤

  1. 确认PostGIS使用的PROJ数据目录
    在PostgreSQL终端执行以下命令,查看PostGIS关联的PROJ库路径:

    show postgis_proj_lib_dir;
    

    输出通常类似/usr/share/proj或/usr/local/share/proj,记录该路径。

  2. 获取基准转换网格文件
    下载适用于新西兰基准转换的网格文件(如nzgd2000.gsb),该文件用于NZGD49(EPSG:27200的基准面)与WGS84之间的精确转换。

  3. 放置网格文件到PROJ目录
    将下载的nzgd2000.gsb复制到第一步查到的PROJ数据目录中,确保PostgreSQL服务进程对该文件有读取权限(可执行chmod 644 /path/to/proj/nzgd2000.gsb设置权限)。

  4. 验证转换功能
    重新执行测试查询:

    select st_asText(st_transform(st_geomfromtext('POINT(172 -43)', 4326), 27200));
    

    此时应能正常返回转换后的坐标,不再报错。

补充说明

如果暂时无法获取网格文件,可尝试用简化转换参数(精度会降低),示例:

select st_asText(st_transform(st_geomfromtext('POINT(172 -43)', 4326), 
  'PROJ4:+proj=tmerc +lat_0=-41 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'));

仅推荐用于非高精度需求场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:47