![GPS 정보는 RAW 파일에 어떻게 저장되나요?](https://rvso.com/image/1395398/GPS%20%EC%A0%95%EB%B3%B4%EB%8A%94%20RAW%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%80%EC%9E%A5%EB%90%98%EB%82%98%EC%9A%94%3F.png)
LibRAW 라이브러리를 사용하여 Nikon RAW 파일을 구문 분석하려고 합니다. 라이브러리는 GPS 데이터의 32바이트 정수 배열을 제공합니다. 이 32 x int 배열을 해석하는 방법을 설명하는 문서를 찾을 수 없습니다.
다음은 제가 추출한 GPS 데이터의 예입니다.
GPS:32
GPS:1
GPS:112393
GPS:10000
GPS:0
GPS:1
GPS:104
GPS:1
GPS:253126
GPS:10000
GPS:0
GPS:1
GPS:18
GPS:1
GPS:35
GPS:1
GPS:4800
GPS:100
GPS:1204
GPS:1
GPS:538976288
GPS:538976288
GPS:32
GPS:875638834
GPS:976302138
GPS:13361
GPS:0
GPS:0
GPS:0
GPS:78
GPS:87
GPS:0
답변1
unsigned int [32]
음... for 에 대한 문서를 찾을 수 없습니다 gpsdata
.
코드 조각을 찾았습니다여기LibRAW 소스에서.
pars_gps를 보세요. 이 코드는 Exif 정보를 gpsdata[32]
배열로 구문 분석합니다.
#define FORC(cnt) for (c=0; c < cnt; c++)
...
void CLASS parse_gps (int base)
{
unsigned entries, tag, type, len, save, c;
entries = get2();
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
switch (tag) {
case 1: case 3: case 5:
gpsdata[29+tag/2] = getc(ifp); break;
case 2: case 4: case 7:
FORC(6) gpsdata[tag/3*6+c] = get4(); break;
case 6:
FORC(2) gpsdata[18+c] = get4(); break;
case 18: case 29:
fgets ((char *) (gpsdata+14+tag/3), MIN(len,12), ifp);
}
fseek (ifp, save, SEEK_SET);
}
}
C++ 지식이 부족하다는 점을 용서해 주세요. 하지만 다음의 도움을 받아이 소스내가 그걸 찾았어
GPSLatitudeRef = gpsdata[29+1/2] (Exif tag 0x0001) = [29] 1 char
GPSLongitudeRef = gpsdata[29+3/2] (Exif tag 0x0003) = [30] 1 char
GPSAltitudeRef = gpsdata[29+5/2] (Exif tag 0x0005) = [31] 1 char
GPSLatitude = gpsdata[2/3*6+c] (Exif tag 0x0002) = [ 0] 6 int
GPSLongitude = gpsdata[4/3*6+c] (Exif tag 0x0004) = [ 6] 6 int
GPSTimeStamp = gpsdata[7/3*6+c] (Exif tag 0x0007) = [12] 6 int
GPSAltitude = gpsdata[18+c] (Exif tag 0x0006) = [18] 2 int
GPSMapDatum = gpsdata+14+18/3 (Exif tag 0x0012) = [20] 3 int
GPSDateStamp = gpsdata+14+29/3 (Exif tag 0x001d) = [23] 3 int
귀하의 경우 이는 다음과 같이 번역됩니다.
00 GPS:32 GPSLatitude #1
01 GPS:1 #2
02 GPS:112393 #3
03 GPS:10000 #4
04 GPS:0 #5
05 GPS:1 #6
06 GPS:104 GPSLongitude #1
07 GPS:1 #2
08 GPS:253126 #3
09 GPS:10000 #4
10 GPS:0 #5
11 GPS:1 #6
12 GPS:18 GPSTimeStamp #1
13 GPS:1 #2
14 GPS:35 #3
15 GPS:1 #4
16 GPS:4800 #5
17 GPS:100 #6
18 GPS:1204 GPSAltitude #1
19 GPS:1 #2
20 GPS:538976288 GPSMapDatum #1
21 GPS:538976288 #2
22 GPS:32 #3
23 GPS:875638834 GPSDateStamp #1
24 GPS:976302138 #2
25 GPS:13361 #3
26 GPS:0
27 GPS:0
28 GPS:0
29 GPS:78 N GPSLatitudeRef
30 GPS:87 W GPSLongitudeRef
31 GPS:0 ? GPSAltitudeRef
이것은 소스 코드를 약간 파헤쳐 수행한 것이므로 실수를 용서하십시오...
이것이 당신에게 조금 더 도움이 되기를 바랍니다.