Cách phân tích thông tin GPS EXIF ​​sang lat, lng số thập phân


9
"EXIF_GPSAltitude": "(220.279)",
"EXIF_GPSLatitude": "(55) (40.711) (0)",
"EXIF_GPSLatitudeRef": "N",
"EXIF_GPSLongitude": "(8) (30.2282) (0)",

Làm thế nào tôi nên hiểu ví dụ trên như độ, tối thiểu, giây?

Một số dữ liệu exif mà tôi trích xuất có siêu dữ liệu được liệt kê như trên. Là các định dạng được chỉ định bất cứ nơi nào? hoặc tôi nên mong đợi rất nhiều định dạng khác nhau của các vị trí gps trong EXIF?

Tôi cần viết một phương thức cung cấp lat, lng dưới dạng số thập phân dựa trên dữ liệu exif và tôi không chắc có bao nhiêu định dạng khác nhau mà tôi mong đợi để có thể phân tích (tôi sẽ tìm hiểu điều này theo thời gian) và câu hỏi này chủ yếu là về các ví dụ trên. Tôi biết mức độ là 55 và 8, nhưng không chắc là 30 phút và 0,22 * 60 giây, và trong trường hợp đó, tại sao lại là 0?


HĐH gì? Bạn có thể quan tâm đến exiftool sno.phy.queensu.ca/~phil/exiftool . Có một tệp thực thi cho Win hoặc Mac mà tôi đã sử dụng thành công (các tệp Windows trong trường hợp của tôi) để trích xuất thông tin tọa độ từ ảnh.
jbeclill

2
Bạn đang sử dụng nền tảng nào để phân tích thông tin? Bạn đang tìm cách chuyển đổi nó thành gì?
Branco

Tôi đang chuyển đổi sang lat, lng thập phân / giá trị kép và nó nằm trong C #. Tôi chỉ cần thông tin mà câu trả lời đã đưa ra.
Poul K. Sørenen

Câu trả lời:


3

Theo trang này , các giá trị vĩ độ và kinh độ có thể ở (1) độ, (2) độ và phút thập phân hoặc (3) độ, phút và giây thập phân.

Trong ví dụ của bạn, (2) là giá trị thập phân và (3) bằng 0, do đó bạn có độ, phút thập phân.

Vì vậy, bạn sẽ phải kiểm tra ba giá trị để xác định định dạng nào đang được sử dụng.


