摘 要:目前合成孔徑雷達干涉測量(Interferometric Synthetic Aperture Radar, InSAR)技術(shù)已經(jīng)廣泛在工程監(jiān)測、地質(zhì)災(zāi)害監(jiān)測等領(lǐng)域得到應(yīng)用。文章基于Visual LISP語言,開發(fā)了可以將海量InSAR監(jiān)測點數(shù)據(jù)批量導入至AutoCAD軟件的插件。該插件將InSAR成果數(shù)據(jù)文件進行關(guān)鍵信息提取,并實現(xiàn)了對成果數(shù)據(jù)中的坐標系統(tǒng)與工程設(shè)計常用的獨立坐標系統(tǒng)的轉(zhuǎn)換,將數(shù)值直接以數(shù)值文字的方式寫入對應(yīng)AutoCAD文件中,使監(jiān)測數(shù)據(jù)與目標位置精確匹配。經(jīng)實際工程數(shù)據(jù)導入應(yīng)用測試,該插件實現(xiàn)56萬條數(shù)據(jù)的導入僅需約90 s,極大降低了使用人員將監(jiān)測數(shù)據(jù)導入工程圖紙的工作量,提升了InSAR監(jiān)測數(shù)據(jù)在工程應(yīng)用上的效率。
關(guān)鍵詞:Visual LISP;二次開發(fā);數(shù)據(jù)導入;程序設(shè)計
中圖分類號:TP311 文獻標識碼:A 文章編號:2096-4706(2025)02-0145-05
Design and Application of the Plugin for Importing Satellite Radar Interferometry Data Based on Visual LISP
WANG Zhaobing1,2
(1.China Airport Planning and Design Institute Co., Ltd., Beijing 100029, China; 2.Observation and Research Base of Transport Industry of Airport Engineering Safety and Long-term Performance, Beijing 100029, China)
Abstract: Currently, Interferometric Synthetic Aperture Radar (InSAR) technology is widely used in fields such as engineering monitoring and geological disaster monitoring. Based on Visual LISP language, the paper develops a plugin that could import extensive data of InSAR monitoring points in batches into AutoCAD software. The plugin extracts the key information of InSAR achievement data files, and realizes the transformation of the coordinate system in the achievement data and the independent coordinate system commonly used in engineering design. It writes numerical values into the corresponding AutoCAD files as numerical text, ensuring precise matching between monitoring data and the target location. After the testing of importing real engineering data into application, the plugin realizes that imports 560 000 pieces of data in only about 90 seconds, significantly reducing the workload for users of importing monitoring data into engineering drawings and enhancing the efficiency of InSAR monitoring data in engineering application.
Keywords: Visual LISP; secondary development; data import; programming
DOI:10.19850/j.cnki.2096-4706.2025.02.027
0 引 言
InSAR技術(shù)得益于其全天候、大范文、低干擾等優(yōu)勢,已經(jīng)在工程建設(shè)、國土資源、城市規(guī)劃等行業(yè)大量應(yīng)用[1],但是其數(shù)據(jù)成果往往因監(jiān)測的范圍較大而包含數(shù)萬甚至數(shù)十萬個目標點,且需要使用專業(yè)軟件(如ArcGIS)軟件讀取、應(yīng)用。而目前工程領(lǐng)域內(nèi)從業(yè)人員普遍使用的AutoCAD軟件無法直接使用InSAR監(jiān)測數(shù)據(jù)成果[2],使之服務(wù)于工程設(shè)施的變形分布及發(fā)展規(guī)律開展評估工作??紤]到InSAR監(jiān)測結(jié)果可生成標準格式的數(shù)據(jù)文件[3],將其監(jiān)測點數(shù)據(jù)信息寫入AutoCAD圖紙中的過程實際上可以通過大量的重復(fù)性操作實現(xiàn)。因此,可以針對上述問題可以利用AutoCAD軟件二次開發(fā)功能,通過開發(fā)一個專門的插件實現(xiàn)將大量監(jiān)測點數(shù)據(jù)寫入圖紙文件中的目的,滿足監(jiān)測數(shù)據(jù)成果的應(yīng)用需求[4]。
本次數(shù)據(jù)導入插件開發(fā)使用的是Visual LISP,它是嵌入在AutoCAD中的一個完整的集成開發(fā)環(huán)境,是專門為AutoCAD軟件進行二次開發(fā)的工具[5]。Visual LISP可以充分調(diào)用AutoCAD軟件的圖形繪制能力,并且由于其表結(jié)構(gòu)語言的特點[6],可以實現(xiàn)對AutoCAD中圖形數(shù)據(jù)庫的直接訪問和操作,充分發(fā)揮參數(shù)化繪圖的優(yōu)勢,大大提升繪圖工作效率。
1 插件開發(fā)路線
通過Visual LISP將InSAR監(jiān)測數(shù)據(jù)導入AutoCAD軟件的核心目標是構(gòu)造數(shù)據(jù)在圖形空間中寫入圖元的語句(表)命令,而該命令需要被賦予指定將要寫入圖元的兩個關(guān)鍵屬性,即圖元的位置和內(nèi)容,其實現(xiàn)流程主要是文件導入后的信息拆分、重組,并將原坐標系轉(zhuǎn)換為圖紙中實際使用的目標坐標系,最終完成將監(jiān)測數(shù)據(jù)轉(zhuǎn)為寫入AutoCAD的圖元,其實現(xiàn)流程如圖1所示。
利用Visual LISP載入InSAR數(shù)據(jù)文件后,依次讀取數(shù)據(jù)文件中的測點信息[7],這些信息包含:監(jiān)測點編號、坐標x、坐標y、高程、速率、累計變形量等[8],這些信息將會以一個長字符串的形式返回給插件。這個字符串不能被直接用于構(gòu)造在AutoCAD軟件中生成該點監(jiān)測信息的命令,因此需要對該長字符串進行拆分、重組。由于每個測點生成的長字符串具有標準的排布規(guī)律,可構(gòu)建一個函數(shù)對該長字符串進行處理,將其中的坐標信息、監(jiān)測值提取后返回給插件主程序。
由于InSAR監(jiān)測獲取的數(shù)據(jù)通常采用坐標系與工程平面圖中的坐標系往往并不統(tǒng)一,需要進行平面坐標系的轉(zhuǎn)換,通??伤膮?shù)法進行處理以滿足工程需求。四參數(shù)的求解需要至少兩個在相互轉(zhuǎn)換的坐標系中的點對,利用其在原坐標系和目標坐標系下的坐標值,求解旋轉(zhuǎn)角度值、橫坐標偏移值、縱坐標偏移值、縮放比例四個參數(shù)。一般常采用最小二乘法求解,或直接利用軟件進行計算,此處不予贅述,通過四參數(shù)法進行坐標轉(zhuǎn)換式如下:
(1)
構(gòu)建一個坐標轉(zhuǎn)換函數(shù)將原坐標系下的x、y轉(zhuǎn)換為新坐標系下的x1、y1,并作為該條監(jiān)測點數(shù)據(jù)的當前位置信息,與之前提取出的累計變形值數(shù)據(jù)一同傳入主程序的數(shù)據(jù)寫入語句中,最終實現(xiàn)將該條監(jiān)測數(shù)據(jù)以文字的方式寫入圖形空間對應(yīng)位置[9]。重復(fù)執(zhí)行以上操作,待所有數(shù)據(jù)依次完成寫入后,即可完成數(shù)據(jù)導入。
2 程序編制與運行
2.1 數(shù)據(jù)載入和繪圖信息設(shè)置
讀取已經(jīng)保存好的標準格式InSAR數(shù)據(jù)文件,可將文件路徑、目標文件格式直接寫入代碼中,快速定位目標文件。同時對繪圖空間進行基礎(chǔ)設(shè)置,創(chuàng)建將要寫入的數(shù)據(jù)對象的圖層信息、字體信息。以下為主要代碼:
;設(shè)置目標文件的位置,格式為CSV
(setq fileph (getfiled \"選擇文件\" \"D:\\項目資料\\InSAR變形監(jiān)測\\\" \"csv\" 2))
(setq file (open fileph \"r\"))
;設(shè)置繪圖環(huán)境變量值
(setvar \"cmdecho\" 0)
(setvar \"osmode\" 0)
;創(chuàng)建數(shù)據(jù)寫入的新圖層
(command \"layer\" \"m\" \"InSAR監(jiān)測\" \"c\" 1 \"\" \"\")
;按圖紙比例設(shè)置需要的字體高度
(setq zg (getint \"請設(shè)置樁號字體高度\"))
(setq zg (itoa zg))
;設(shè)置將要入的監(jiān)測數(shù)據(jù)字體格式
(command \"style\" \"InSAR監(jiān)測數(shù)據(jù)\" \"黑體\" zg \"0.6\" \"0\" \"\" \"\" \"\")
2.2 數(shù)據(jù)信息讀取及處理
數(shù)據(jù)文件載入之后,程序?qū)⒅饤l讀取獲得每個監(jiān)測數(shù)據(jù)點的包含的信息,由于CSV文件每一行數(shù)據(jù)在讀取后將獲得一個包含坐標x、y以及變形值s及其他相關(guān)信息的長字符串,這個長字符串中各信息字段通過“’”字符進行分隔,因此需要設(shè)計一個專門對此長字符串進行處理的函數(shù),將需要的坐標和監(jiān)測值還原出來,其處理邏輯如圖2所示。
以下為該函數(shù)的主要代碼:
;獲取字符串的長度n
(setq n (strlen longstr))
(setq i 1)
(repeat n
;從字符串第一個字符開始依次取一個字符
(setq char (substr longstr i 1))
(if (/= char separator)
;如果當前取得字符串非分隔符,用于組成字符串info
(setq info (strcat info char))
;當取得字符為分隔符時將info 存入infolist列表中,并重置info為空
(setq infolist (cons info infolist))
(setq info \"\")
;將生成的infolist 中的元素順序調(diào)整并返回
(reverse infolist)
)
)
2.3 坐標轉(zhuǎn)換
參照式(1)構(gòu)建原坐標系與目標坐標系轉(zhuǎn)換的處理函數(shù),坐標轉(zhuǎn)換所需的四參數(shù)在函數(shù)內(nèi)進行定義,依次對每條監(jiān)測數(shù)據(jù)信息中提取的坐標進行轉(zhuǎn)換,并返回轉(zhuǎn)換后的坐標結(jié)果。需要注意的是在Visual LISP中如cos、sin等三角函數(shù)均使用弧度值進行計算,需要將求得的坐標系旋轉(zhuǎn)角度值轉(zhuǎn)換為弧度值之后,再輸入函數(shù)進行坐標關(guān)系轉(zhuǎn)換的運算。該部分主要代碼如下:
(defun transCoordinate (x y)
;定義當前轉(zhuǎn)換關(guān)系四參數(shù)(以下四參數(shù)僅為示意,非真實工程參數(shù))
;設(shè)置橫坐標偏移值、縱坐標偏移值、縮放系數(shù)
(setq dx 250000
dy -350000
k 1.000
)
;將角度值轉(zhuǎn)換為弧度值
(setq arc (/ (* 256000 3.14159265) (* 180 60 60)))
;將原坐標系下坐標轉(zhuǎn)換為目標坐標系坐標
(setq
;橫坐標轉(zhuǎn)換
x1 (+ (- (* (cos arc) k x) (* (sin arc) k y)) dx)
;縱坐標轉(zhuǎn)換
y1 (+ (+ (* (sin arc) k x) (* (cos arc) k y)) dy)
)
;將轉(zhuǎn)換后的數(shù)據(jù)點坐標以表形式返回
(list x1 y1)
)
2.4 監(jiān)測數(shù)據(jù)寫入
完成了對InSAR數(shù)據(jù)文件單個數(shù)據(jù)點信息的提取和處理以及數(shù)據(jù)的坐標轉(zhuǎn)換兩個關(guān)鍵函數(shù)的開發(fā)后,即可以完整的執(zhí)行數(shù)據(jù)文件的讀取、監(jiān)測點信息處理、坐標轉(zhuǎn)換、數(shù)據(jù)寫入、完成數(shù)據(jù)導入這一系列的任務(wù)。通過循環(huán)的方式,將每一條監(jiān)測數(shù)據(jù)寫入AutoCAD圖形空間中。以下為該部分主要代碼:
;依次讀取文件中監(jiān)測數(shù)據(jù)信息
(setq lstrdata (read-line file))
(while lstr
;利用字符串處理函數(shù)實現(xiàn)關(guān)鍵信息拆分提取
(setq serstr (extrastr lstr \" ’ \")
x (atof (car serstr))
y (atof (cadr serstrl))
val (caddr serstr)
)
;對坐標系進行轉(zhuǎn)換
(setq newcoord (transCoordinate x y))
(setq x1 (car newcoord)
y1 (cadr newcoord)
)
;切換對應(yīng)圖層
(command \"layer\" \"m\" \"InSAR監(jiān)測\" \"\")
;向圖形空間中對應(yīng)坐標位置寫入該監(jiān)測點信息
(command \"text\"
\"m\" (list x1 y1) \"0\" ms
)
(setq fdata (read-line file))
)
;關(guān)閉文件
(close file)
;恢復(fù)環(huán)境變量
(setvar \"osmode\" 16383)
(princ \"導入完畢\" )
3 工程應(yīng)用案例
北京大興國際機場是一座擁有4條跑道的國內(nèi)4F級國際樞紐機場,由于機場地處津冀平原地面沉降影響區(qū)域內(nèi),場區(qū)存在著長期性的地面沉降情況[10]。因此自機場通航以來,通過InSAR技術(shù)手段開展了持續(xù)的地面沉降觀察[11],由于機場用地面積達到27平方千米,分析后監(jiān)測數(shù)據(jù)成果達到約數(shù)十萬條,這些數(shù)據(jù)導入AutoCAD軟件后將便于工程技術(shù)人員更好地對機場中重要的基礎(chǔ)設(shè)施如跑道、滑行道、塔臺等進行變形監(jiān)測分析,精準的評估地面沉降對機場運行帶來的影響。
本次以機場飛行區(qū)跑滑系統(tǒng)區(qū)域監(jiān)測數(shù)據(jù)為應(yīng)用實例,將其共包含的約56萬條數(shù)據(jù)點導入機場平面圖中,便于后續(xù)對跑道變形情況的分析和評估。
本次數(shù)據(jù)導入實例操作流程如下:第一步,打開機場平面圖紙文件;第二步,加載本次開發(fā)的插件;第三步,通過鍵入插件啟動命令“PLDQ”;第四步,通過彈出的對話框選取準備好的數(shù)據(jù)文件,如圖3所示;第五步,等待程序讀取數(shù)據(jù)并將監(jiān)測結(jié)果在轉(zhuǎn)換后的坐標位置以單行文字的方式寫入圖形空間。
將文件導入AutoCAD軟件后,插件將自動執(zhí)行數(shù)據(jù)寫入過程,約90 s后所有數(shù)據(jù)點被完全寫入,軟件命令窗口彈出“導入完畢”提示語。本次執(zhí)行的跑滑系統(tǒng)部分數(shù)據(jù)寫入后效果如圖4所示,跑道邊線內(nèi)填充的圖元為對應(yīng)位置的變形測量值,取跑道端部位置放大,如圖5所示,可發(fā)現(xiàn),InSAR監(jiān)測所得的地面變形量均以數(shù)字的方式顯示在跑道對應(yīng)位置。
4 結(jié) 論
通過Visual LISP程序設(shè)計語言,可以對InSAR數(shù)據(jù)成果文件的關(guān)鍵要素提取及信息處理,實現(xiàn)巨量監(jiān)測點數(shù)據(jù)的批量導入AutoCAD軟件,同時內(nèi)置的坐標轉(zhuǎn)換函數(shù)解決了InSAR數(shù)據(jù)在不同坐標系下的位置信息轉(zhuǎn)換問題。插件目前僅支持標準格式的CSV文件的導入,后續(xù)可增加對于文件格式的判別,實現(xiàn)對不同格式數(shù)據(jù)的解析和導入,提升插件的通用性和使用效率。
參考文獻:
[1] 邵永恒.基于海量InSAR地質(zhì)監(jiān)測數(shù)據(jù)可視化平臺的設(shè)計與實現(xiàn) [D].沈陽:中國科學院大學(中國科學院沈陽計算技術(shù)研究所),2022.
[2] 周紅宇,陶曉學,李毓,等.基于Visual Lisp For AutoCAD的輸電線路選線與數(shù)據(jù)處理系統(tǒng) [J].地理空間信息,2023,21(2):108-112.
[3] 徐陽,王鵬程,王子健.LISP語言和Word的郵件合并功能在地籍調(diào)查中的應(yīng)用 [J].現(xiàn)代測繪,2023,46(3):49-52.
[4] 吳思蘊,溫立委,張漢春.LISP編程在管線探測工程制圖中的應(yīng)用 [J].現(xiàn)代信息科技,2023,7(14):134-136+141.
[5] 李學志.VisualLisp程序設(shè)計AutoCAD2010:第2版 [M].北京:清華大學出版社,2010.
[6] 陳偉康.Visual Lisp在面積標注中的應(yīng)用 [J].地理空間信息,2020,18(4):125-126+133+8.
[7] 吳凱偉,石瑋荃.基于Visual LISP的地鐵軌道綜合圖輔助設(shè)計程序開發(fā) [J].鐵道標準設(shè)計,2017,61(5):27-31.
[8] 吳冀,黃孝剛,肖術(shù)云,等.參數(shù)化繪制帷幕灌漿綜合剖面圖基于AutoCAD的Visual Lisp程序設(shè)計 [J].施工技術(shù),2020,49(S1):287-292.
[9] 劉娜.利用Python語言實現(xiàn)集中監(jiān)測CAD施工圖輔助設(shè)計 [J].鐵路通信信號工程技術(shù),2019,16(11):97-100.
[10] 張新偉,馬靜,侯祖行,等.北京大興國際機場及周邊交通干道形變時序InSAR監(jiān)測 [J].地球科學與環(huán)境學報,2023,45(1):131-142.
[11] 趙霞,馬新巖,余虔,等.高分辨率InSAR技術(shù)在北京大興國際機場形變監(jiān)測中的應(yīng)用 [J].自然資源遙感,2024,36(1):49-57.
作者簡介:王招冰(1993—),男,漢族,江西南昌人,工程師,碩士,研究方向:機場巖土工程設(shè)計。
收稿日期:2024-08-09