Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // --------------------------
- // install:
- // npm install exif
- var ExifImage = require('exif').ExifImage;
- var fs = require('fs');
- isEmpty = function(obj) {
- return Object.keys(obj).length === 0;
- }
- exif_get_gpsdata = function(exif )
- {
- var gps = exif.gps;
- if ( isEmpty(gps) ) {
- return null;
- }
- var lat = gps.GPSLatitude || null;
- var lon = gps.GPSLongitude || null;
- if (!lat || !lon) {
- return null;
- }
- //Convert coordinates to WGS84 decimal
- var latRef = gps.GPSLatitudeRef || "N";
- var lonRef = gps.GPSLongitudeRef || "W";
- lat = (lat[0] + lat[1]/60 + lat[2]/3600) * (latRef == "N" ? 1 : -1);
- lon = (lon[0] + lon[1]/60 + lon[2]/3600) * (lonRef == "W" ? -1 : 1);
- var imgDir = gps.GPSImgDirection || NaN;
- var altRef = gps.GPSAltitudeRef || NaN;
- var alt = gps.GPSAltitude || 0;
- var alt = gps.GPSAltitude * (altRef == 0 ? 1 : -1);
- return {
- 'lat' : lat.toFixed(6),
- 'lon' : lon.toFixed(6),
- 'alt' : alt.toFixed(1),
- 'dir' : imgDir.toFixed(3)
- }
- }
- // --------------------------
- if (process.argv.length <= 2) {
- console.log("Usage: " + __filename + " path/to/directory");
- process.exit(-1);
- }
- var path = process.argv[2];
- var files_list = fs.readdirSync(path);
- var total_files = 0;
- var valid_files = 0;
- files_list.map(function (fn) {
- var filename = path + '\\' + fn;
- total_files++;
- new ExifImage({ image : filename }, function (error, exifData) {
- if (!error) {
- var data = exif_get_gpsdata( exifData );
- if (data) {
- valid_files++;
- console.log(filename + ' -> Lat: '+data.lat+', Lon: '+data.lon+', Alt: '+data.alt+', Dir: '+data.dir );
- }
- }
- });
- })
- console.log();
- console.log('Total files: ' , total_files);
- console.log('Valid files: ', valid_files);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement