Cesium 测量距离

Cesium 测量距离

    • 需求
    • 分析
      • 第一种方式:使用测距 Measure
      • 第二中方式:使用 distance,自己封装
      • 第三种方式:自己封装(样式不太好)

需求

实际开发中我们经常需要用到量测工具,而Cesium没有直接提供量测功能,如何在 Cesium 中实现两点间距离测量
在这里插入图片描述

分析

第一种方式:使用测距 Measure

在Cesium中,可以使用Measure类进行测距操作。以下是测距的简单示例代码:

// 创建测量工具对象
var measure = new Cesium.Measure(viewer, {lineColor: Cesium.Color.YELLOW, // 线颜色lineOpacity: 1, // 线透明度lineOutline: true, // 线是否显示轮廓lineOutlineColor: Cesium.Color.BLACK, // 线轮廓颜色labelFont: '16px sans-serif', // 标签字体labelColor: Cesium.Color.BLACK, // 标签颜色labelOffset: new Cesium.Cartesian2(0, 20), // 标签偏移measureUnits: Cesium.MeasureUnits.METERS // 测量单位
});// 开始测距
measure.startMeasure();

在按下鼠标左键开始绘制第一个点之后,测距工具将会创建一个用于显示测距结果的线段、标签等元素。测量结果将实时更新,直到鼠标左键抬起。

除了直接使用Measure类进行测距外,还可以使用Cesium.MeasureHandler类创建自定义的测距工具,这样可以根据具体需求进行更加详细的设置,例如支持多线段测量等。具体使用方法可以参考Cesium官方文档。

参考文献:

  • https://cesium.com/docs/cesiumjs-ref-doc/Measure.html
  • https://cesium.com/docs/cesiumjs-ref-doc/MeasureHandler.html

第二中方式:使用 distance,自己封装

  • 预览效果

在这里插入图片描述

  • 源码:
