当前位置: 首页 > news >正文

牟乃夏《ArcGIS Engine 地理信息系统开发教程》学习笔记 4-空间分析与高级功能开发

目录

一、核心组件与接口回顾

(一)空间分析基础架构

(二)网络分析模块

二、矢量数据空间分析实战

(一)缓冲区分析

(二)叠加分析(以裁剪为例)

三、栅格数据空间分析

(一)表面分析(坡度计算)

(二)栅格计算(基于 IMathOp)

四、网络分析专题

(一)几何网络分析(管网)

(二)交通网络分析(最短路径)

五、三维分析与可视化

(一)三维场景构建

(二)三维符号化

六、水文分析与地统计

(一)水文分析流程

(二)地统计插值(克里金法)

七、空间建模与扩展开发

(一)Model Builder 应用

(二)自定义工具开发

八、开发注意事项

九、总结

参考资料


在地理信息系统(GIS)开发领域,ArcGIS Engine 是一款功能强大的开发组件,它为开发者提供了丰富的空间分析与高级功能接口,使我们能够构建复杂且高效的 GIS 应用程序。本文将基于《ArcGIS Engine 地理信息系统开发教程》第 3 篇的学习内容,详细整理和阐述 ArcGIS Engine 在空间分析与高级功能开发方面的要点和实践案例,旨在为广大 GIS 开发者提供参考和借鉴。

一、核心组件与接口回顾

(一)空间分析基础架构

  • ISpatialAnalysis 接口 :该接口主要用于提供空间关系判断。例如,通过 Contains 方法可判断一个几何对象是否完全包含另一个几何对象,Crosses 方法用于判断两个几何对象是否交叉,而 Disjoint 方法则用于判断两个几何对象是否不相交等。

  • ITopologicalOperator 接口 :该接口是进行多种空间分析操作的核心,可实现缓冲区分析,如基于点、线、面要素创建一定距离范围内的缓冲区;还能进行裁剪操作,将输入要素与裁剪要素相交部分裁剪出来;以及联合操作,将多个要素的几何形状进行合并等。

  • 开发技巧 :在几何对象操作过程中,若想提升操作效率,可借助 IGeometryBridge2 接口。它能够实现几何对象与其他数据结构之间的高效转换,减少操作过程中的性能损耗,提高空间分析的执行速度。

(二)网络分析模块

  • INetworkDataset 接口 :主要用于管理交通网络数据集,包括网络数据的加载、存储、更新等操作,为交通网络分析提供了数据基础架构。

  • INASolver 接口 :基于交通网络数据集,该接口可实现路径分析。例如,计算两点之间的最短路径,根据交通网络的属性和权重,找出最优的行驶路线;同时还能进行服务区分析,确定在一定范围内的服务覆盖区域。

  • 几何网络分析需结合 IFeatureClass 与 IGeometricNetwork :几何网络分析通常用于处理管网等具有网络拓扑关系的矢量数据。IFeatureClass 用于管理要素类数据,而 IGeometricNetwork 则负责构建和维护几何网络的拓扑结构,两者结合可实现几何网络的流向追踪、资源调度等分析功能。

二、矢量数据空间分析实战

(一)缓冲区分析

以下是一个基于点要素创建缓冲区的示例代码:

IPoint point = new PointClass();
point.X = 120.5;
point.Y = 36.2;
ITopologicalOperator topo = point as ITopologicalOperator;
IGeometry buffer = topo.Buffer(1000); // 1000 米缓冲区

首先创建一个点对象,并设置其坐标为(120.5,36.2)。然后将该点对象转换为 ITopologicalOperator 接口,利用 Buffer 方法生成一个 1000 米半径的缓冲区。这种缓冲区分析在许多场景中都有广泛应用,如确定某一设施的影响范围、规划保护区等。

(二)叠加分析(以裁剪为例)

以下是裁剪分析的示例代码:

