MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
前言
沒(méi)有前言,創(chuàng)作不易,希望家人們點(diǎn)點(diǎn)贊,如有錯(cuò)誤評(píng)論留言,感謝支持!
文章目錄
- 前言
- 一、MATLAB批量讀取航攝相片的EXIF信息,并批量提取其GNSS經(jīng)緯度信息
- (1)前述:
- (2)代碼實(shí)現(xiàn)和結(jié)果:
- 二、地理經(jīng)緯度坐標(biāo)轉(zhuǎn)空間直角坐標(biāo)原理及公式
- (1) 轉(zhuǎn)換原理
- (2) 轉(zhuǎn)換公式
- 三、利用MATLAB批量轉(zhuǎn)換坐標(biāo)
- 四、根據(jù)外部工具驗(yàn)證其轉(zhuǎn)換精度
- (1)利用pix4D的航線報(bào)告與MATLAB轉(zhuǎn)換后繪制的航線比較
- (2)利用坐標(biāo)轉(zhuǎn)換COORD軟件轉(zhuǎn)換后與MATLAB轉(zhuǎn)換后的結(jié)果比較
一、MATLAB批量讀取航攝相片的EXIF信息,并批量提取其GNSS經(jīng)緯度信息
(1)前述:
所謂航攝相片的EXIF信息,就是 (可交換圖像文件格式)(英語(yǔ):Exchangeable image file format,官方簡(jiǎn)稱(chēng)Exif),是專(zhuān)門(mén)為數(shù)碼相機(jī)的照片設(shè)定的,可以記錄數(shù)碼照片的屬性信息和拍攝數(shù)據(jù)。下圖分別是航攝圖片的詳細(xì)屬性信息以及在matlab中讀取的結(jié)果。
| 圖1 圖片屬性信息 | 圖2 MATLAB顯示 |
GNSS經(jīng)緯度信息就是BLH(緯度,經(jīng)度,大地高),我們?cè)趫D片的詳細(xì)信息可以看見(jiàn),而在matlab中讀取之后字段名分別為BLH(GPSLatitude,GPSLongitude,GPSAltitude)
(2)代碼實(shí)現(xiàn)和結(jié)果:
1: 代碼思路: (批量的航攝相片===>matlab讀取每張相片EXIF信息===>讀取EXIF信息的GNSS經(jīng)緯度坐標(biāo)===>經(jīng)緯度的度分秒轉(zhuǎn)換為度===>導(dǎo)出保存為xls文件。)
2:程序清單:
(1) dir函數(shù)----格式:a=dir(‘filename’ , ‘*.txt / *.jpg / *.tiff’ ) 其表示將盤(pán)定位到你存放文件的文件里面,會(huì)列舉出你指定問(wèn)filename路徑下的固定格式的文件,我下面的代碼是由于我將相片文件放在和程序運(yùn)行保存的文件夾里面,所以沒(méi)有fliename
(2) imfinfo函數(shù)----格式:a=imfinfo(‘filename’) 其用于讀取圖片的文件信息,相同用法的還有exifread函數(shù)
(3) xlswrite函數(shù)----格式:xlswrite(’ filename+名字.xls ’ , 變量名) 用于將變量里面的內(nèi)容保存為xls表格輸出
我們將程序提取保存后的經(jīng)緯度的表格打開(kāi),可以看見(jiàn)明顯的BLH格式。
二、地理經(jīng)緯度坐標(biāo)轉(zhuǎn)空間直角坐標(biāo)原理及公式
(1) 轉(zhuǎn)換原理
我國(guó)的參心坐標(biāo)系可以分為參心大地坐標(biāo)系和參心空間直角坐標(biāo)系;參心大地坐標(biāo)系的坐標(biāo)元素是BLH(也就是我們常見(jiàn)的經(jīng)緯度坐標(biāo))而參心空間直角坐標(biāo)系的坐標(biāo)元素是XYZ(注意不是笛卡爾坐標(biāo)系,xy的方向是反的),他們的原點(diǎn)都是參考橢球的原點(diǎn)。
| 圖1 參心大地坐標(biāo)系 | 圖2 參心空間直角坐標(biāo)系 |
而其轉(zhuǎn)換原理就是將兩個(gè)坐標(biāo)系上的同名點(diǎn)投影到點(diǎn)所在的子午平面上,建立對(duì)應(yīng)的數(shù)學(xué)關(guān)系,進(jìn)行轉(zhuǎn)換。
(2) 轉(zhuǎn)換公式
我們?cè)O(shè)A點(diǎn)的大地坐標(biāo)(B,L,H)以及對(duì)應(yīng)的空間直角坐標(biāo)(X,Y,Z)以及下面的一系列參數(shù):
橢球基準(zhǔn):西安80坐標(biāo)系
參考橢球長(zhǎng)半軸:a=6378140±5(m)
參考橢球短半軸:b=6356755.2882(m)
過(guò)A點(diǎn)的卯酉圈曲率半徑:
參考橢球的第二偏心率:
公式:
三、利用MATLAB批量轉(zhuǎn)換坐標(biāo)
2:程序清單:
(1) importdata函數(shù)—格式:a=imortdata(‘filename’) 用于讀取表格以及文本格式文件
(2) format long g:用于關(guān)閉數(shù)據(jù)科學(xué)計(jì)數(shù)法顯示
四、根據(jù)外部工具驗(yàn)證其轉(zhuǎn)換精度
根據(jù)上述轉(zhuǎn)換后的坐標(biāo)數(shù)據(jù),繪制其這一組航攝相片的航線圖
plot(XX,YY,'--gs',...'LineWidth',2,...'MarkerSize',3,...'MarkerEdgeColor','r',...'MarkerFaceColor',[1,0.5,0.5]); xlim([-1517450 -1517150]); ylim([5268200 5268340]); xlabel('Y',"Color",'r'); ylabel('X',"Color",'r'); title('該航攝相片組的航線','color','r'); grid on;(1)利用pix4D的航線報(bào)告與MATLAB轉(zhuǎn)換后繪制的航線比較
需要注意的是我在pix4D中選用的WGS 84 UTM 48N的平面投影,是經(jīng)緯度與平面坐標(biāo)之間的轉(zhuǎn)換
而我計(jì)算的經(jīng)緯度與空間直角坐標(biāo)之間的轉(zhuǎn)換,所以航線會(huì)有差別,這里只為了做參考。
| 圖1 MATLAB繪制的航線 | 圖2 pix4D質(zhì)量報(bào)告的航線 |
(2)利用坐標(biāo)轉(zhuǎn)換COORD軟件轉(zhuǎn)換后與MATLAB轉(zhuǎn)換后的結(jié)果比較
我們抽取第一張相片的經(jīng)緯度利用坐標(biāo)轉(zhuǎn)換軟件轉(zhuǎn)換后與matlab轉(zhuǎn)換后的結(jié)果比較,轉(zhuǎn)換精度還可以,至于毫米級(jí)之后的精度,是因?yàn)槲靼?0橢球參數(shù)長(zhǎng)半軸a=6378140±5(m),我直接省略了±5,所以各位可以自行選用。
| 圖1 COORD軟件 | 圖2 MATLAB |
總結(jié)
以上是生活随笔為你收集整理的MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IC设计中时钟偏斜对延时的影响
- 下一篇: 从入门到不放弃:多浏览器的自动化测试(1