aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/documents/Documents.ts53
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);
}