劉曉輝,李志剛,董紹環(huán)(青島市勘察測繪研究院,山東青島 266032)
基于ArcEngine的圖像自動定位顯示系統(tǒng)的開發(fā)
劉曉輝?,李志剛,董紹環(huán)
(青島市勘察測繪研究院,山東青島 266032)
摘 要:主要研究如何利用由移動設備拍攝照片的Exif信息,使用ArcEngine二次開發(fā)工具實現(xiàn)圖像在地圖中的自動標注和顯示。首先將野外采集的照片導入系統(tǒng),系統(tǒng)根據(jù)照片中鑲嵌的信息提取位置信息,將位置信息經過預處理得到符合坐標系要求的坐標信息,然后將照片和其對應的坐標信息導入數(shù)據(jù)庫中,系統(tǒng)會根據(jù)坐標將每個位置的照片數(shù)量用標簽的形式顯示出來,通過單擊標簽即可查看相應位置的照片。通過實驗驗證,本文所研究系統(tǒng)可以將圖像根據(jù)其概略拍攝位置標注在地圖中,并可以實時查看。
關鍵詞:AE;C#;Exif
隨著科學技術的發(fā)展,雖然測繪設備的精度越來越高,測繪效率也得到大大提高,但是目前測繪設備并不能適應所有條件,特別是當測繪環(huán)境比較復雜時,需要測量員親自到實地踏勘測量。當我們進行野外實地測量時,為了準確地記錄測量對象,通常需要手繪草圖,記錄測量點號及地物地形特征,當外界情況復雜時,繪制草圖會大大降低測繪效率,并且很可能出現(xiàn)草圖繪制錯誤。目前,許多移動設備如手機、相機、移動平板電腦等都已經配備GPS定位模塊,其定位精度可達5 m。如果利用移動設備對測繪對象進行拍照,在內業(yè)繪圖時根據(jù)照片的位置信息將照片展到拍照的相應位置,將會大大提高內業(yè)效率,降低內業(yè)出錯率。
本文針對實現(xiàn)圖像的自動存儲和顯示,提出了一種基于AE的圖像自動定位顯示系統(tǒng)。首先利用C#語言獲取照片信息并對照片信息進行預處理,然后將坐標信息和照片存入數(shù)據(jù)庫,最后利用AE將照片數(shù)量信息用標簽在電子地圖上顯示出來,實現(xiàn)通過單擊標簽查看相應位置照片的功能。
1.1Exif
Exif[1]是英文Exchangeable Image File(可交換圖像文件)的縮寫,最早由日本電子工業(yè)發(fā)展協(xié)會制訂,目前最新版本是2.21版。實際上Exif信息是鑲嵌在JPEG/ TIFF圖像文件內的一組拍攝參數(shù),包括拍攝時的快門、光圈、ISO、時間、焦距、白平衡等拍攝條件和相機品牌、型號以及全球定位系統(tǒng)(GPS)信息等。
1.2ArcEngine
ArcEngine[2]是基于ArcObjects搭建的應用,包括核心ArcObjects的功能,是對ArcObjects中的大部分接口、類等進行封裝所構成的嵌入式組件,可以在C++,.NET,Java等多種語言中進行開發(fā),具有靈活、簡潔、易用、可移植性強等優(yōu)點。
1.3C#
C#是ArcEngine的一種編程語言,“SDK for c#”是ArcEngine專門為使用C#開發(fā)提供的開發(fā)工具包。C #[3]編程語言是由微軟公司專門為.NET平臺設計的語言,擁有C、C++和Java的優(yōu)點,它完全支持類和面向對象編程,可以自動清理動態(tài)分配的內存,并可以完全訪問.NET基類庫。
2.1系統(tǒng)概述
外業(yè)測量時,可以使用手機等移動設備拍照,記錄下周圍的地形地物。內業(yè)作業(yè)時,通過讀取鑲嵌在照片中的Exif信息,獲取照片的經緯度等相關拍攝參數(shù)。將位置信息和照片自動入庫,并在圖上拍攝位置添加標簽,通過單擊標簽即可查看該位置的照片信息。
基于AE的圖像自動定位顯示系統(tǒng)的具體實現(xiàn)如下:
(1)外業(yè)拍照
當進行數(shù)據(jù)外業(yè)采集時,利用智能手機對關鍵和復雜地形地物點進行拍照,注意在拍照時確保已經打開手機的GPS定位功能。為了提高拍照位置的準確性,一定在地形地物的正上方拍攝,如果由于環(huán)境限制無法在正上方拍攝,記錄下偏離距離和方向,在后續(xù)操作中對坐標進行修正。
(2)讀取照片信息
利用C#編寫程序讀取照片的經緯度信息。
(3)坐標系轉換
由于(2)中從照片EXIF參數(shù)中讀取的是WGS84坐標系下的經緯度,必須通過坐標系轉換轉到國家坐標系或當?shù)刈鴺讼?才能使用。
(4)照片信息自動入庫
將照片和其經坐標轉換后的坐標信息導入數(shù)據(jù)庫。(5)照片信息自動標注
單擊“照片標注”功能,根據(jù)數(shù)據(jù)庫中的坐標在地圖上標注不同位置照片的數(shù)目,可以全圖標注,也可以只標注當前視圖區(qū)域。
(6)編寫照片瀏覽模塊
該模塊實現(xiàn)功能:單擊標注,彈出對應標注位置的照片瀏覽窗口,瀏覽該位置所有照片。
(7)照片位置微調
由于GPS衛(wèi)星被遮擋、多路徑效應等影響,有時會出現(xiàn)記錄的照片位置偏離實際拍照位置太遠的情況,這時可以通過拖動標注,對其位置進行微調,調整后的照片坐標信息在數(shù)據(jù)庫中會自動更新。
2.2系統(tǒng)關鍵技術
(1)讀取Exif信息
通過PropertyItem接口可以獲取照片的Exif信息, 用PropertyItem的屬性ID區(qū)分照片的不同參數(shù)信息, ID為0x0002代表該項為具體緯度信息,ID為0x0004代表該項為具體經度信息,讀取相應ID的Value即可獲取參數(shù)具體數(shù)值。Value的類型為byte[],通過讀取byte[0]—byte[7]獲得經緯度的“度”信息,讀取byte[8]-byte[15]獲得經緯度的“分”信息,讀取byte [16]-byte[23]獲得經緯度的“秒”信息。計算過程中還要根據(jù)ID為0x0001項的Value值區(qū)分南緯北緯,根據(jù)ID為0x0003項的Value值區(qū)分東經西經。
(2)坐標系轉換
由于用手機等移動設備得到的坐標信息通常是WGS-84坐標系下的經緯度,而外業(yè)測繪中獲得的測點坐標信息都采用國家坐標系或當?shù)刈鴺讼?。它們采用的橢球不相同,需要使用七參數(shù)法將經緯度信息轉換到國家坐標系或當?shù)刈鴺讼迪隆?/p>
(3)照片和照片信息入庫
系統(tǒng)采用的方法是將照片選擇的照片復制到指定路徑,并用mdb數(shù)據(jù)庫存儲照片坐標和路徑信息。
(4)標簽設計和標簽自動標注
系統(tǒng)中的標簽采用AE中的Callout和TextElement組合生成的Element,當單擊“自動標注”時,系統(tǒng)會統(tǒng)計不同坐標處照片數(shù)量并顯示在標簽中。
(5)圖片瀏覽模塊
單擊用Element制作的標簽,自動彈出圖片瀏覽窗口并將該處圖片顯示在窗口中,此處主要用到PictureBox控件。
(6)圖片位置微調
拖動標簽后,獲得構成標簽的Callout的Anchor-Point,并用AnchorPoint的X、Y坐標對數(shù)據(jù)庫中該照片的原有坐標信息進行自動更新。
本次實驗外業(yè)采集所采用的坐標系是某地城市坐標系,對某道路交口的8個城市市政設施檢修井井蓋用iPhone 4手機拍照,對其進行信息采集,同時用徠卡TSC3 GPS接收機在每個井蓋處進行準確測量,GPS測量數(shù)據(jù)是經CORS網實時修正過的觀測值。
3.1自動讀取圖片Exif信息
選取8張外業(yè)采集的井蓋照片,自動存入mdb庫的信息如下(為防泄密,表中經緯度的整度用X表示):
數(shù)據(jù)庫中照片信息 表1
3.2坐標自動轉換
本次實驗是將WGS-84坐標系下的經緯度轉到該地城市坐標系。利用GPS測量的坐標精度很高,誤差小于5 cm,可以在本次實驗中作為真值使用。經過坐標轉換后,利用手機采集照片的坐標和利用徠卡TSC3 GPS接收機采集的坐標之間較差如表1所示:
移動設備采集照片較差表(單位/ m) 表2
用手機采集的管線井蓋圖像位置和用GPS觀測測得的井蓋位置如圖1所示(圖中紅色為用手機拍攝的管點井蓋圖像位置,藍色為用徠卡TSC3 GPS接收機測量得到的管點井蓋位置):
圖1 管點井蓋分布圖
3.3照片和照片信息自動入庫
將照片轉換到當?shù)爻鞘凶鴺讼迪碌腦Y坐標自動導入數(shù)據(jù)庫,相應照片也被復制到指定位置。
3.4標簽自動標注
單擊“自動標注”按鈕,系統(tǒng)會根據(jù)每個位置的照片數(shù)量進行標注。如圖2所示:
圖2 圖片自動標注界面
3.5圖片瀏覽和位置微調
單擊“瀏覽圖片”按鈕后,單擊圖上相應標簽,圖像就會顯示出來,如圖3所示。
單擊“位置微調”,通過拖動標簽改變標簽在圖上的位置,相應圖片的坐標會在數(shù)據(jù)庫中自動更新為拖動后標簽的AnchorPoint的坐標。
利用常見移動設備采集測繪對象圖像信息,可以讓作業(yè)過程更加直觀。通過利用C#語言基于AE開發(fā)的圖像自動定位顯示系統(tǒng)將圖像采集點展繪于圖上,可以大大提高內業(yè)作業(yè)效率,提高內業(yè)數(shù)據(jù)正確率。本文提出的方法充分利用現(xiàn)有條件,提高作業(yè)效率,不失為一種高效的作業(yè)方式。當然,該系統(tǒng)還有待進一步完善,下一步將考慮如何提高照片采集的精度以及如何將照片按照照片采集的方向進行旋轉以更準確地還原觀測場景等,從而使系統(tǒng)更加完善。
參考文獻
[1] Digital Still Camera Image File Format Standard(Exif)[S].Version 2.1.JEIDA,1998.
[2] 韓鵬,王泉,王鵬等.地理信息系統(tǒng)開發(fā):ArcEngine方法[M].武漢:武漢大學出版社,2008.
[3] Christian Nagel,Bill Evjen.C#高級編程[M].北京:清華大學出版社,2010.
[4] 張豐,杜震洪,劉仁義.GIS程序設計教程—基于ArcGIS Engine的C#開發(fā)實例[M].杭州:浙江大學出版社, 2012.
[5] 李崇貴.ArcGIS Engine組件式開發(fā)及應用[M].北京:科學出版社,2012.
Image Automatic Locating and Display System Based on AE
Liu Xiaohui,Li Zhigang,Dong Shaohuan
(Qingdao Geotechnical Investigation and Survey Institute,Qingdao 266032,China)
Abstract:This paper mainly studies the using of the Exif information of pictures taken by mobile devices,and how to use ArcEngine secondly development tools to achieve image automatic annotation and display.Firstly,we should load the taken pictures to the system,the system will extract the location information based on the information embedded in the photo。After that,the location information will be transformed to the demanding coordinate system,and the system will load the pictures and transformed location information to the system.Lastly,the number of photos in different location will be shown in the map using the format of label,and the photos could didplay in the map by clicking the label.The results of experiments show the system could label the pictures in the map according to their location automatically,and the pictures could display according to the demand of users.
Key words:AE;C#;Exif
文章編號:1672-8262(2015)01-66-04中圖分類號:P208.1
文獻標識碼:A
收稿日期:?2014—11—28
作者簡介:劉曉輝(1987—),男,碩士,助理工程師,主要從事地理信息系統(tǒng)開發(fā)工作。
基金項目:青島市建設事業(yè)科技發(fā)展基金(JK2014-31)