AI摘要

PostGIS的ST_AsGeoJSON函数输出的GeoJSON格式遵循国际标准RFC 7946,坐标顺序为[经度, 纬度],即[lng, lat]。这与一些前端地图库如Google Maps、高德和百度JS API的[lat, lng]顺序不同,使用时需注意区分。若需将坐标顺序颠倒,可使用ST_FlipCoordinates函数。

直接结论(PostGIS + GeoJSON 标准)

PostGIS 的 ST_AsGeoJSON 输出是:[经度 lng, 纬度 lat]
也就是 先 lng,后 lat不是 lat,lng


1. 官方依据(RFC 7946 + PostGIS)

GeoJSON 国际标准 RFC 7946 强制规定:
坐标数组 = [longitude, latitude](X,Y)
PostGIS ST_AsGeoJSON 严格遵守该标准,完全不颠倒。

PostGIS 内部几何:
ST_MakePoint(lng, lat) → 输出 GeoJSON 保持顺序 [lng, lat]

示例:

-- PostGIS:POINT(经度,纬度)
SELECT ST_AsGeoJSON(ST_SetSRID(ST_MakePoint(116.407, 39.904),4326));

输出:

{"type":"Point","coordinates":[116.407,39.904]}

[lng, lat]


2. 最容易踩坑的对比(一定要分清)

平台/格式坐标顺序
PostGIS ST_AsGeoJSON、GeoJSON标准[lng, lat](经度在前)
Google Maps/高德/百度 JS API[lat, lng](纬度在前)
Leaflet、OpenLayers大多 [lat, lng]
前端地图库是 lat,lng;PostGIS/GeoJSON 标准是 lng,lat
混用会直接跑到地球对面。

3. 颠倒了怎么办?

PostGIS 一键翻转坐标:

-- 把 [lng,lat] 翻成 [lat,lng]
SELECT ST_AsGeoJSON(ST_FlipCoordinates(geom)) FROM table;
扫码加入猫哥的AI群
最后修改:2026 年 04 月 21 日
点赞的人是最酷的