不会敲代码的工程师又来画节理玫瑰图了

发布时间:2026-06-09

编者按:自从上次该工程师自己通过AI编程在GDIM平台上搭建了赤平投影程序后,他又进一步开发了节理玫瑰图绘制工具,他告诉我们,这一次他上手更容易了,流程迭代也更顺溜了。我们在征求他的同意后,把他这次开发的详细经历刊发出来,望与其他同行共享。

 

上次做完赤平投影图之后,我心里那个念头就更强烈了:既然能画赤平投影,那节理玫瑰图是不是也能搞定?

节理玫瑰图是工程地质分析里的老面孔了。拿到一组节理数据,第一反应就是画张玫瑰图看看优势方向——倾向玫瑰图、走向玫瑰图、倾角直方图,三板斧下来,结构面的发育规律一目了然。可问题是,跟赤平投影一样,好用的工具不好找,好找的工具不好用。上次 GdiSDK 的成功经验给了我信心,我决定如法炮制:描述需求,让 AI 写代码,上传 GDIM 测试,循环迭代。

一、搭框架:让 AI 先把基本功能跑起来

有了上次的经验,这次我直接把需求想得比较完整。我给 AI 编程工具写了如下提示词,用于生成节理倾向玫瑰图、走向玫瑰图和倾角直方图:

【请使用GdiSDK创建一个用于生成包含以下功能pipline的脚本:

1、从GDIM项目051922780967469057中读取节理表,只读取表中的节理倾向、节理倾角两个字段中的数据。

2、用获取的节理倾向数据绘制节理倾向玫瑰图和节理走向玫瑰图;用获取的节理倾角数据绘制节理倾角直方图。如果用户勾选了统计表,则在每个图下给出区间统计的表格。

3、支持在GDIM运行时包含以下UI参数:1)节理倾向玫瑰图,可勾选;2)节理走向玫瑰图,可勾选;3)节理倾角直方图,可勾选;4)是否显示统计表,可勾选。

4、用户可以同时选择绘制一个图,或者绘制三个图,需要考虑不同绘制情况下的布局。

5、节理走向玫瑰图只绘制半圆,节理倾向玫瑰图绘制整个圆,每10度在内部以短线给刻度,在外部每30°给一个角度标注。

6、运行环境使用 conda gdi-dev。】

代码很快生成了。我按照上次的流程——运行脚本、生成 .pip 文件、上传 GDIM 平台——第一版界面就出来了,三个图都能显示,布局也大致像样。当时我还挺得意,觉得这次效率比上次更高了。

第一版节理玫瑰效果图

二、走弯路:画出来的不是地质玫瑰图

我把第一版发给同事看,同事看了一眼就说:“你这个不像地质上用的玫瑰图,更像气象专业画的风向玫瑰图。”

我一愣,仔细对比了一下,还真是。气象玫瑰图是从圆心向外辐射的射线样式,每组数据一根射线,像太阳光芒一样散开。但地质上的节理玫瑰图不是这样画的——它是按不同组频数的代表点,用相互连接的折线连起来,如果某组节理为0,连线要回到圆心,再从圆心引出与下一组相连,形成一个闭合的多边形折线。这是本质区别,我完全忽略了。

另外同事还指出,走向玫瑰图的数据也不完整,缺了 270° 到 360° 区间的数据。

网上找的玫瑰图样式

我赶紧在网上找了个标准的地质节理玫瑰图图例,让 AI 进行修改,同时把走向玫瑰图数据不全的问题一并提了:

【我们来调整一下。1、节理玫瑰图画法有单独的要求,是按照不同组频数的代表点,相互连接的折线,如果某组节理为0,则连线回到圆心,然后再从圆心引出与下一组相连,并不是目前你绘制的放射性样式,所以倾向玫瑰图和倾角玫瑰图都需要调整,我给你找了个样本,你可以参考附图;2、节理走向玫瑰图没有画完整,还缺乏270到360区间的数据,同样你可以参考附图。】

这一改,面貌大变。从辐射式变成了折线闭合式,终于像地质工程师熟悉的玫瑰图了。走向玫瑰图的数据也补全了。虽然细节上还有不少问题,但至少大方向对了。

第二次改版后的节理走向玫瑰图

三、抠细节:数据异常、椭圆变形、图例打架

改完第二版,我开始认真检查数据和图形细节,结果问题一个接一个冒了出来。

首先是倾向玫瑰图的数据对不上。我的测试数据显示 0° 到 20° 区间的节理数量都是 0,但玫瑰图上这个区间却画出了线段,明显是计算分组或角度归属有问题。

