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

使用PostGIS时英国郡几何图形显示在几内亚湾的原因排查

问题原因及解决方案

核心问题:坐标系统不匹配+空间参考未正确绑定

  • 你的uk_counties表几何数据采用的是OSGB36英国国家格网(SRID=27700),坐标单位是米,数值代表东距/北距,不是经纬度。但导入后PostGIS可能未正确识别并绑定这个SRID,导致系统默认把这些数值当成WGS84经纬度(SRID=4326,单位是度)解析——27700的大数值(比如464216, 462110)被当成经纬度的话,会直接映射到接近0°N 0°E的几内亚湾区域。
  • 同时demand_origin的经纬度是WGS84(SRID=4326),两个表的坐标系统完全不兼容,直接关联查询时PostGIS无法计算有效交集,所以结果为空。

修复步骤

1. 确认并绑定uk_counties的正确SRID

先检查当前几何字段的SRID是否正确:

SELECT ST_SRID(geometry) FROM uk_counties LIMIT 1;

如果返回值不是27700(比如0),执行以下语句修复:

ALTER TABLE uk_counties
ALTER COLUMN geometry TYPE geometry(Geometry, 27700)
USING ST_SetSRID(geometry, 27700);

2. 执行跨坐标系的关联查询

把demand_origin的经纬度转换为SRID=27700的坐标后,再与郡的几何图形做交集判断:

SELECT
    do.origin_city,
    uc.ctyua23nm AS county_name
FROM
    demand_origin do
JOIN
    uk_counties uc ON ST_Intersects(
        -- 将经纬度点转换为OSGB36坐标系
        ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326), 27700),
        uc.geometry
    );

注意:PostGIS中点的坐标顺序是经度(X)在前,纬度(Y)在后,必须和ST_MakePoint的参数顺序对应,否则坐标会偏移错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:32:59