Namn

ST_AsLatLonText — Returnerar grader, minuter och sekunder för den angivna punkten.

Synopsis

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

Beskrivning

Returnerar grader, minuter och sekunder för punkten.

[Notera]

Det antas att punkten befinner sig i en lat/lon-projektion. Koordinaterna X (lon) och Y (lat) normaliseras i utdata till det "normala" intervallet (-180 till +180 för lon, -90 till +90 för lat).

Parametern text är en formatsträng som innehåller formatet för den resulterande texten, på samma sätt som en datumformatsträng. Giltiga symboler är "D" för grader, "M" för minuter, "S" för sekunder och "C" för kardinalriktning (NSEW). DMS-tokens kan upprepas för att ange önskad bredd och precision ("SSS.SSSS" betyder "1,0023").

"M", "S" och "C" är valfria. Om "C" utelämnas visas grader med ett "-"-tecken om det är söder eller väster. Om "S" utelämnas visas minuter som decimaltal med så många precisionssiffror som du anger. Om "M" också utelämnas visas grader som decimaltal med så många siffrors precision som du anger.

Om formatsträngen utelämnas (eller är noll-lång) kommer ett standardformat att användas.

Tillgänglighet: 2.0

Exempel

Standardformat.

Kod
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)'));
Utdata
2°19'29.928"S 3°14'3.243"W

Tillhandahåller ett format (samma som standard).

Kod
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"C'));
Utdata
2°19'29.928"S 3°14'3.243"W

Andra tecken än D, M, S, C och punkt skickas bara vidare.

Kod
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D degrees, M minutes, S seconds to the C'));
Utdata
2 degrees, 19 minutes, 30 seconds to the S 3 degrees, 14 minutes, 3 seconds to the W

Signerade grader istället för kardinalriktningar.

Kod
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"'));
Utdata
-2°19'29.928" -3°14'3.243"

Decimala grader.

Kod
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D.DDDD degrees C'));
Utdata
2.3250 degrees S 3.2342 degrees W

För att konvertera tolkade komponenter för grader, minuter och sekunder till decimalgrader ska väderstreckets tecken tillämpas uttryckligen.

Kod
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;
Utdata
   label   | decimal_degrees
-----------+-----------------
 latitude  |   -43.014055556
 longitude |   147.205055556

Alltför stora värden normaliseras.

Kod
SELECT (ST_AsLatLonText('POINT (-302.2342342 -792.32498)'));
Utdata
72°19'29.928"S 57°45'56.757"E