13 lines
461 B
TypeScript
13 lines
461 B
TypeScript
const DMS = /(\d+(?:\.\d+)?)°\s*(\d+)'\s*(\d+(?:\.\d+)?)"/;
|
|
|
|
/** Parses a degree-minute-second string such as ` 75°56'55.9"` into decimal degrees. Returns null when invalid. */
|
|
export function parseDms(text: string): number | null {
|
|
const m = DMS.exec(String(text));
|
|
if (!m) return null;
|
|
const deg = Number(m[1]);
|
|
const min = Number(m[2]);
|
|
const sec = Number(m[3]);
|
|
if (min >= 60 || sec >= 60) return null;
|
|
return deg + min / 60 + sec / 3600;
|
|
}
|