diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/documents/Documents.ts | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index ca2926129..44f661df1 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -1401,23 +1401,31 @@ export namespace DocUtils { return optionsCollection; } - /** - * - * @param dms Degree Minute Second format exif gps data - * @param ref ref that determines negativity of decimal coordinates - * @returns a decimal format of gps latitude / longitude - */ - function getDecimalfromDMS(dms?: number[], ref?: string) { - if (dms && ref) { - let degrees = dms[0] / dms[1]; - let minutes = dms[2] / dms[3] / 60.0; - let seconds = dms[4] / dms[5] / 3600.0; - - if (['S', 'W'].includes(ref)) { - degrees = -degrees; minutes = -minutes; seconds = -seconds - } - return (degrees + minutes + seconds).toFixed(5); - } + // /** + // * + // * @param dms Degree Minute Second format exif gps data + // * @param ref ref that determines negativity of decimal coordinates + // * @returns a decimal format of gps latitude / longitude + // */ + // function getDecimalfromDMS(dms?: number[], ref?: string) { + // if (dms && ref) { + // let degrees = dms[0] / dms[1]; + // let minutes = dms[2] / dms[3] / 60.0; + // let seconds = dms[4] / dms[5] / 3600.0; + + // if (['S', 'W'].includes(ref)) { + // degrees = -degrees; minutes = -minutes; seconds = -seconds + // } + // return (degrees + minutes + seconds).toFixed(5); + // } + // } + + function ConvertDMSToDD(degrees: number, minutes: number, seconds: number, direction: string) { + var dd = degrees + minutes / 60 + seconds / (60 * 60); + if (direction == "S" || direction == "W") { + dd = dd * -1; + } // Don't do anything for N or E + return dd; } async function processFileupload(generatedDocuments: Doc[], name: string, type: string, result: Error | Upload.FileInformation, options: DocumentOptions) { @@ -1443,8 +1451,15 @@ export namespace DocUtils { } proto.contentSize = result.contentSize; // exif gps data coordinates are stored in DMS (Degrees Minutes Seconds), the following operation converts that to decimal coordinates - proto.lat = getDecimalfromDMS(result.exifData?.data?.gps?.GPSLatitude, result.exifData?.data?.gps?.GPSLatitudeRef); - proto.lng = getDecimalfromDMS(result.exifData?.data?.gps?.GPSLongitude, result.exifData?.data?.gps?.GPSLongitudeRef); + const latitude = result.exifData?.data?.GPSLatitude; + const latitudeDirection = result.exifData?.data?.GPSLatitudeRef; + const longitude = result.exifData?.data?.GPSLongitude; + const longitudeDirection = result.exifData?.data?.GPSLongitudeRef; + if (latitude !== undefined && longitude !== undefined && latitudeDirection !== undefined && longitudeDirection !== undefined) { + proto.lat = ConvertDMSToDD(latitude[0], latitude[1], latitude[2], latitudeDirection); + proto.lng = ConvertDMSToDD(longitude[0], longitude[1], longitude[2], longitudeDirection); + } + } generatedDocuments.push(doc); } |