Theo tiêu chuẩn exif, có ba trường "hợp lý" cho mỗi trường, chứa độ, phút và giây. exiftool bình thường hóa độ thập phân của imporoper thành D, M, S trong khi gán các giá trị này, (exiftool -GPSLongitude = "0.5 90 63.12345" rác.jpg "-> Kinh độ GPS: 2 độ 1 '3.12" W ") Vì vậy, nếu bạn cần độ thập phân , bạn thực hiện dd = x0 + x1 / 60. + x2 / 3600. và có thể bỏ qua việc không chuẩn hóa.
Dave X

4

EXIF lưu trữ các hợp đồng GPS vì rational64uđây là danh sách sáu số nguyên không dấu theo thứ tự sau:

[
   degreesNumerator, degreesDenominator, 
   minutesNumerator, minutesDenominator, 
   secondsNumerator, secondsDenominator
]

Định dạng phù hợp và có vẻ như công cụ bạn đang sử dụng đã chia mỗi cặp thành số thập phân, vì vậy những gì bạn có là:

Lat: 55°   40.711' 0"
Lng:  8°  30.2282' 0"

Nếu bạn muốn chuyển đổi thành một số thập phân duy nhất:

= Degrees + Minutes/60 + Seconds/3600

0

Tôi đã sử dụng tệp bó này để lấy tên tệp, ngày / giờ và độ thập phân

vị trí.

****** / TÌM HIỂU bắt đầu lalo.bat '-n lực lượng đã ký độ thập phân exift -nd: \ produc \ 00ymp * .jpg> fud' strfile một chuỗi trên mỗi dòng (dấu cách ok) findstr / G: "strfile" fud >> fum ********** kết thúc lalo.bat

sản xuất đầu ra

Tên tệp: 0104171345.jpg Ngày / Thời gian GPS: 2017: 01: 04 21: 45: 19Z Vị trí GPS: 46.9997367777778 -117.3392105 Tên tệp: 0104171355.jpg Ngày / Thời gian GPS: 2017: 01: 04 21: 55: 52Z Vị trí GPS : 46.99622725 -117.307495111111 Tên tệp: 0104171402.jpg Ngày / Thời gian GPS: 2017: 01: 04 22: 02: 02Z Vị trí GPS: 47.0075378333333 -117.284553527778 Tên tệp: 0104171404.jpg Ngày / 01: 2017 : 51Z Vị trí GPS: 47.0222473055556 -117.275527944444 Tên tệp: 0104171405.jpg Ngày / Thời gian GPS: 2017: 01: 04 22: 05: 40Z Vị trí GPS: 47.0269584444444 -117.269523611111

Tên tệp: 0112171921.jpg Tên tệp: 0112171921a.jpg Tên tệp: 0112171921b.jpg Tên tệp: 0120171623.jpg Tên tệp: 0120171623a.jpg Tên tệp: 0120171624.jpg

Tên tệp: 0120171626.jpg Ngày / Thời gian GPS: 2017: 01: 21 00: 26: 49Z Vị trí GPS: 48.7900199722222 -117.290061944444 Tên tệp: 0120171628.jpg Ngày / Thời gian GPS: 2017: 01: 21 00: 28Z : 48.7907943611111-117,292045583333

Tên tệp: 0122170942.jpg Tên tệp: 0122170942a.jpg Tên tệp: 0122170948.jpg Tên tệp: 0122170948a.jpg

Tên tệp: 0122170950.jpg Ngày / Thời gian GPS: 2017: 01: 22 17: 50: 12Z Vị trí GPS: 48.7828292777778 -117.287322972222 Tên tệp: 0122170950a.jpg Ngày / Thời gian GPS: 2017: 01: 22 17: 50: 16Z : 48.7828483333333 -117.287322972222 Tên tệp: 0122170950b.jpg Ngày / Thời gian GPS: 2017: 01: 22 17: 50: 38Z Vị trí GPS: 48.7828178333333 -117.28733825


0

Cảm ơn Jason vì công thức chuyển đổi thành thập phân và /programming/45136895/extracting-gps-numerical-values-from-byte-array-USE-powershell

function getGPS ($fullname) 
{
 'Fullname: ' + $fullname
 $imageProperties =New-Object -TypeName System.Drawing.Bitmap -ArgumentList $fullname
 if($imageProperties.PropertyItems|?{($_.id -eq 2) -or ($_.id -eq 4)}){
  [double]$LatDegrees = (([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 0)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 4)));
  [double]$LatMinutes = ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 8)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 12));
  [double]$LatSeconds = ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 16)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(2).Value, 20));
  [double]$LonDegrees = (([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 0)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 4)));
  [double]$LonMinutes = ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 8)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 12));
  [double]$LonSeconds = ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 16)) / ([System.BitConverter]::ToInt32( $imageProperties.GetPropertyItem(4).Value, 20));
  "Latitude: $LatDegrees;$LatMinutes;$LatSeconds"
  "Longitude: $LonDegrees;$LonMinutes;$LonSeconds"
  "DECLatitude: " + ([int]$LatDegrees +($LatMinutes/60) +($LatSeconds/60))
  "DECLongitude: " + ([int]$LonDegrees +($LonMinutes/60) +($LonSeconds/60))
}}

getGPS D: \ pics \ mypic.jpg

Tên đầy đủ: P: \ IMG_0014.JPG Vĩ độ: 42; 32,27; 0 Kinh độ: 82; 52,58; 0 DECLatitude: 42.5378333333333 DECLongitude: 82.8763333333333


0

Exiftool sẽ xuất tọa độ theo số thập phân có độ chính xác thấp nếu bạn sử dụng công tắc -n. Bạn có thể nhận được độ chính xác cao hơn với chuyển đổi -c và đưa ra số lượng chữ số mong muốn đằng sau số thập phân:

exiftool -c '%.6f' -GPSPosition filename.jpg

Hiển thị vị trí có 6 chữ số phía sau số thập phân, rất tốt cho việc tìm địa điểm trong vòng 5 inch.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.