名称

ST_AsLatLonText — 返回给定点的度、分、秒表示形式。

大纲

text ST_AsLatLonText(geometry pt, text format='');

描述

返回点的度、分和秒表示形式。

[注意]

假设该点位于纬度/经度投影中。 X(经度)和 Y(纬度)坐标在输出中标准化为“正常”范围(经度为 -180 到 180,纬度为 -90 到 90)。

text 参数是一个格式字符串,包含结果文本的格式,类似于日期格式字符串。 有效标记为“D”表示度、“M”表示分钟、“S”表示秒、“C”表示基本方向 (NSEW)。 DMS 令牌可以重复以指示所需的宽度和精度(“SSS.SSSS”表示“1.0023”)。

“M”、“S”和“C”是可选的。 如果省略“C”,则南或西的度数将显示为“-”符号。 如果省略“S”,分钟将显示为十进制,其精度位数与您指定的位数相同。 如果还省略“M”,则度数将显示为十进制,其精度与您指定的位数相同。

如果格式字符串被省略(或零长度),则将使用默认格式。

可用性:2.0

示例

默认格式。

Code
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)'));
栅格输出
2°19'29.928"S 3°14'3.243"W

指定格式(与默认值相同)。

Code
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"C'));
栅格输出
2°19'29.928"S 3°14'3.243"W

除 D、M、S 和 C 以外的字符仅通过。

Code
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D degrees, M minutes, S seconds to the C'));
栅格输出
2 degrees, 19 minutes, 30 seconds to the S 3 degrees, 14 minutes, 3 seconds to the W

有符号的度数而不是基本方向。

Code
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"'));
栅格输出
-2°19'29.928" -3°14'3.243"

十进制度数。

Code
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D.DDDD degrees C'));
栅格输出
2.3250 degrees S 3.2342 degrees W

To convert parsed degree, minute, and second components to decimal degrees, apply the cardinal-direction sign explicitly.

Code
WITH dms(label, degrees, minutes, seconds, hemisphere) AS (
  VALUES
    ('latitude', 43::numeric, 0::numeric, 50.60::numeric, 'S'),
    ('longitude', 147::numeric, 12::numeric, 18.20::numeric, 'E')
)
SELECT label,
       round(
         (CASE WHEN hemisphere IN ('S', 'W') THEN -1 ELSE 1 END)
         * (degrees + minutes / 60 + seconds / 3600),
         9
       ) AS decimal_degrees
FROM dms;
栅格输出
   label   | decimal_degrees
-----------+-----------------
 latitude  |   -43.014055556
 longitude |   147.205055556

过大的值被归一化。

Code
SELECT (ST_AsLatLonText('POINT (-302.2342342 -792.32498)'));
栅格输出
72°19'29.928"S 57°45'56.757"E