发布时间:2026/9/1 17:13:01
基于GeoToolKit实现连井剖面对比显示及交互 最近基于GeoToolkit实现单井或多井的柱状图的显示和交互特别是多井的连通对比分析很多功能GeoToolkit原来是没有的。因此需要拓展了GeoToolKit的许多功能。本文主要基于GeoToolKit/INT组件针对多井的测井曲线、岩性剖面、含油气性和射孔井段等进行对比分析展示。因此本次主要基于WellLogWidget实现多井的测井曲线、解释结论和岩性剖面的显示以及连通性对比同时支持用户拖动鼠标实现整口井井道的移动连通性删减等交互操作。具体如下。其中的前后端内容详见之前文章。1.多井连通性对比效果演示2.核心代码主要采用VUEJSGeotoolKit.JS充分利用VUE的组件化设计思想实现多井多通道剖面显示和连通性交互操作等。MultiWellDrag.vuetemplate div canvas refplot styledisplay:block;margin:0 auto;height:900px;position:relative; / /div /template script import {createScene, setupDragInteraction, setupZoneConnectionInteraction, createConnectionContext} from ./MultiWellDrag.js; let plot null; let disposeDrag null; let disposeZoneConn null; export default { name:wellMultiDrag, destroyed () { if (disposeDrag) { disposeDrag(); disposeDrag null; } if (disposeZoneConn) { disposeZoneConn(); disposeZoneConn null; } plot.dispose(); }, mounted () { const canvas this.$refs.plot; // 用容器实际宽度设置 canvas 像素宽保证三口井铺满屏幕高度固定 900 // 1.绘制单井曲线道和油气属性道 const containerWidth canvas.parentElement.clientWidth || window.innerWidth; console.log(containerWidth, containerWidth); canvas.width containerWidth; canvas.height 900; const scene createScene(canvas); plot scene.plot; // 创建连接上下文在拖拽交互与连接交互之间共享连接关系 const connectionContext createConnectionContext(); // 2.启用井道拖拽交互按住鼠标左键拖动单井 header整体移动 WellLogWidget // 拖动时连接 zone 跟随移动连接关系不变 disposeDrag setupDragInteraction(plot, canvas, scene.widgets, connectionContext); // 3.启用 zone 连接交互点击一口井的 zone 再点击另一口井的 zone 自动连通 disposeZoneConn setupZoneConnectionInteraction( plot, canvas, scene.wellConfigs, scene.widgets, scene.wellWidth, scene.gap, scene.headerHeight, canvas.height, scene.zoneWellColors, connectionContext ); } }; /scriptMultiWellDrag.jsfunction createScene (canvas) { // 创建根 Group 容纳多个 WellLogWidget const root new Group(); root.setAutoModelLimitsMode(true); const { widgets, wellWidth, gap, wellConfigs, headerHeight, zoneWellColors } createWidgets(canvas.width, canvas.height); widgets.forEach(w root.addChild(w)); // // 在井间空白区域绘制连通性多边形 // addCorrelationZones(root, wellConfigs, widgets, wellWidth, gap, headerHeight, canvas.height, zoneWellColors); const plot new Plot({ canvasElement: canvas, root: root }); // 将每个 WellLogWidget 的内置工具含 track splitter注册到 Plot 的工具容器 // 使各井道的分隔线可拖拽调整宽度 try { const plotTool plot.getTool(); widgets.forEach(w { plotTool.add(w.getTool()); }); } catch (e) { console.warn(注册 widget 工具失败:, e); } return { plot, widgets, wellWidth, gap, wellConfigs, headerHeight, zoneWellColors }; } /** * 创建连接上下文在拖拽交互与连接交互之间共享连接关系数据。 * setupZoneConnectionInteraction 负责注册连接和更新函数 * setupDragInteraction 在拖动井道时调用更新函数让连接 zone 跟随移动。 */ function createConnectionContext () { return { connections: [], updateConnectionsForWidget: null, updateAllConnections: null, isDragging: false, // 拖拽进行中标记bounds 监控时跳过避免重复更新 addConnection (conn) { this.connections.push(conn); }, getConnectionsForWidget (widgetIndex) { return this.connections.filter(function (c) { return c.s1.widgetIndex widgetIndex || c.s2.widgetIndex widgetIndex; }); } }; } ......后续代码需要请联系。

相关新闻

2026/9/1 17:13:01

Java OA办公审批系统源码实战:从解压到二次开发全解析

简介:这是一套基于Java技术栈开发的完整OA办公审批系统源码及配套文档,面向计算机相关专业学生、初/中级Java开发者及企业项目参考者,解决日常办公流程自动化、审批流管理与微信端集成等实际业务需求,可直接用于毕业设计、课程设计…

2026/9/1 17:08:01

LCC-HVDC直流输电Simulink建模与仿真实践详解

简介:一份面向电力电子与电力系统学习者的LCC-HVDC直流输电仿真模型合集,整合了基于MATLAB/Simulink的多套建模方案,覆盖从基础换流器结构到不同控制策略的仿真实现,适合用于理解线路换相换流器的工作原理、谐波抑制与功率传输特性…

2026/9/1 17:08:01

重编译+启动器:老游戏汉化从补丁时代走向工程化

说实话,《塞尔达传说:梅祖拉的假面》这代游戏,劝退过不少人。原因不在游戏本身,而在于“把它跑起来”这件事太折腾。N64 版诞生在二十多年前,今天的电脑上直接运行基本不可能;模拟器虽然成熟,可…

2026/9/1 17:28:02

Python Playwright 自动化实战:提升脚本稳定性的五个关键技巧

自动化实战:提升脚本稳定性的五个关键技巧在软件开发跟自动化范畴, 存在着一个被众人认可的事实: 将一个从来都没被思考过会被自动化的网站予以自动化, 这是对开发者耐心所能构成的最大考验。好多开发者都遭遇过这般的尴尬处境: 一个手动去操作仅仅只需十秒钟的登录…

2026/9/1 17:28:02

Vectras VM教程:Android上通过QEMU安装Windows 95/2000全攻略

在 Android 手机上运行 Windows 95 甚至 Windows 2000,听起来像是一类“折腾型玩家”才会碰的事情,但 Vectras VM 的出现让这件事的复杂度下降了不少。Vectras VM 是一款基于 QEMU 的 Android 虚拟机应用,它不需要 Root,也不需要复…

2026/9/1 17:28:02

AI无缝转场常穿帮?避坑指南:做好画面衔接就不怕

正在制作AI漫剧或AI动画视频的小伙伴,给大家推荐这里:AIGC梦工厂(www.aigcc.vip)。Ai漫剧一站式成片。输入一句话进去就能一键成片;画布模式可以精修每一帧画面;还有500多种Ai图片玩法。有兴趣的可以看看。…

2026/9/1 17:23:02

[光学原理与应用-589]:价带、导带、禁带(带隙 Eg)图解

价带、导带、禁带(带隙 Eg)通俗易懂详解 单个原子的电子,处在一个个分立的固定能级上。当亿万原子紧密结合形成晶体,原子之间相互作用,原本孤立的能级会大量分裂、互相堆叠,扩展成一片片连续的能带。能带描…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…