然后是布局问题。当我同时勾选三个图时,界面空间不够,玫瑰图被挤压成了椭圆形;单独选一个图时,图又放大变形,同样呈椭圆状。这说明画布的比例控制和自适应布局有问题。

还有一些细节:倾向玫瑰图缺了东西南北方向的十字轴线;图例和玫瑰图重叠或者相距太远,视觉上很乱;顶部有个总标题“节理玫瑰花图与倾角直方图”,显得多余,每个图自己的小标题就够了。

我把这些问题一一整理,给了 AI:

【还有几个问题:1、检查一下倾向玫瑰图0到30°是否有计算错误,我的测试数据显示0度到20度节理数据都是0,但是玫瑰图绘制了,参考附图1;2、这次调整后,出现了一个布局的问题,同时选择节理倾向玫瑰图,节理走向玫瑰图,倾角直方图时发现界面不够了,而且玫瑰图变成了椭圆形,单独选择某个玫瑰图,也是放大的椭圆,请查看是什么原因;3、节理倾向玫瑰图添加上中间的东西-南北十字,下部标尺不要和玫瑰图相交了,查看附图1;4、补充节理走向玫瑰图东西方向的连线,下部标尺不要和玫瑰图相距太远;5、不需要显示节理玫瑰花图与倾角直方图标题,每个图的小标题保留。】

这一轮修改花的时间比较长,来来回回调了几次。AI 修复了角度分组的边界 bug,把画布比例锁定为正圆,重新调整了自适应布局,添加了十字轴线,挪开了重叠的图例。三图同时显示时,排版也终于顺眼了。

再次改版优化后三图一起展示的效果

四、进阶:在倾向玫瑰图上叠加倾角信息

正当我以为差不多可以收工的时候,同事又提了一个想法:“倾角如果和倾向放到一个玫瑰图里,会不会更形象?一眼就能看出哪个方向的节理倾角大、哪个方向的陡缓。”

 

同事给的叠加倾角玫瑰的倾斜玫瑰图

然后他给我发了一张参考图。我一看就明白了——在倾向玫瑰图的基础上,用另一种颜色叠加一层倾角玫瑰图。这个功能太有价值了,可以把倾向和倾角两个维度的信息融合在一张图里。我评估了一下,觉得在现有基础上增加这个功能可行,而且应该是可选的,用户需要时才叠加。

我给了 AI 一个稍大的修改需求:

【我需要在倾向玫瑰图中叠加倾角玫瑰,倾向玫瑰画法不变。倾角玫瑰的画法是先按倾向分为四个象限,然后每一象限的0°~90°代表倾角,半径长短代表节理条数的多少,封闭区域使用红色。该功能为用户可选,所以界面上提供选项是否叠加倾角玫瑰图,当叠加之后,应有图例说明哪个颜色的区域是什么玫瑰图,标尺位置则应顺势下移。原有功能不改变,只是新增倾角玫瑰图及附属图例等,参考附图】

这一改是整个过程中最复杂的一次。AI 需要理解四象限划分规则、倾角到极坐标半径的映射、叠加后的图例说明、以及原有布局的兼容。我给了它详细的数学逻辑和参考图,经过几轮调试,叠加效果终于出来了——倾向玫瑰图是蓝色折线轮廓,倾角玫瑰图是红色填充区域,两者在同一坐标系下对比鲜明,图例清晰标注。我勾选了叠加选项,效果跟同事给的参考图基本一致。

五、收尾:微调图名图例,定稿

最后阶段主要是打磨。图名的大小和位置微调了一下,图例的字体和间距做了统一,颜色对比度调得更舒服了一些。又测试了几组不同的节理数据,单图、双图、三图的各种布局组合都跑了一遍,确认没有明显问题。

同事看了最终版本,说:“这个可以用了,比外面买的插件画得还规范。”

至此,我的节理玫瑰图工具算是真正完成了。回顾一下整个过程,从第一版框架到最终定稿,前后累计花了大约一天时间,但核心工作模式没变:我负责描述地质专业需求和检查成果,AI 负责写代码和修 bug,GDIM 平台负责界面和数据。

从赤平投影到节理玫瑰图,这两件事做下来,我对 GdiSDK 这套工作流越来越有信心了。以前觉得遥不可及的专业工具开发,现在变成了一个“提需求-看效果-再调需求”的循环,关键是循环的每一轮我都在用我自己的专业语言,而不是编程语言。

接下来还有什么想做的?结构面统计的极点等密度图、赤平投影稳定性定性判定……脑子里已经排着队了。而这一次,我知道只要描述清楚需求,剩下的交给 AI 和 GdiSDK 就好。