add coordinate conversion functions

This commit is contained in:
Sampo
2024-10-27 09:50:40 +02:00
committed by Aaro Koivukangas
parent b5adaa2750
commit 09628dbfd4
+38
View File
@@ -59,3 +59,41 @@ export const getHomininSkeletalRemains = (locality: EditDataType<LocalityDetails
!!locality.now_ls.find(
({ com_species }) => com_species?.genus_name && hominins.includes(com_species.genus_name.toLowerCase())
)
export const convertDmsToDec = (dms: string | null | undefined) => {
if (typeof dms !== 'string') return
const dmsArray = dms.split(/[^\d\w.]+/)
const degrees = dmsArray[0]
const minutes = dmsArray[1]
const seconds = dmsArray[2]
const direction = dmsArray[3]
let dec = Number((Number(degrees) + Number(minutes) / 60 + Number(seconds) / 3600).toFixed(12))
if (direction == 'S' || direction == 'W') {
dec = dec * -1
}
return dec
}
export const convertDecToDms = (dec: number | null | undefined, isLatitude: boolean) => {
if (typeof dec !== 'number') return
const absolute = Math.abs(dec)
const degrees = Math.floor(absolute)
const minutesNotTruncated = (absolute - degrees) * 60
const minutes = Math.floor(minutesNotTruncated)
const seconds = Number(((minutesNotTruncated - minutes) * 60).toFixed(2))
let direction = ''
if (isLatitude) {
direction = dec >= 0 ? 'N' : 'S'
} else {
direction = dec >= 0 ? 'E' : 'W'
}
return degrees + ' ' + minutes + ' ' + seconds + ' ' + direction
}