在JavaScript中从EXIF数据中提取GPS数据
我想使用NodeJS从图片中提取GPS Exif标记。我得到了以下格式的数据:在JavaScript中从EXIF数据中提取GPS数据,javascript,node.js,exif,Javascript,Node.js,Exif,我想使用NodeJS从图片中提取GPS Exif标记。我得到了以下格式的数据: { "gps": { "GPSTimeStamp": [2147483647, 76, 41], "GPSLongitude": [76, 41, 56.622], "GPSLatitude": [30, 43, 8.754], "GPSAltitude": 0, "GPSDateStamp": "14615748802"
{
"gps": {
"GPSTimeStamp": [2147483647, 76, 41],
"GPSLongitude": [76, 41, 56.622],
"GPSLatitude": [30, 43, 8.754],
"GPSAltitude": 0,
"GPSDateStamp": "14615748802"
}
}
有没有办法把它转换成经纬度
当我在Android中检查Exif数据时,它会显示正确的纬度和经度,但在NodeJS中,我得到的是这种格式的数据。哦,我刚刚了解了digree、分、秒和方向的概念。 数组中有三个值,分别是digree、minute和seconds 要解析输入,请使用以下命令
function ParseDMS(input) {
var parts = input.split(/[^\d\w]+/);
var lat = ConvertDMSToDD(parts[0], parts[1], parts[2], parts[3]);
var lng = ConvertDMSToDD(parts[4], parts[5], parts[6], parts[7]);
}
以下内容将您的DMS转换为DD
function ConvertDMSToDD(degrees, minutes, seconds, direction) {
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;
}
因此,您的输入将产生以下结果:
36°57'9" N = 36.9525000
110°4'21" W = -110.0725000
我知道这可能已经解决了,但我想为那些在这个问题上遇到困难的人提供另一种解决方案 看起来您正在使用一些Node.js库,这些库为您提供了原始的lat/long数据,您可以自行转换这些数据。有一个新的库可以自动为您执行此操作。它是一个维护、积极开发的库,关注性能,在nodejs和浏览器中都能工作
async function getExif() {
let output = await exifr.parse(imgBuffer)
console.log('gps', output.latitude, output.longitude)
}
您还可以试用该库的,并尝试使用图像及其输出,或者查看。可能应该添加一条免责声明,说明这是您的库。干得好。