Issue in reading GPS info from JPG images ?
3 次查看(过去 30 天)
显示 更早的评论
I have some JPG images that are Geo-Tagged, am trying to read Lat & Long information from them in (Deg,Min,Sec) and want to convert them in decimal degree(DD), but getting some issue, My code is as follow
info = imfinfo('DSC_0011.JPG');
The result of above statement is as follow
**nfo.GPSInfo**
GPSVersionID: [2 3 0 0]
GPSLatitudeRef: 'N'
GPSLatitude: [33 34.2657 0]
GPSLongitudeRef: 'E'
GPSLongitude: [73 8.5707 0]
GPSAltitudeRef: 0
GPSAltitude: 456
GPSTimeStamp: [5 5 48.6400]
GPSSatellites: '05'
GPSMapDatum: 'WGS-84'
GPSDateStamp: '2016:03:31'
As you can see from above result in both rows Lat & Long seconds are 0, but in actually when i checked the properties of corresponding image it was this:
can some one help me to resolve the issue, i am facing same error while reading different images...
4 个评论
Image Analyst
2017-2-2
Yes but he may need more accurate than that. Even though there's a 4 meter accuracy in GPS, 1e-16 times the circumference of the earth is 4 nanometers. What if he needs to specify his location down to the nearest angstrom? ;-)
Walter Roberson
2017-2-2
Even if the position were represented in one double (instead of being split into degrees and minutes+fractions),
eps(40075)
ans =
7.27595761418343e-12
and angstrom is 10^10, so double is already capable of representing down to about 1/13th of an angstrom.
采纳的回答
Image Analyst
2017-1-29
What did you use for the second method of getting GPS info? Why not just take the fractional part and multiply by 60 to get seconds:
secs = 0.2657 * 60; % = 15.942 seconds
It will give you the same number of seconds. What's wrong with doing that, if anything?
更多回答(2 个)
joévan ziebel
2020-3-20
编辑:joévan ziebel
2020-3-20
Hello,
I would like some help if it is possible for the function imfinfo().
I need a really good accuracy when I export my GPS coordinates from a jpg file.
More particularly on the longitude and on the latitude of the exif data.
Here is my code
filelist = dir('test/*.jpg');
nfiles = length(filelist);
fid = fopen('localisation.csv','w');
Entete={'file','latitude','longitude'};
fprintf(fid,'%s,%s,%s\n',Entete{:});
for i=1:nfiles
disp(['Traitement du fichier n° ',sprintf('%d',i)])
probname = filelist(i).name;
filesource = strcat('test/',probname);
f = imfinfo(filesource);
latitudeTab=f.GPSInfo.GPSLatitude;
longitudeTab=f.GPSInfo.GPSLongitude;
latitude = dms2degrees(latitudeTab);
longitude = dms2degrees(longitudeTab);
formatSpec = '%s,%f,%f\n';
str = sprintf(formatSpec,probname,latitude,longitude);
fprintf(fid,str);
end
fclose(fid);
Don't pay attention to the entire code. The problem is only when I save the data in the f variable.
Matlab rounds the value of latitude and longitude and I don't know how to solve this. Maybe it's the imfinfo function that does this and I cannot do anything about ?
Here is the real value in the jpg file :
Here is the rounded value with matlab :
I already tried with the vpa and with a new Digits, but it seems it doesn't change something. I need the exact value, not a rounded one.
Thanks for your help in advance !
3 个评论
Walter Roberson
2020-3-22
Besides that: the difficulty is probably in your choice of default format for displaying values. Try using
format long g
and also go into Preferences and adjust the default display format.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!