ST_WGS84_TO_GCJ02

功能概述

把 WGS-84 坐标(GPS 设备、国际地图使用的坐标系)转换为 GCJ-02 坐标(高德、腾讯等国内地图使用的坐标系)。两者在国内相差几百米,GPS 轨迹直接叠加到国内地图上会出现偏移,转换后才能对齐。

只对中国境内的坐标做偏移:经度在 72.004 ~ 137.8347、纬度在 0.8293 ~ 55.8271 之外的坐标原样返回。

语法

ST_WGS84_TO_GCJ02(<lon>, <lat>)

参数说明

  • <lon>
    <lon>
    :DOUBLE 类型,WGS-84 经度,单位为度,范围 [-180, 180]。

  • <lat>
    <lat>
    :DOUBLE 类型,WGS-84 纬度,单位为度,范围 [-90, 90]。

返回

STRUCT<longitude: DOUBLE, latitude: DOUBLE>
STRUCT<longitude: DOUBLE, latitude: DOUBLE>
,用
.longitude
.longitude
、
.latitude
.latitude
取出转换后的经度和纬度。

使用示例

转换北京天安门附近的一个 GPS 坐标:

SELECT CAST(c.longitude AS DECIMAL(20, 6)) AS gcj_lon, CAST(c.latitude AS DECIMAL(20, 6)) AS gcj_lat FROM (SELECT st_wgs84_to_gcj02(116.397128, 39.916527) AS c);

gcj_longcj_lat
116.40337239.917931

境外坐标原样返回,越界坐标返回 NULL:

SELECT st_wgs84_to_gcj02(0, 0) AS outside_china, st_wgs84_to_gcj02(180.000001, 0) AS invalid;

outside_chinainvalid
{"longitude":0.0,"latitude":0.0}NULL

把 GPS 轨迹转换后计算与 GCJ-02 坐标门店的距离:

SELECT device_id, round(st_distance_sphere(g.longitude, g.latitude, 116.410886, 39.913720)) AS meters FROM ( SELECT device_id, st_wgs84_to_gcj02(lon, lat) AS g FROM VALUES ('d1', 116.404500, 39.912300), ('d2', 116.390000, 39.920000) AS t(device_id, lon, lat) );

device_idmeters
d112.0
d21513.0

注意事项

  • 只提供 WGS-84 到 GCJ-02 的单向转换。
  • 返回值是 STRUCT,参与计算时需取出
    .longitude
    .longitude
    、
    .latitude
    .latitude
    字段。

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询