IFeatureClass inputLayer = ...; // 输入要素
IFeatureClass clipLayer = ...;  // 裁剪要素
ITopologicalOperator clipOp = inputLayer.Shape as ITopologicalOperator;
IGeometry result = clipOp.Intersect(clipLayer.Shape, esriGeometryDimension.esriGeometry2D);

在此示例中,我们对输入要素进行裁剪操作。通过获取输入要素的几何形状,并将其转换为 ITopologicalOperator 接口,然后调用 Intersect 方法与裁剪要素的几何形状进行相交操作,从而得到裁剪后的结果几何对象。叠加分析在土地利用规划、资源管理等领域具有重要作用,可用于分析不同要素之间的空间关系和相互影响。

三、栅格数据空间分析

(一)表面分析(坡度计算)

以下是坡度计算的示例代码:

IRasterAnalysisEnvironment env = new RasterInterpolationOpClass();
env.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, 30); // 设置分辨率
ISurfaceOp surfaceOp = new RasterSurfaceOpClass();
IRasterDataset slopeRaster = surfaceOp.Slope(inputRaster, esriGeoAnalysisSlopeEnum.esriDegreeSlope);

首先创建一个栅格分析环境对象,并设置栅格的像元大小(分辨率)为 30。接着利用 ISurfaceOp 接口的 Slope 方法,基于输入的栅格数据计算坡度,并将结果存储在一个新的栅格数据集中。坡度计算对于地形分析、土壤侵蚀评估、工程建设选址等方面具有重要意义。

(二)栅格计算(基于 IMathOp)

以下是栅格计算的示例代码:

IMathOp mathOp = new RasterMathOpsClass();
IRasterBandCollection resultRaster = mathOp.Plus(rasterBand1, rasterBand2);

通过创建一个栅格数学运算对象,利用 Plus 方法对两个栅格波段进行相加运算,得到一个新的栅格波段集合。这种栅格计算功能可以实现多种复杂的栅格数据处理和分析,如数据融合、模型构建等,在遥感影像处理、环境监测等领域应用广泛。

四、网络分析专题

(一)几何网络分析(管网)

几何网络分析在管网系统管理中发挥着关键作用。其核心接口包括:

  • IGeometricNetwork :用于管理网络拓扑,构建几何网络的连接关系和拓扑结构,确保管网数据的完整性和一致性。

  • ITraceFlowSolver :基于几何网络拓扑,实现流向追踪功能。例如,在供水管网中,可追踪水流的流向,定位漏水点或确定爆管影响范围;在燃气管网中,可分析气体的流动路径,进行安全检测和资源调度等。

其应用场景主要有爆管分析,通过追踪水流或气体在管网中的传播路径,快速确定受影响区域,为应急抢修提供决策支持;以及资源调度,根据管网的流向和负荷情况,合理分配资源,提高管网运行效率。

(二)交通网络分析(最短路径)

以下是交通网络分析中求解最短路径的示例代码:

INASolverSettings solverSettings = naSolver.Settings;
solverSettings.ImpedanceAttributeName = "Length"; // 设置阻抗属性
INetworkAnalysisResult result = naSolver.Solve(origin, destination);

首先设置交通网络分析的阻抗属性为 “Length”,即以距离作为路径计算的权重。然后调用 Solve 方法,根据起点(origin)和终点(destination)计算出最短路径结果。交通网络分析在物流配送、公共交通规划、智能交通系统等领域具有重要应用,有助于优化路径选择、提高运输效率、减少交通拥堵等。

五、三维分析与可视化

(一)三维场景构建

  • IScene 接口 :用于管理 3D 场景图层,包括添加、移除、显示、隐藏图层等操作,可构建复杂的三维地理场景,将各种三维地理要素(如地形、建筑物、植被等)进行整合和展示。

  • ICamera 接口 :用于控制视角参数,如俯仰角(控制视图的上下倾斜角度)、方位角(控制视图的左右旋转角度)等。通过调整这些参数,用户可以从不同角度观察三维场景,获取更全面的空间信息,增强对地理现象的理解和分析能力。

(二)三维符号化

