張 龍
(甘肅省地圖院,甘肅 蘭州 730000)
像控點測量是指根據(jù)像片上內(nèi)業(yè)的布點方案,在實地根據(jù)影像的灰度和形狀找到并確定像控點的位置,測量并記錄該點平面坐標(biāo)及其高程。
在經(jīng)濟(jì)飛速發(fā)展的今天,航測數(shù)字化成圖已成為我國城市測繪的一種主要手段,而隨著航空攝影測量在各個測繪應(yīng)用領(lǐng)域的普及,關(guān)于影像像控點的測量任務(wù)在各生產(chǎn)單位也日趨增多。像控點之記成果作為影像處理所需的重要參考資料,其內(nèi)容的準(zhǔn)確性及制作效率直接影響到后續(xù)生產(chǎn)進(jìn)度,空三轉(zhuǎn)刺像控點的精度、效率,繼而影響到測繪4D產(chǎn)品的生產(chǎn)精度和效率。目前不少單位在外業(yè)像控點測量時,仍舊是由作業(yè)人員拿著紙質(zhì)相片到野外根據(jù)設(shè)計的位置選點、測量,然后在相片上刺點,并在相片反面繪制點位略圖和點位說明。這樣的工作模式不僅會增加成本,還會使影像細(xì)節(jié)常常難以辨認(rèn),影響刺點精度,甚至導(dǎo)致返工。在接下來的成果整理時,由于點之記的內(nèi)容屬性眾多,加之在測繪項目中所需像控點數(shù)量較多,人工完成點之記成果文件的制作,耗時較長且容易出錯[1-4]。
針對上面問題,本文通過引入個人數(shù)字助理終端(Personal Digital Assistant,PDA)解決像控點導(dǎo)航和外業(yè)刺點問題,再引入Word類庫通過C#語言編程開發(fā)了點之記自動生成的程序,能夠?qū)⑽淖峙c圖片等對象自動化寫入點之記模板并批量輸出,大大提高了工作效率和準(zhǔn)確率。
本文介紹的方法設(shè)計流程圖如圖1所示,設(shè)計思路總共分為三個階段。
圖 1 設(shè)計流程圖
利用已有資料如像控點成果或者DLG、DOM通過影像匹配技術(shù)或者光速法平差技術(shù)將航攝區(qū)影像納入坐標(biāo)系中。這一過程要盡可能的保證幾何精度,以便提高外業(yè)使用PDA導(dǎo)航找點的效率。然后在該影像上規(guī)劃刺點區(qū)域并命名,刺點區(qū)域應(yīng)合理分布整個測區(qū),如圖2圖中綠色區(qū)域所示。最后將影像和刺點區(qū)域?qū)隤DA外業(yè)調(diào)繪軟件中,如圖3所示。
利用PDA外業(yè)調(diào)繪軟件的導(dǎo)航定位和影像自由縮放功能,快速準(zhǔn)確地找到預(yù)選刺點區(qū)域,確定好點位后便可架設(shè)儀器施測,在PDA上將該點的實際位置準(zhǔn)確地刺在相對應(yīng)的影像位置上,并將其記錄在外業(yè)調(diào)繪軟件中預(yù)先建立好的實測點SHP圖層,同時將點號、刺點者、作業(yè)日期、檢查者、所在地、點位描述等屬性信息填寫到屬性表中,可按照如表1所示的格式記錄。
圖 2 預(yù)處理影像規(guī)劃刺點區(qū)域
圖 3 PDA
表 1 點位文件屬性表
圖4為像控點之記快速制作工具的主界面,下面著重介紹開發(fā)環(huán)境和點之記生成要點。
圖 4 像控點之記快速制作工具界面
1.3.1 開發(fā)環(huán)境
采用C#語言,在VS2010平臺上添加Microsoft.Office.Interop.Word和Microsoft.Office.Interop.Excel的引用和ArcEngine10.1類庫。
1.3.2 點之記生成
點之記文件的生成主要有以下幾個關(guān)鍵點:
(1)以模板word為基礎(chǔ),創(chuàng)建點之記文檔
以模板文件為基準(zhǔn),創(chuàng)建word文檔,其主要實現(xiàn)方式是對_Document類的操作,其個數(shù)要與像控點個數(shù)一致。關(guān)鍵代碼如下:
//oFileName為模板word路徑,打開點之記word模板,保證格式一致。
oDoc = oWord.Documents.Open(ref oFileName, ref oMissing, ref oReadOnly, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing,ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//獲取模板word對象
word.Table nowTable = oDoc.Tables[1];
//獲取模板word文檔X行Y列的單元格的值:nowTable.Cell(X,Y).Range.Text
打開模板后,可以用程序?qū)懭雮€像控點的屬性信息和點位影像,保存成與點名一致的word文件即可。關(guān)鍵代碼如下:
//每個像控點填完信息后批量保存。
Object saveChanges=word.WdSaveOptions.wdPromptToSaveChanges;
oWord.ActiveDocument.SaveAs(ref odocpath,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing);
oWord.ActiveDocument.Close(ref saveChanges, ref oMissing, ref oMissing);
(2)采用ArcEngine類庫裁切點位影像
需要外業(yè)PDA中記錄點位的SHP文件,可將影像底圖按1:500比例尺裁切作為點位略圖,按1:1 500比例尺裁切作為概略點位影像,這里的影像是PDA中的影像底圖。關(guān)鍵代碼如下:
//獲取指定比例尺的影像分辨率。
pActiveView.FocusMap.MapScale = double.Parse(comboBoxScale.Text);
int pResolution = (int)pActiveView.ScreenDisplay.DisplayTransformation.Resolution;
private void ExportMapToImage(IActiveView pView, tagRECT ptagRECT, IEnvelope pEnv, string path, int Resolution)
{IExport pExporter = new ExportPNGClass();//裁切影像的主要對象
IEnvelope pEnvelope = new EnvelopeClass();
pEnvelope.PutCoords(ptagRECT.left, ptagRECT.bottom, ptagRECT.right, ptagRECT.top);
ITrackCancel pTrackCancel = new CancelTrackerClass();
IExportImage pExportType = pExporter as IExportImage;
pExportType.ImageType = esriExportImageType.esriExportImageTypeTrueColor;
pExporter.Resolution = Resolution;
pExporter.ExportFileName = path;
pExporter.PixelBounds = pEnvelope;//根據(jù)分辨率、長和寬計算出的待裁切區(qū)域的空間范圍。
//裁切影像,并輸出到指定的路徑中。
pView.Output(pExporter.StartExporting(),Resolution, ref ptagRECT, pEnv, pTrackCancel);
pExporter.FinishExporting();pExporter.Cleanup();}
(3)屬性信息讀寫
ArcEngine類庫讀取點位SHP文件屬性表中的點名和點之記描述;Excel類庫讀取像控點解算XLS文件中外業(yè)測量的控制點解算出的東坐標(biāo)、北坐標(biāo)和正常高。兩者文件中記錄的點名必須一一對應(yīng)。關(guān)鍵代碼如下:
將雙創(chuàng)教育與專業(yè)教育有機(jī)融合,全過程滲透,培養(yǎng)學(xué)生的創(chuàng)造性思維,提升學(xué)生的開拓進(jìn)取能力和鍥而不舍的態(tài)度,避免雙創(chuàng)教育和專業(yè)教育的相對獨立及脫節(jié)問題,這才是雙創(chuàng)教育的根本目的。
//oExcelName為像控點Excel解算文件路徑,打開它獲取每個像控點結(jié)算后的空間坐標(biāo)。
wb=app.Workbooks.Open(oExcelName,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,
Nothing,Nothing,Nothing);
//獲取Excel對象
excel.Worksheet s=(excel.Worksheet)wb.Worksheets[1];
//獲取Excel文件中某一單元格的值(X為Excel表格中的行號,Y為Excel表格中的列號):((excel.Range)s.Cells["X", "Y"]).Text
//讀取SHP文件
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass(pFileName);
//讀取SHP文件字段值。
string pvalue = pFeat.get_Value(indexv).ToString();
(4)插入圖片
Word文檔中存儲的圖片包括Shape和Inlineshapes兩種,本文中使用的是Inlineshapes。嵌入文本中的圖片可以在table對象中的Range的Inlineshapes集合中獲取。圖片名稱應(yīng)與點名保持一致。
//圖片插入第X行第Y列
newTable.Cell(X,Y).Select();
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = WordDoc.Application.Selection.Range;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(ImagePath , ref LinkToFile, ref SaveWithDocument, ref Anchor);
(5)內(nèi)存處理
在處理過程中發(fā)現(xiàn),雖然程序已經(jīng)關(guān)閉了Word和Excel對象,但其對應(yīng)的后臺進(jìn)程仍在運行,隨著數(shù)據(jù)處理數(shù)量的增加,這些進(jìn)程越來越多,占用了大量的內(nèi)存,計算機(jī)反應(yīng)速度越來越慢,會出現(xiàn)黑屏現(xiàn)象。經(jīng)研究,需增加關(guān)閉Word和Excel后臺進(jìn)程的功能。關(guān)鍵代碼如下:
//關(guān)閉Word后臺進(jìn)程
Process myProcess = new Process();Process[]wordProcess = Process.GetProcessesByName("WINWORD");
Try {foreach (Process pro in wordProcess)
{IntPtr ip = pro.MainWindowHandle;
string str = pro.MainWindowTitle;
if(string.IsNullOrEmpty(str)) {pro.Kill();}}}
//關(guān)閉Excel后臺進(jìn)程
private void KillOffice(excel.Application pp)
{IntPtr t = new IntPtr(pp.Hwnd);int k = 0;
GetWindowThreadProcessId(t, out k);Process p = Process.GetProcessById(k);p.Kill();}
以點之記模板文件為基準(zhǔn),通過以上五步完成對點之記成果文件的制作,如表2所示。
表2點之記模板
選取甘南藏族自治州合作市縣1:1 000基礎(chǔ)測繪項目作為試驗區(qū)域,對比分析使用該工具與傳統(tǒng)方法在制作無人機(jī)像控點之記成果上的優(yōu)劣性。
測區(qū)位于甘南高原的合作市區(qū)境內(nèi),群山環(huán)繞,平均海拔2 700 m以上。項目采用無人機(jī)航攝,設(shè)計地面分辨率0.1 m,航攝面積大約30 km2,共有24條航線,1 926張航片。為了達(dá)到生產(chǎn)要求,野外平均每隔3條基線布設(shè)一個像控點,共布設(shè)了478個像控點。
表3為兩種方法制作相同數(shù)量點之記成果所使用的時間和錯誤率統(tǒng)計情況??梢钥闯觯合啾葌鹘y(tǒng)方法,使用該工具后制作相同數(shù)量點之記成果時花費的時間減少了約90%,生產(chǎn)速度提高的效果顯著;準(zhǔn)確率能達(dá)到100%,極大提高了控制成果的可靠性。
表 3 成果制作時間和錯誤率統(tǒng)計表
本文提出了一種全新的點之記快速制作的方法,既有前期的規(guī)劃設(shè)計要求,又引入了PDA輔助外業(yè)測量,后期數(shù)據(jù)整理時,又開發(fā)了基于Word文檔自動化操作的處理程序,能夠?qū)崿F(xiàn)點之記成果的快速準(zhǔn)確高效制作。通過多種測量項目實踐證明,應(yīng)用該工具之后,點之記成果的制作效率大大提高,能在減輕數(shù)據(jù)處理人員工作量的同時,提高了數(shù)據(jù)成果的準(zhǔn)確率,并且大大減少該環(huán)節(jié)時間成本的投入,完全達(dá)到了提質(zhì)增效的目的,獲得了比較好的效果,可以在基礎(chǔ)測繪、國情普查和三調(diào)等各種像控點數(shù)據(jù)采集項目中推廣應(yīng)用。