基于VisualLISP的卫星雷达干涉测量数据导入插件的设计及应用

known 发布于 2025-08-26 阅读(301)

摘 要:目前合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术已经广泛在工程监测、地质灾害监测等领域得到应用。文章基于Visual LISP语言,开发了可以将海量InSAR监测点数据批量导入至AutoCAD软件的插件。该插件将InSAR成果数据文件进行关键信息提取,并实现了对成果数据中的坐标系统与工程设计常用的独立坐标系统的转换,将数值直接以数值文字的方式写入对应AutoCAD文件中,使监测数据与目标位置精确匹配。经实际工程数据导入应用测试,该插件实现56万条数据的导入仅需约90 s,极大降低了使用人员将监测数据导入工程图纸的工作量,提升了InSAR监测数据在工程应用上的效率。

关键词:Visual LISP;二次开发;数据导入;程序设计

中图分类号: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技术得益于其全天候、大范文、低干扰等优势,已经在工程建设、国土资源、城市规划等行业大量应用[1],但是其数据成果往往因监测的范围较大而包含数万甚至数十万个目标点,且需要使用专业软件(如ArcGIS)软件读取、应用。而目前工程领域内从业人员普遍使用的AutoCAD软件无法直接使用InSAR监测数据成果[2],使之服务于工程设施的变形分布及发展规律开展评估工作。考虑到InSAR监测结果可生成标准格式的数据文件[3],将其监测点数据信息写入AutoCAD图纸中的过程实际上可以通过大量的重复性操作实现。因此,可以针对上述问题可以利用AutoCAD软件二次开发功能,通过开发一个专门的插件实现将大量监测点数据写入图纸文件中的目的,满足监测数据成果的应用需求[4]。

本次数据导入插件开发使用的是Visual LISP,它是嵌入在AutoCAD中的一个完整的集成开发环境,是专门为AutoCAD软件进行二次开发的工具[5]。Visual LISP可以充分调用AutoCAD软件的图形绘制能力,并且由于其表结构语言的特点[6],可以实现对AutoCAD中图形数据库的直接访问和操作,充分发挥参数化绘图的优势,大大提升绘图工作效率。

1 插件开发路线

通过Visual LISP将InSAR监测数据导入AutoCAD软件的核心目标是构造数据在图形空间中写入图元的语句(表)命令,而该命令需要被赋予指定将要写入图元的两个关键属性,即图元的位置和内容,其实现流程主要是文件导入后的信息拆分、重组,并将原坐标系转换为图纸中实际使用的目标坐标系,最终完成将监测数据转为写入AutoCAD的图元,其实现流程如图1所示。

利用Visual LISP载入InSAR数据文件后,依次读取数据文件中的测点信息[7],这些信息包含:监测点编号、坐标x、坐标y、高程、速率、累计变形量等[8],这些信息将会以一个长字符串的形式返回给插件。这个字符串不能被直接用于构造在AutoCAD软件中生成该点监测信息的命令,因此需要对该长字符串进行拆分、重组。由于每个测点生成的长字符串具有标准的排布规律,可构建一个函数对该长字符串进行处理,将其中的坐标信息、监测值提取后返回给插件主程序。

由于InSAR监测获取的数据通常采用坐标系与工程平面图中的坐标系往往并不统一,需要进行平面坐标系的转换,通常可四参数法进行处理以满足工程需求。四参数的求解需要至少两个在相互转换的坐标系中的点对,利用其在原坐标系和目标坐标系下的坐标值,求解旋转角度值、横坐标偏移值、纵坐标偏移值、缩放比例四个参数。一般常采用最小二乘法求解,或直接利用软件进行计算,此处不予赘述,通过四参数法进行坐标转换式如下:

(1)

构建一个坐标转换函数将原坐标系下的x、y转换为新坐标系下的x1、y1,并作为该条监测点数据的当前位置信息,与之前提取出的累计变形值数据一同传入主程序的数据写入语句中,最终实现将该条监测数据以文字的方式写入图形空间对应位置[9]。重复执行以上操作,待所有数据依次完成写入后,即可完成数据导入。