以下是三维符号化的示例代码:

I3DChartSymbol chartSymbol = new ChartSymbolClass();
chartSymbol.BarWidth = 10;
chartSymbol.SetValue(0, 150); // 柱状图高度

在此示例中,创建一个三维柱状图符号,并设置其宽度为 10,高度为 150。通过三维符号化,可将地理数据以更加直观、生动的三维形式进行展示,如在城市规划中展示建筑物高度、在地质分析中展示地层厚度等,有助于突出数据的重要特征和空间分布规律。

六、水文分析与地统计

(一)水文分析流程

水文分析主要包括以下步骤:

  • 流向计算(IFlowDirection) :根据数字高程模型(DEM)数据,计算每个像元的水流方向。水流方向反映了地表水在重力作用下的流动趋势,是进行后续水文分析的基础。

  • 汇流累积量(IFlowAccumulation) :在流向计算的基础上,计算每个像元的汇流累积量,即流经该像元的上游所有像元的数目。汇流累积量可用于识别流域中的主要河道、分析地形的集水特征等。

  • 河网提取(IStreamToFeature) :根据汇流累积量的阈值,提取河网要素。通过将汇流累积量较大的区域转换为线状要素,形成完整的河网系统,为流域划分、水资源管理等提供数据支持。

(二)地统计插值(克里金法)

以下是克里金插值的示例代码:

IGeoStatisticalAnalysis gsAnalysis = new GeoStatisticalAnalysisClass();
IGeoDataset result = gsAnalysis.Kriging(inputPoints, fieldName, 5000);

首先创建一个地统计分析对象,然后利用 Kriging 方法,基于输入的点要素(inputPoints)及其属性字段(fieldName),并设置搜索半径(5000),进行克里金插值,生成一个地统计数据集。克里金插值是一种基于空间自相关性的插值方法,广泛应用于环境科学、地质勘探等领域,可用于预测地表或地下某种属性的空间分布情况,如土壤污染浓度、矿产资源储量等。

七、空间建模与扩展开发

(一)Model Builder 应用

  • 通过 IModel 接口实现流程自动化 :IModel 接口允许开发者将多个 GIS 操作和分析步骤组合成一个模型,实现复杂的业务流程自动化。例如,可以构建一个数据处理模型,自动完成数据导入、清洗、转换、分析等一系列操作,提高工作效率,减少人为错误。

  • 模型导出为 Python 脚本实现批处理 :将构建好的模型导出为 Python 脚本后,可方便地进行批处理操作。这对于大规模数据处理和分析任务非常有用,如对多个数据文件进行相同的分析流程,只需运行一次脚本即可完成所有任务的执行,大大提高了处理速度和便捷性。

(二)自定义工具开发

以下是自定义工具开发的一个简单示例代码:

public class CustomTool : BaseTool {public override void OnMouseDown(int Button, int Shift, int X, int Y) {// 实现自定义绘制逻辑}
}

通过继承 BaseTool 类并重写 OnMouseDown 方法,可自定义鼠标点击事件的绘制逻辑。开发者可根据实际需求,开发各种自定义工具,如绘制特定形状、进行交互式编辑、实现特定的空间分析功能等,丰富 GIS 应用程序的功能和交互性。

八、开发注意事项

  • 资源释放 :在 ArcGIS Engine 开发过程中,由于使用了大量的 COM 对象,因此需要显式调用 Marshal.FinalReleaseComObject() 方法释放 COM 对象,避免资源泄漏,确保系统的稳定运行。

  • 版本兼容 :ArcGIS Engine Runtime 必须与 SDK 版本严格匹配,否则可能导致功能异常或程序崩溃。在开发和部署过程中,要注意保持版本的一致性,及时更新和维护软件环境。

  • 性能优化 :对于大数据量的空间分析操作,可采用后台线程进行处理,并结合进度条(通过 IStepProgressor 实现)显示操作进度。这不仅可以提高程序的响应速度,还能给用户提供清晰的操作反馈,提升用户体验。

九、总结

本篇内容系统地涵盖了 GIS 开发中的高级功能模块,包括空间分析基础架构、矢量数据空间分析、栅格数据空间分析、网络分析、三维分析与可视化、水文分析与地统计以及空间建模与扩展开发等方面。通过学习这些内容,开发者能够掌握 ArcGIS Engine 在空间分析领域的强大功能和开发技巧,为构建高效、智能的 GIS 应用系统奠定坚实基础。建议读者在学习过程中,结合官方示例(如 ESRI GitHub 上的示例代码)和牟乃夏教材配套代码进行实践操作,加深对知识点的理解和掌握。同时,随着技术的不断发展,后续还可深入研究空间数据库优化、机器学习集成等拓展方向,进一步提升 GIS 开发的能力和水平。

参考资料

  • 牟乃夏《ArcGIS Engine 地理信息系统开发教程》第 3 篇

  • ESRI 官方开发文档

  • 配套源码中的 "NetworkAnalysis"、"3DAnalysis" 等案例模块

(注:本文代码示例基于 C#.NET 2010 + ArcGIS Engine 10 环境实现)


以上为博主自己在学习过程中的学习笔记,用于学习和交流,欢迎大家批评纠正。

希望你越来越优秀!!

相关文章:

牟乃夏《ArcGIS Engine 地理信息系统开发教程》学习笔记 4-空间分析与高级功能开发

目录 一、核心组件与接口回顾 (一)空间分析基础架构 (二)网络分析模块 二、矢量数据空间分析实战 (一)缓冲区分析 (二)叠加分析(以裁剪为例) 三、栅格…...

UE 滚动提示条材质制作

需要两个贴图 先制作条纹屏闪 这里RGB输出连到alpha,0为白色,到1就为黑色了 因为这个图片是RGB输出代表三个图片,看贴图颜色就知道了,然后把这三个相加一下;链接自发光颜色, 这里设置速度变量 通过网盘分…...

金融业数字化转型——深入解读77页2024年中国金融体系指标大全【附全文阅读】

本文主要介绍了金融业通行宝典中国金融体系指标大全的内容,包括央行体系、商业银行体系、非银金融机构与地方金融组织的各项指标。文章详细分析了美联储资产负債表的结构,并概述了美日欧等主要经济体资产负债表状况。 重点内容: 1. 央行体系是金融分析的重点。 2. 美联储资产…...

研究:大模型输出一致性:确定性与随机性的场景化平衡

大模型在相同输入下的输出是否一致,本质上取决于其设计目标、任务性质以及技术实现方式。这一问题需要从技术原理、应用场景、用户需求三个维度进行深度分析: 一、技术实现:确定性与随机性的平衡 模型架构的确定性基础 大模型的核心参数(如权重矩阵)在训练完成后是固定的…...

数据分析1

一、常用数据处理模块Numpy Numpy常用于高性能计算,在机器学习常常作为传递数据的容器。提供了两种基本对象:ndarray、ufunc。 ndarray具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 ufunc提供了对数组快速运算的标准数学函数。 ndar…...

vmare pro安装报错用户在命令行上发出了EULAS_AGREED=1,表示不接受许可协议的错误解决方法

问题现状和原因 用户在命令行上发出了EULAS_AGREED1,表示不接受许可协议的错误。 以上错误主要原因是因为机器安装过了vmare 卸载时没有卸载干净导致的。 解决方法: 1、控制面板-程序和功能-卸载程序。找到vamre卸载掉。 2、打开开始菜单输入注册表 …...

《Linux篇》基础开发工具——vim详细介绍

文章目录 1.软件包管理1.1 什么是软件包1.2 Linux软件生态 2.编辑器vim2.1 vim的正常/命令模式2.2 vim的末行模式2.3 vim的插入模式 3.配置vim 1.软件包管理 我们先来看一下再Linux是那个如何安装软件? 源码安装:软件是存在相互依赖的关系的&#xff0…...

AI图片跳舞生成视频,animate X本地部署。

本期内容打包限时免费下载https://www.kdocs.cn/l/cnQ5lNU5DFZB 对比不同算法,使用同一组图片和舞蹈视频。animate X官网,下载项目解压。按照官方教程下载模型,项目包和命名好的模型包已上传网盘,放到解压目录下即可。 安装好cond…...

Web技术与Apache网站部署

一、Web 基础与 HTTP 协议 1.1 静态网页与动态网页 静态网页 定义:由纯 HTML、CSS、JavaScript 构成,文件扩展名为 .htm 或 .html。内容在服务器生成后固定不变,仅通过客户端脚本(如 JS)实现视觉动态效果&#xff08…...

第七章:Server/Client Communication

Chapter 7: Server/Client Communication 从工具集成到服务器通信:如何让AI“远程协作”? 在上一章的工具与LLM集成中,我们已经能让AI调用真实世界的工具。但你是否想过:如果多个用户同时请求天气查询,或者需要远程控…...

Linux调试器 - gdb使用指南

目录 一、背景知识 二、开始使用 gdb (一)查看源代码相关指令 (二)程序执行控制指令 (三)断点相关指令 (四)变量操作相关指令 (五)其他常用指令 在Li…...

C++面试常青客:LRUCache最近最少使用算法

C面试常青客&#xff1a;LRUCache最近最少使用算法 文章目录 C面试常青客&#xff1a;LRUCache最近最少使用算法1.背景&#x1f3c6;2.原理&#x1f680;2.1基本原理2.2核心特性 3.结构3.1为什么需要 list<pair<int,int>>&#xff08;双向链表&#xff09;&#xf…...

【含文档+PPT+源码】基于微信小程序的社交摄影约拍平台的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的社交摄影约拍平台的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...

jetson nano上Ubuntu系统调用摄像头bug

今天在做一个比赛的时候&#xff0c;通过调用摄像头做检测并输出目标角度和距离。刚开始用的是 cv::VideoCapture cap; cap.open("/dev/video0");没有任何问题&#xff0c;使用pnp解算得到的角度和距离都是正确的&#xff0c;画面也是小画面。 后面加了一些功能&…...

用Python做有趣的AI项目5:AI 画画机器人(图像风格迁移)

这个项目将使用 PyTorch 实现图像风格迁移&#xff08;Neural Style Transfer&#xff09;&#xff0c;让一张图片看起来具有另一张图片的“艺术风格”。 &#x1f527; 开发环境建议 Python 3.8 PyTorch&#xff08;pip install torch torchvision&#xff09; PIL&#x…...

一种用于从视网膜图像中识别疾病的 BERT 式自监督学习 CNN

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 在医学成像领域&#xff0c;深度学习的出现&#xff0c;尤其是卷积神经网络 &#xff08;CNN&#xff09; 的应用&#xff0c;彻底改变了医学影像的分析和解释。然而&#xff0c;深度学习方法通常依…...

OpenCV 图形API(68)图像与通道拼接函数------垂直拼接两个图像/矩阵的函数concatVert()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对给定的矩阵执行垂直拼接。该函数将两个 GMat 矩阵&#xff08;列数相同&#xff09;垂直连接&#xff1a; GMat A { 1, 7,2, 8,3, 9 }; GMat…...

重测序关系矩阵构建方式汇总

样本间亲缘关系矩阵&#xff08;kinship matrix&#xff09;和同源性矩阵&#xff08;IBS matrix&#xff09;构建的方式 1. 可以使用plink的–make-rel计算个体之间的亲缘关系&#xff08;强调个体之间的遗传相似性&#xff09; /opt/software/plink --bfile vcf_bfile--mak…...

OpenCV 图形API(70)图像与通道拼接函数-----创建一个图像或矩阵(GMat)的副本的操作函数copy()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 制作输入图像的一个副本。请注意&#xff0c;这个副本可能不是实际存在的&#xff08;没有实际复制数据&#xff09;。使用此函数来维护图的契约…...

30天通过软考高项-第六天

30天通过软考高项-第六天 任务&#xff1a;项目质量管理 思维导图阅读 知识点集锦阅读 知识点记忆 章节习题练习 知识点练习 手写回忆ITTO 听一遍喜马拉雅关于范围的内容 质量管理 -背 1. 过程定义 龟管控 要求标准规划定&#xff0c;计划转化看过程&#xf…...

JUC中各种锁机制的应用和原理及死锁问题定位

JUC中各种锁机制的应用和原理及死锁问题定位 在互联网大厂Java求职者的面试中&#xff0c;经常会被问到关于JUC&#xff08;Java Util Concurrency&#xff09;中的各种锁机制及其应用和原理的问题。本文通过一个故事场景来展示这些问题的实际解决方案。 第一轮提问 面试官&…...

区块链vs实体经济:一场金融、医疗、政务与物流的“效率革命”

区块链技术作为一种去中心化、不可篡改的分布式账本技术&#xff0c;正在重塑多个行业的运行模式。从金融交易的透明化到医疗数据的安全共享&#xff0c;从政务服务的效率提升到物流供应链的全程可追溯&#xff0c;区块链的跨行业应用展现出巨大的潜力与价值。以下是其在金融、…...

FTP-网络文件服务器

部署思路 单纯上传下载ftp系统集成间的共享 samba网络存储服务器 NFS 网络文件服务器&#xff1a;通过网络共享文件或文件夹&#xff0c;实现数据共享 NAS &#xff08; network append storage):共享的是文件夹 FTP&#xff1a;文件服务器samba&#xff1a;不同系统间的文件…...

嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)

文章目录 前言一、uC/OS简介二、工程移植2.1 下载ucos源码2.2 创建空白工程2.3 拷贝ucosiii源码文件2.3.1 UC-CONFIG2.3.2 UC-CPU2.3.3 UC-LIB2.3.4 UC-OS3 2.3 添加工程文件分组及路径2.4 代码首次编译2.5 源码修改2.5.1 cpu_cfg.h2.5.2 os_cpu_c.c2.5.3 lib_cfg.h2.5.4 sys.h…...

10.Excel:快速定位目标值

一 批量删除 1.如何使用 快捷键 CTRLG 补充&#xff1a;直接选择定位条件。 2.作用 1.批量删除工作表中的图片 补充&#xff1a;无法通过框选的方式选中这些图片进行删除。 这样只框选了表格&#xff0c;无法框选图片。因为图片在excel中被认为是一个对象&#xff0c;对象无法通…...

状态模式 (State Pattern)

状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。该模式将状态封装成独立的类,并将请求委托给当前的状态对象,当对象的内部状态发生变化时,其行为也会随之改变。 一、基础部分 1. 意图 允许一个…...

【Java面试题04】MySQL 篇

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、MySQL 篇&#xff1a;☀️☀️☀️1、MySQL 是如何实现事务的? 后序还在更新中~~~三、总结&#xff1a;&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&#x1f680; ☀️ 你每一…...

同时安装多个版本的golang

https://golang.google.cn/dl/ go install golang.org/dl/go1.20latest 这样就会将 go1.20.exe 下载到 GOPATH/bin&#xff0c;但是此时并没有 go1.20 的源码包&#xff0c;也就不能正常执行 build/run 等指令。 然后执行 go1.20 download下载源码包 > go1.20 download …...

【Web应用服务器_Tomcat】三、Tomcat 性能优化与监控诊断

在企业级 Java Web 应用的运行过程中&#xff0c;Apache Tomcat 作为广泛使用的 Servlet 容器和 Web 服务器&#xff0c;其性能表现直接影响用户体验和业务稳定性。本篇文章将深入探讨 Tomcat 性能优化的实用技巧&#xff0c;以及如何通过有效的监控诊断手段&#xff0c;及时发…...

stm32week13

stm32学习 九.stm32与HAL库 4.时钟树 stm32f103所拥有的时钟源&#xff1a; 外部时钟的稳定性比内部的高&#xff0c;但是成本高&#xff0c;需要在外部额外接 关于上述时钟树的简图&#xff1a; 右下四个是HAL库中的初始化函数 F4的时钟树简图&#xff1a; F7的时钟树简图…...

深入探究C++ 中的stack、queue和deque

目录 一、stack&#xff08;栈&#xff09; 二、queue&#xff08;队列&#xff09; 三、deque&#xff08;双向队列&#xff09; 四、容器适配器总结 在C 的标准模板库&#xff08;STL&#xff09;中&#xff0c;stack、queue和priority_queue是非常实用的容器适配器&…...

第十二节:性能优化高频题-shallowRef/shallowReactive使用场景

适用场景&#xff1a;大型对象/列表仅需第一层响应式变化&#xff08;如JSON配置数据&#xff09; Vue3 浅层响应式 API&#xff08;shallowRef/shallowReactive&#xff09;使用场景深度解析 一、核心使用场景与性能优化原理 大型 JSON 配置数据管理 • 场景特征&#xff1a;…...

openGauss DB4AI与scikit-learn模块对比探究

openGauss当前版本支持了原生DB4AI能力&#xff0c;引入原生AI算子&#xff0c;简化操作流程&#xff0c;充分利用数据库优化器、执行器的优化与执行能力&#xff0c;获得高性能的数据库内模型训练能力。 本文介绍了笔者采用鸢尾花数据集&#xff0c;对openGauss DB4AI功能进行…...

基于大模型的公安预审办案笔录分析的挑战与应对策略-3

引言 &#xff1a;在基于大模型的公安预审办案笔录分析应用过程中&#xff0c;虽然取得了一定的成果&#xff0c;但也面临着诸多挑战。本文将分析这些挑战&#xff0c;并提出相应的应对策略&#xff0c;以推动该技术在公安领域的更好地发展和应用。 引文&#xff1a;https://c…...

ubantu18.04(Hadoop3.1.3)之Flink安装与编程实践(Flink1.9.1)

说明&#xff1a;本文图片较多&#xff0c;耐心等待加载。&#xff08;建议用电脑&#xff09; 注意所有打开的文件都要记得保存。 第一步&#xff1a;准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的&#xff0c;因此需要读者完成我之前教程的所有操作。 注意本次实…...

AI辅助编程-cursor开发煤矿持证上岗管理程序需求与设计篇

​ Cursor 是一款由人工智能驱动的智能代码编辑器&#xff0c;深度融合AI技术以提升开发效率。其核心功能基于GPT-4等先进模型&#xff0c;支持代码生成、错误修复、智能补全及自然语言编程。开发者可通过对话交互直接描述需求&#xff0c;AI即时生成对应代码片段&#xff0c;显…...

如何使用极狐GitLab 议题看板?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 议题看板 (BASIC ALL) 议题看板是一个软件项目管理工具&#xff0c;用于计划、组织和可视化功能或产品发布的工作流程。它可…...

计网分层体系结构(包括OSI,IP,两者对比和相关概念)

1. 应用层&#xff1a; 用户与网络的界面&#xff0c;FTP&#xff0c;SMTP, HTTP 2. 表示层(Presentation Layer)&#xff1a; 解决用户信息的语法表示问题 数据压缩&#xff0c;加密解密 表示变换 3. 对话层(Session Layer)&#xff1a; 功能&#xff1a;允许不同主机的各个进…...

爬虫过程中如何确保数据准确性

在爬虫过程中&#xff0c;确保数据的准确性是非常重要的。数据不准确可能会导致分析结果的偏差&#xff0c;甚至影响决策。以下是一些确保爬虫数据准确性的方法和技巧&#xff1a; 一、验证数据来源 确保数据来源的可靠性是确保数据准确性的第一步。选择信誉良好的网站作为数…...

Maven多模块工程版本管理:flatten-maven-plugin扁平化POM

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

数据库基础与核心操作:从概念到实战的全面解析

目录 1 基本概念2 基本操作2.1 DCL2.2 DDL2.3 DML2.4 DQL(高级查询) 3 高级功能3.1 视图&#xff08;无参函数&#xff09;3.2 存储过程(有参函数)3.3 触发器 4 约束4.1 主键约束4.2 UNIQUE KEY&#xff08;唯一键约束&#xff09;4.3 FOREIGN KEY&#xff08;外键约束&#xf…...

网络原理 - 10(HTTP/HTTPS - 1)

前面的网络原理 1 - 9&#xff0c;按照 TCP/IP 五层协议栈&#xff0c;介绍了各个层次的核心协议。 应用层&#xff1a;自定义协议&#xff08;xml&#xff0c;json....&#xff09; 传输层&#xff1a;UDP/TCP 网络层&#xff1a;IP 数据链路层&#xff1a;以太网 我们这…...

UDP协议详解+代码演示

1、UDP协议基础 1. UDP是什么&#xff1f; UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是传输层的核心协议之一&#xff0c;与TCP并列。它的主要特点是&#xff1a;​​​​ 无连接&#xff1a;通信前不需要建立连接&#xff08;知道对端的…...

QT事件Trick

拖动 void DWidget::mousePressEvent(QMouseEvent *event) {if(event->button()Qt::LeftButton){QListWidgetItem *selItem currentItem();if(selItem! nullptr){m_startPosevent->pos(); //记录鼠标按下时的起始位置}}QListWidget::mousePressEvent(event); }void DW…...

解答UnityShader学习过程中的一些疑惑(持续更新中)

一、坐标系相关 shader中会有几种空间&#xff1a; 模型空间&#xff1a;以物体自己为中心原点 世界空间&#xff1a;就是unity的世界坐标 观察空间&#xff08;视图空间&#xff09;&#xff1a;以相机为中心的坐标系 裁剪空间&#xff1a;是一个4d空间&#xff0c;有x,y,z,w…...

【图论 拓扑排序 bfs】P6037 Ryoku 的探索|普及+

本文涉及知识点 C图论 CBFS算法 P6037 Ryoku 的探索 题目背景 Ryoku 对自己所处的世界充满了好奇&#xff0c;她希望能够在她「死」之前尽可能能多地探索世界。 这一天&#xff0c;Ryoku 得到了一张这个世界的地图&#xff0c;她十分高兴。然而&#xff0c;Ryoku 并不知道…...

Spring Boot定时任务

在 Spring Boot 中实现定时任务主要依赖于Scheduled注解和 Spring 调度器。 基本概念 定时任务&#xff0c;简单来说就是在特定的时间点或按照一定的时间间隔自动执行的任务。在 Spring Boot 中&#xff0c;实现定时任务主要依赖于 Spring 框架提供的 Scheduled 注解和 TaskSc…...

如何使用electron-forge开发上位机ui

Electron Forge是一个用于快速构建、打包和发布Electron应用程序的工具。它提供了一种简单的方式来设置Electron项目&#xff0c;并使用现代工具和最佳实践来管理应用程序的开发和部署过程。使用Electron Forge&#xff0c;开发人员可以轻松地创建跨平台的桌面应用程序&#xf…...

idea启动springboot方式及web调用

使用以下方式启动springboot. 我这里是微服务, 本地调试需要启动程序使用 1. 通过maven检测到Profile配置 2. web调用 我这里直接用 apifox接口调用, 带着token和一些必要参数。有这几点&#xff1a; 请求头要加的token需要是网页上F12获取到的 如果是微服务本地调用。url需要…...

利用EMQX实现单片机和PyQt的数据MQTT互联

https://www.dong-blog.fun/post/2050 基于MQTT的设备监控与控制系统设计 引言 物联网(IoT)设备的远程监控与控制是现代智能系统的基础需求。本文将介绍一个基于MQTT协议的设备监控与控制系统&#xff0c;该系统由两部分组成&#xff1a;模拟单片机设备和PyQt客户端。我们将…...