data(){viewer: null,handler: null,positions : [],entityCollection: [],leftClickFlag:0,//单击FlagcenterPoint:[],//中点lengthText:0 , // 计算距离
},
watch: {leftClickFlag(val){if( val!==1 && val %2 == 1){this.addLabel(this.centerPoint, this.lengthText); }}
},
methods:{//注册鼠标事件,调用该函数实现其他方法调用registerEvents() {this.leftClickEvent();},/*** 添加标签* @param position* @param text*/addLabel(centerPoint, text) {return this.viewer.entities.add(new Cesium.Entity({position: centerPoint,label: {text: text,font: '14px sans-serif',style: Cesium.LabelStyle.FILL_AND_OUTLINE, //FILL  FILL_AND_OUTLINE OUTLINEfillColor: Cesium.Color.YELLOW,showBackground: true, //指定标签后面背景的可见性backgroundColor: new Cesium.Color(0.165, 0.165, 0.165, 0.8), // 背景颜色backgroundPadding: new Cesium.Cartesian2(6, 6), //指定以像素为单位的水平和垂直背景填充paddingpixelOffset: new Cesium.Cartesian2(0, -25),disableDepthTestDistance: Number.POSITIVE_INFINITY}}));},// 添加点addPoint(position) {return this.viewer.entities.add({position: position,point:{pixelSize: 10,color: Cesium.Color.YELLOW}});},// 添加线addLine(position) {const lonlat = [];for (let index = 0; index < position.length; index++) {const longitude =  Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(position[index]).longitude);const latitude =  Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(position[index]).latitude);lonlat.push(longitude,latitude);}console.log(lonlat)return this.viewer.entities.add({name: 'distance-line',polyline: {positions: Cesium.Cartesian3.fromDegreesArray(lonlat),width: 2,material: Cesium.Color.RED,// clampToGround: true}});},//逻辑代码如下getLengthText(firstPoint, secondPoint) {// 计算距离var length = Cesium.Cartesian3.distance(firstPoint, secondPoint);if (length > 1000) {length = (length / 1000).toFixed(2) + " 公里";} else {length = length.toFixed(2) + " 米";}return length;},//鼠标移动事件mouseMoveEvent() {var labelEntity = null; // 标签实体this.viewer.screenSpaceEventHandler.setInputAction((moveEvent) => {//var movePosition = this.viewer.scene.pickPosition(moveEvent.endPosition); // 鼠标移动的点var movePosition = this.viewer.scene.globe.pick(this.viewer.camera.getPickRay(moveEvent.endPosition), this.viewer.scene);if(!movePosition){return false;}if (this.positions.length == 2) {this.positions.pop();this.positions.push(movePosition);// 绘制labelif (labelEntity) {this.viewer.entities.remove(labelEntity);this.entityCollection.splice(this.entityCollection.indexOf(labelEntity), 1);}// 计算中点this.centerPoint = Cesium.Cartesian3.midpoint(this.positions[0], this.positions[1], new Cesium.Cartesian3());// 计算距离this.lengthText = "距离:" + this.getLengthText(this.positions[0], this.positions[1]);labelEntity = this.addLabel(this.centerPoint, this.lengthText);this.entityCollection.push(labelEntity);} else {this.positions.push(movePosition);// 绘制线// this.addLine(this.positions);}}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);},//左键点击事件leftClickEvent() {//单击鼠标左键画点点击事件this.viewer.screenSpaceEventHandler.setInputAction(e => {this.leftClickFlag +=1;this.viewer._element.style.cursor = 'default';// 坐标let position = this.viewer.scene.pickPosition(e.position);// 存储第一个点if (!position){return false;}if (this.positions.length == 0) { this.positions.push(position.clone())//添加一个点this.addPoint(position);// 注册鼠标移动事件this.mouseMoveEvent();}else{// 存储第二个点this.positions.pop();this.positions.push(position);this.addPoint(position);this.addLine(this.positions);// 移出事件// this.viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);// this.viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);// this.leftClickFlag = 0;if(this.positions.length == 2){this.positions.length = 0; //置空this.leftClickFlag += 1;}}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);},
mounted(){this.viewer = window.viewer;this.fetchData();
},

第三种方式:自己封装(样式不太好)

  1. 新建一个MeasureTool.js文件,代码如下:
import Cesium from "cesium/Cesium";
import widgets from "cesium/Widgets/widgets.css";export default {//测量空间直线距离/******************************************* */measureLineSpace(viewer, handler) {// 取消双击事件-追踪该位置viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);handler = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection);var positions = [];var poly = null;// var tooltip = document.getElementById("toolTip");var distance = 0;var cartesian = null;var floatingPoint;// tooltip.style.display = "block";handler.setInputAction(function (movement) {// tooltip.style.left = movement.endPosition.x + 3 + "px";// tooltip.style.top = movement.endPosition.y - 25 + "px";// tooltip.innerHTML = '<p>单击开始,右击结束</p>';// cartesian = viewer.scene.pickPosition(movement.endPosition);let ray = viewer.camera.getPickRay(movement.endPosition);cartesian = viewer.scene.globe.pick(ray, viewer.scene);//cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid);if (positions.length >= 2) {if (!Cesium.defined(poly)) {poly = new PolyLinePrimitive(positions);} else {positions.pop();// cartesian.y += (1 + Math.random());positions.push(cartesian);}distance = getSpaceDistance(positions);// console.log("distance: " + distance);// tooltip.innerHTML='<p>'+distance+'米</p>';}}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);handler.setInputAction(function (movement) {// tooltip.style.display = "none";// cartesian = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);// cartesian = viewer.scene.pickPosition(movement.position);let ray = viewer.camera.getPickRay(movement.position);cartesian = viewer.scene.globe.pick(ray, viewer.scene);if (positions.length == 0) {positions.push(cartesian.clone());}positions.push(cartesian);//在三维场景中添加Label//   var cartographic = Cesium.Cartographic.fromCartesian(cartesian);var textDisance = distance + "米";// console.log(textDisance + ",lng:" + cartographic.longitude/Math.PI*180.0);floatingPoint = viewer.entities.add({name: '空间直线距离',// position: Cesium.Cartesian3.fromDegrees(cartographic.longitude / Math.PI * 180, cartographic.latitude / Math.PI * 180,cartographic.height),position: positions[positions.length - 1],point: {pixelSize: 5,color: Cesium.Color.RED,outlineColor: Cesium.Color.WHITE,outlineWidth: 2,},label: {text: textDisance,font: '18px sans-serif',fillColor: Cesium.Color.GOLD,style: Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth: 2,verticalOrigin: Cesium.VerticalOrigin.BOTTOM,pixelOffset: new Cesium.Cartesian2(20, -20),}});}, Cesium.ScreenSpaceEventType.LEFT_CLICK);handler.setInputAction(function (movement) {handler.destroy(); //关闭事件句柄positions.pop(); //最后一个点无效// viewer.entities.remove(floatingPoint);// tooltip.style.display = "none";}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);var PolyLinePrimitive = (function () {function _(positions) {this.options = {name: '直线',polyline: {show: true,positions: [],material: Cesium.Color.CHARTREUSE,width: 10,clampToGround: true}};this.positions = positions;this._init();}_.prototype._init = function () {var _self = this;var _update = function () {return _self.positions;};//实时更新polyline.positionsthis.options.polyline.positions = new Cesium.CallbackProperty(_update, false);viewer.entities.add(this.options);};return _;})();//空间两点距离计算函数function getSpaceDistance(positions) {var distance = 0;for (var i = 0; i < positions.length - 1; i++) {var point1cartographic = Cesium.Cartographic.fromCartesian(positions[i]);var point2cartographic = Cesium.Cartographic.fromCartesian(positions[i + 1]);/**根据经纬度计算出距离**/var geodesic = new Cesium.EllipsoidGeodesic();geodesic.setEndPoints(point1cartographic, point2cartographic);var s = geodesic.surfaceDistance;//console.log(Math.sqrt(Math.pow(distance, 2) + Math.pow(endheight, 2)));//返回两点之间的距离s = Math.sqrt(Math.pow(s, 2) + Math.pow(point2cartographic.height - point1cartographic.height, 2));distance = distance + s;}return distance.toFixed(2);}},//****************************测量空间面积************************************************//measureAreaSpace(viewer, handler){// 取消双击事件-追踪该位置viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);// 鼠标事件handler = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection);var positions = [];var tempPoints = [];var polygon = null;// var tooltip = document.getElementById("toolTip");var cartesian = null;var floatingPoint;//浮动点// tooltip.style.display = "block";handler.setInputAction(function(movement){// tooltip.style.left = movement.endPosition.x + 3 + "px";// tooltip.style.top = movement.endPosition.y - 25 + "px";// tooltip.innerHTML ='<p>单击开始,右击结束</p>';// cartesian = viewer.scene.pickPosition(movement.endPosition);let ray = viewer.camera.getPickRay(movement.endPosition);cartesian = viewer.scene.globe.pick(ray, viewer.scene);//cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid);if(positions.length >= 2){if (!Cesium.defined(polygon)) {polygon = new PolygonPrimitive(positions);}else{positions.pop();// cartesian.y += (1 + Math.random());positions.push(cartesian);}// tooltip.innerHTML='<p>'+distance+'米</p>';}},Cesium.ScreenSpaceEventType.MOUSE_MOVE);handler.setInputAction(function(movement){// tooltip.style.display = "none";// cartesian = viewer.scene.pickPosition(movement.position);let ray = viewer.camera.getPickRay(movement.position);cartesian = viewer.scene.globe.pick(ray, viewer.scene);// cartesian = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);if(positions.length == 0) {positions.push(cartesian.clone());}//positions.pop();positions.push(cartesian);//在三维场景中添加点var cartographic = Cesium.Cartographic.fromCartesian(positions[positions.length - 1]);var longitudeString = Cesium.Math.toDegrees(cartographic.longitude);var latitudeString = Cesium.Math.toDegrees(cartographic.latitude);var heightString = cartographic.height;tempPoints.push({ lon: longitudeString, lat: latitudeString ,hei:heightString});floatingPoint = viewer.entities.add({name : '多边形面积',position : positions[positions.length - 1],point : {pixelSize : 5,color : Cesium.Color.RED,outlineColor : Cesium.Color.WHITE,outlineWidth : 2,heightReference:Cesium.HeightReference.CLAMP_TO_GROUND}});},Cesium.ScreenSpaceEventType.LEFT_CLICK);handler.setInputAction(function(movement){handler.destroy();positions.pop();//tempPoints.pop();// viewer.entities.remove(floatingPoint);// tooltip.style.display = "none";//在三维场景中添加点// var cartographic = Cesium.Cartographic.fromCartesian(positions[positions.length - 1]);// var longitudeString = Cesium.Math.toDegrees(cartographic.longitude);// var latitudeString = Cesium.Math.toDegrees(cartographic.latitude);// var heightString = cartographic.height;// tempPoints.push({ lon: longitudeString, lat: latitudeString ,hei:heightString});var textArea = getArea(tempPoints) + "平方公里";viewer.entities.add({name : '多边形面积',position : positions[positions.length - 1],// point : {//  pixelSize : 5,//  color : Cesium.Color.RED,//  outlineColor : Cesium.Color.WHITE,//  outlineWidth : 2,//  heightReference:Cesium.HeightReference.CLAMP_TO_GROUND// },label : {text : textArea,font : '18px sans-serif',fillColor : Cesium.Color.GOLD,style: Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth : 2,verticalOrigin : Cesium.VerticalOrigin.BOTTOM,pixelOffset : new Cesium.Cartesian2(20, -40),heightReference:Cesium.HeightReference.CLAMP_TO_GROUND}});}, Cesium.ScreenSpaceEventType.RIGHT_CLICK );var radiansPerDegree = Math.PI / 180.0;//角度转化为弧度(rad)var degreesPerRadian = 180.0 / Math.PI;//弧度转化为角度//计算多边形面积function getArea(points) {var res = 0;//拆分三角曲面for (var i = 0; i < points.length - 2; i++) {var j = (i + 1) % points.length;var k = (i + 2) % points.length;var totalAngle = Angle(points[i], points[j], points[k]);var dis_temp1 = distance(positions[i], positions[j]);var dis_temp2 = distance(positions[j], positions[k]);res += dis_temp1 * dis_temp2 * Math.abs(Math.sin(totalAngle)) ;console.log(res);}return (res/1000000.0).toFixed(4);}/*角度*/function Angle(p1, p2, p3) {var bearing21 = Bearing(p2, p1);var bearing23 = Bearing(p2, p3);var angle = bearing21 - bearing23;if (angle < 0) {angle += 360;}return angle;}/*方向*/function Bearing(from, to) {var lat1 = from.lat * radiansPerDegree;var lon1 = from.lon * radiansPerDegree;var lat2 = to.lat * radiansPerDegree;var lon2 = to.lon * radiansPerDegree;var angle = -Math.atan2(Math.sin(lon1 - lon2) * Math.cos(lat2), Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2));if (angle < 0) {angle += Math.PI * 2.0;}angle = angle * degreesPerRadian;//角度return angle;}var PolygonPrimitive = (function(){function _(positions){this.options = {name:'多边形',polygon : {hierarchy : [],// perPositionHeight : true,material : Cesium.Color.GREEN.withAlpha(0.5),// heightReference:20000}};this.hierarchy = positions;this._init();}_.prototype._init = function(){var _self = this;var _update = function(){return _self.hierarchy;};//实时更新polygon.hierarchythis.options.polygon.hierarchy = new Cesium.CallbackProperty(_update,false);viewer.entities.add(this.options);};return _;})();function distance(point1,point2){var point1cartographic = Cesium.Cartographic.fromCartesian(point1);var point2cartographic = Cesium.Cartographic.fromCartesian(point2);/**根据经纬度计算出距离**/var geodesic = new Cesium.EllipsoidGeodesic();geodesic.setEndPoints(point1cartographic, point2cartographic);var s = geodesic.surfaceDistance;//console.log(Math.sqrt(Math.pow(distance, 2) + Math.pow(endheight, 2)));//返回两点之间的距离s = Math.sqrt(Math.pow(s, 2) + Math.pow(point2cartographic.height - point1cartographic.height, 2));return s;}}}
  1. 引用MeasureTool.js文件,并调用测量方法:
<template><div id="cesiumContainer"></div>
</template><script>import MeasureTool from '../../public/js/MeasureTool'export default {name: 'CeLiang',components: {},data(){return{}},mounted() {let viewer = new Cesium.Viewer('cesiumContainer');//测量距离MeasureTool.measureLineSpace(viewer, null);//测量面积MeasureTool.measureAreaSpace(viewer, null);}}
</script><style>#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}
</style>
  1. 效果
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/136551.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL使用C语言链接

MySQL使用C语言链接 MySQL connect接口介绍mysql_initmysql_real_connectmysql_querymysql_store_result\mysql_use_result()mysql_num_rowsmysql_num_fieldsmysql_fetch_fieldsmysql_fetch_rowmysql_close MySQL connect 使用C语言来连接数据库&#xff0c;本质上就是利用一些…

电脑桌面的复选框如何取消

电脑桌面图标的复选框如何取消 1. 概述2. 去掉图标的复选框方法结束语 1. 概述 当你拿到新的电脑开机后&#xff0c;发现桌面上软件应用的图标左上角有个小框&#xff0c;每次点击图标都会显示&#xff0c;并且点击图标时&#xff0c;小框还会打上√&#xff1b; 这个小框的…

成功解决Selenium 中116版本的chromedriver找不到问题

Selenium 中的Google&#xff08;谷歌浏览器&#xff09;最新版本chromedriver 文章目录 Selenium 中的Google&#xff08;谷歌浏览器&#xff09;最新版本chromedriver1.当前作者的谷歌浏览器版本2.当前驱动官网的最新版本3.当不想降低浏览器版本继续使用谷歌浏览器的办法 1.当…

《计算机视觉中的多视图几何》笔记(5)

5 Algorithm Evaluation and Error Analysis 本章主要讲述对算法的验证和误差分析。 概述了两种计算这种不确定性&#xff08;协方差&#xff09;的方法。第一个基于线性近似值&#xff0c;涉及串联各种雅各布表达式&#xff0c;第二个是更容易实施蒙特卡洛方法。 文章目录 …

Linux——IO

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——文件系统 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;是不是只有C/C有文件操作呢&#xff1f;python&#xff0c;java&…

Ubuntu安装中文拼音输入法

ubuntu安装中文拼音输入法 ubuntu版本为23.04 1、安装中文语言包 首先安装中文输入法必须要让系统支持中文语言&#xff0c;可以在 Language Support 中安装中文语言包。 添加或删除语音选项&#xff0c;添加中文简体&#xff0c;然后会有Applying changes的对话框&#x…

源码编译Qt 5.15.9+msvc2019

官方文档里给出了详细步骤&#xff1a; Building Qt Sources Building Qt 5 from Git (Wiki) 注&#xff1a;本文基于windows11vs2019x64qt5.15.9&#xff0c;不编译Qt WebEngine 归纳总结如下&#xff1a; 准备阶段 Qt for Windows - Requirements 安装python&#xff0c;…

逼自己看完,Redis的事务你就掌握了!!!

目录 1、对于事务的理解 1.1、回顾MySQL的事务 1.2、Redis的事务 2、事务命令使用 3、watch的实现原理 3.1、watch用来干什么的&#xff1f; 3.2、watch的实现原理 1、对于事务的理解 1.1、回顾MySQL的事务 在MySQL中&#xff0c;事务有4个特性&#xff1a; 原子性&a…

MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办

方法1&#xff1a; 在mybatis核心配置文件中指定&#xff0c;springboot加载mybatis核心配置文件 springboot项目的一个特点就是0配置&#xff0c;本来就省掉了mybatis的核心配置文件&#xff0c;现在又加回去算什么事&#xff0c;总之这种方式可行但没人这样用 具体操作&…

详细介绍如何微调 YOLOv8 姿势模型以进行动物姿势估计--附完整源码

动物姿势估计是计算机视觉的一个研究领域,是人工智能的一个子领域,专注于自动检测和分析图像或视频片段中动物的姿势和位置。目标是确定一只或多只动物身体部位的空间排列,例如头部、四肢和尾巴。这项技术具有广泛的应用,从研究动物行为和生物力学到野生动物保护和监测。 …

【LeetCode-中等题】107. 二叉树的层序遍历 II

文章目录 题目方法一&#xff1a;队列层序迭代 题目 方法一&#xff1a;队列层序迭代 解题详情&#xff1a;【LeetCode-中等题】102. 二叉树的层序遍历 res.add(0,zres); //效果是将 zres 列表作为 res 的第一个子列表&#xff0c;并将其它原本在第一位置及之后的子列表向后移…

Python项目开发:Flask基于Python的天气数据可视化平台

目录 步骤一&#xff1a;数据获取 步骤二&#xff1a;设置Flask应用程序 步骤三&#xff1a;处理用户输入和数据可视化 步骤四&#xff1a;渲染HTML模板 总结 在这个数字化时代&#xff0c;数据可视化已经成为我们理解和解释信息的重要手段。在这个项目中&#xff0c;我们…

JavaScript速成课—事件处理

目录 一.事件类型 1.窗口事件 2.表单元素事件 3.图像事件 4.键盘事件 5.鼠标事件 二.JavaScript事件处理的基本机制 三.绑定事件的方法 1.DOM元素绑定 2.JavaScript代码绑定事件 3.监听事件函数绑定 四.JavaScript事件的event对象 1.获取event对象 2.鼠标坐标获取…

下载HTMLTestRunner并修改

目录 一. 下载HTMLTestRunner 二. 修改HTMLTestRunner 1. 修改内容 2. 修改原因 一. 下载HTMLTestRunner 下载报告模板地址:http://tungwaiyip.info/software/HTMLTestRunner.html 下载模块&#xff1a; 二. 修改HTMLTestRunner 将修改后的模块放到python安装目录下的..…

Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果

相信大家都已经听说过&#xff0c;明年的 Harmony Next 版本将正式剥离 AOSP 支持 &#xff0c;基于这个话题我已经做过一期问题汇总 &#xff0c;当时在现有 App 如何兼容 Harmony Next 问题上提到过&#xff1a; 华为内部也主导适配目前的主流跨平台方案&#xff0c;主动提供…

QT在安装后添加新组件【QT基础入门 环境搭建】

一、Qt的安装目录下找到MaintenanceTool工具 二、双击该exe文件运行该工具(界面可能不相同但功能一样) 登录账号,进入以下界面,点击下一步 选择更新组件,出现以下提示 三、此时需要手动添加储存库 1.进入下面网站,选择一个国内镜像 Qt Downloads 点击后面的HTTP可进入…

info文档与man手册

man 手册 man --version# 查看版本 man 2 socket# 查看section2中的socket yum install man-pages# 更新man手册man -f socket# 列出所有章节的socket # man -f刚开始使用的时候不显示 # centos7执行mandb命令,7以下的版本执行makewhatis命令 # 之后执行man -f就生效了 [rootk…

Jmeter —— 常用的几种断言方法(基本用法)

在使用JMeter进行性能测试或者接口自动化测试工作中&#xff0c;经常会用到的一个功能&#xff0c;就是断言&#xff0c;断言相当于检查点&#xff0c;它是用来判断系统返回的响应结果是否正确&#xff0c;以此帮我们判断测试是否通过&#xff0c;本文 主要介绍几种常用的断言&…

计算机算法分析与设计(3)---循环赛日程表(含代C++码)

循环赛日程表 一、内容概述二、代码实现2.1 分治代码2.2 结果图 一、内容概述 二、代码实现 2.1 分治代码 // 循环赛日程表 #include<iostream> #include<cmath> using namespace std;void schedule(int k, int n, int** array) // 数组下标从1开始 {for (int …

数字孪生基础设施需求分析

数字孪生基础设施需求分析 “基础设施”&#xff08;infrastructure&#xff09;新型基础设施建设 “基础设施”&#xff08;infrastructure&#xff09; 一词最早于1875年在法文中出现&#xff0c;但该词汇由拉丁文构成&#xff0c;infrastructure分为infra&#xff08;拉丁文…