2 程序编制与运行

2.1 数据载入和绘图信息设置

读取已经保存好的标准格式InSAR数据文件,可将文件路径、目标文件格式直接写入代码中,快速定位目标文件。同时对绘图空间进行基础设置,创建将要写入的数据对象的图层信息、字体信息。以下为主要代码:

;设置目标文件的位置,格式为CSV

(setq fileph (getfiled \"选择文件\" \"D:\\项目资料\\InSAR变形监测\\\" \"csv\" 2))

(setq file (open fileph \"r\"))

;设置绘图环境变量值

(setvar \"cmdecho\" 0)

(setvar \"osmode\" 0)

;创建数据写入的新图层

(command \"layer\" \"m\" \"InSAR监测\" \"c\" 1 \"\" \"\")

;按图纸比例设置需要的字体高度

(setq zg (getint \"请设置桩号字体高度\"))

(setq zg (itoa zg))

;设置将要入的监测数据字体格式

(command \"style\" \"InSAR监测数据\" \"黑体\" zg \"0.6\" \"0\" \"\" \"\" \"\")

2.2 数据信息读取及处理

数据文件载入之后,程序将逐条读取获得每个监测数据点的包含的信息,由于CSV文件每一行数据在读取后将获得一个包含坐标x、y以及变形值s及其他相关信息的长字符串,这个长字符串中各信息字段通过“”字符进行分隔,因此需要设计一个专门对此长字符串进行处理的函数,将需要的坐标和监测值还原出来,其处理逻辑如图2所示。

以下为该函数的主要代码:

;获取字符串的长度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 中的元素顺序调整并返回

(reverse infolist)

2.3 坐标转换

参照式(1)构建原坐标系与目标坐标系转换的处理函数,坐标转换所需的四参数在函数内进行定义,依次对每条监测数据信息中提取的坐标进行转换,并返回转换后的坐标结果。需要注意的是在Visual LISP中如cos、sin等三角函数均使用弧度值进行计算,需要将求得的坐标系旋转角度值转换为弧度值之后,再输入函数进行坐标关系转换的运算。该部分主要代码如下:

(defun transCoordinate (x y)

;定义当前转换关系四参数(以下四参数仅为示意,非真实工程参数)

;设置横坐标偏移值、纵坐标偏移值、缩放系数

(setq dx 250000

dy -350000

k 1.000

;将角度值转换为弧度值

(setq arc (/ (* 256000 3.14159265) (* 180 60 60)))

;将原坐标系下坐标转换为目标坐标系坐标

(setq

;横坐标转换

x1 (+ (- (* (cos arc) k x) (* (sin arc) k y)) dx)

;纵坐标转换

y1 (+ (+ (* (sin arc) k x) (* (cos arc) k y)) dy)

;将转换后的数据点坐标以表形式返回

(list x1 y1)

2.4 监测数据写入

完成了对InSAR数据文件单个数据点信息的提取和处理以及数据的坐标转换两个关键函数的开发后,即可以完整的执行数据文件的读取、监测点信息处理、坐标转换、数据写入、完成数据导入这一系列的任务。通过循环的方式,将每一条监测数据写入AutoCAD图形空间中。以下为该部分主要代码:

;依次读取文件中监测数据信息

(setq lstrdata (read-line file))

(while lstr

;利用字符串处理函数实现关键信息拆分提取

(setq serstr (extrastr lstr \" \")

x (atof (car serstr))

y (atof (cadr serstrl))

val (caddr serstr)

;对坐标系进行转换

(setq newcoord (transCoordinate x y))

(setq x1 (car newcoord)

y1 (cadr newcoord)

;切换对应图层

(command \"layer\" \"m\" \"InSAR监测\" \"\")

;向图形空间中对应坐标位置写入该监测点信息

(command \"text\"

\"m\" (list x1 y1) \"0\" ms

(setq fdata (read-line file))

;关闭文件

(close file)

;恢复环境变量

(setvar \"osmode\" 16383)

(princ \"导入完毕\" )

3 工程应用案例

北京大兴国际机场是一座拥有4条跑道的国内4F级国际枢纽机场,由于机场地处津冀平原地面沉降影响区域内,场区存在着长期性的地面沉降情况[10]。因此自机场通航以来,通过InSAR技术手段开展了持续的地面沉降观察[11],由于机场用地面积达到27平方千米,分析后监测数据成果达到约数十万条,这些数据导入AutoCAD软件后将便于工程技术人员更好地对机场中重要的基础设施如跑道、滑行道、塔台等进行变形监测分析,精准的评估地面沉降对机场运行带来的影响。

本次以机场飞行区跑滑系统区域监测数据为应用实例,将其共包含的约56万条数据点导入机场平面图中,便于后续对跑道变形情况的分析和评估。

本次数据导入实例操作流程如下:第一步,打开机场平面图纸文件;第二步,加载本次开发的插件;第三步,通过键入插件启动命令“PLDQ”;第四步,通过弹出的对话框选取准备好的数据文件,如图3所示;第五步,等待程序读取数据并将监测结果在转换后的坐标位置以单行文字的方式写入图形空间。

将文件导入AutoCAD软件后,插件将自动执行数据写入过程,约90 s后所有数据点被完全写入,软件命令窗口弹出“导入完毕”提示语。本次执行的跑滑系统部分数据写入后效果如图4所示,跑道边线内填充的图元为对应位置的变形测量值,取跑道端部位置放大,如图5所示,可发现,InSAR监测所得的地面变形量均以数字的方式显示在跑道对应位置。

4 结 论

通过Visual LISP程序设计语言,可以对InSAR数据成果文件的关键要素提取及信息处理,实现巨量监测点数据的批量导入AutoCAD软件,同时内置的坐标转换函数解决了InSAR数据在不同坐标系下的位置信息转换问题。插件目前仅支持标准格式的CSV文件的导入,后续可增加对于文件格式的判别,实现对不同格式数据的解析和导入,提升插件的通用性和使用效率。

参考文献:

[1] 邵永恒.基于海量InSAR地质监测数据可视化平台的设计与实现 [D].沈阳:中国科学院大学(中国科学院沈阳计算技术研究所),2022.

[2] 周红宇,陶晓学,李毓,等.基于Visual Lisp For AutoCAD的输电线路选线与数据处理系统 [J].地理空间信息,2023,21(2):108-112.

[3] 徐阳,王鹏程,王子健.LISP语言和Word的邮件合并功能在地籍调查中的应用 [J].现代测绘,2023,46(3):49-52.

[4] 吴思蕴,温立委,张汉春.LISP编程在管线探测工程制图中的应用 [J].现代信息科技,2023,7(14):134-136+141.

[5] 李学志.VisualLisp程序设计AutoCAD2010:第2版 [M].北京:清华大学出版社,2010.

[6] 陈伟康.Visual Lisp在面积标注中的应用 [J].地理空间信息,2020,18(4):125-126+133+8.

[7] 吴凯伟,石玮荃.基于Visual LISP的地铁轨道综合图辅助设计程序开发 [J].铁道标准设计,2017,61(5):27-31.

[8] 吴冀,黄孝刚,肖术云,等.参数化绘制帷幕灌浆综合剖面图基于AutoCAD的Visual Lisp程序设计 [J].施工技术,2020,49(S1):287-292.

[9] 刘娜.利用Python语言实现集中监测CAD施工图辅助设计 [J].铁路通信信号工程技术,2019,16(11):97-100.

[10] 张新伟,马静,侯祖行,等.北京大兴国际机场及周边交通干道形变时序InSAR监测 [J].地球科学与环境学报,2023,45(1):131-142.

[11] 赵霞,马新岩,余虔,等.高分辨率InSAR技术在北京大兴国际机场形变监测中的应用 [J].自然资源遥感,2024,36(1):49-57.

作者简介:王招冰(1993—),男,汉族,江西南昌人,工程师,硕士,研究方向:机场岩土工程设计。

收稿日期:2024-08-09

标签:  数据 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor