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

Qt地铁智慧换乘系统浅学( 一 )存储站点,线路信息

存储

  • 定义所需要的容器
  • 定义最大最小经纬度
  • [统计站点信息 在经纬度网站](https://map.jiqrxx.com/jingweidu/)
  • 读取统计的信息存储到容器
  • 其他的一些相关函数
    • debug 显示存储的信息
    • 更新最小最大经纬度的函数
    • 获取两点之间的距离 根据经纬度

定义所需要的容器

extern QMap<QString,node> Station; //画图使用
extern QMap<QString,QList<QString> > edge; // 跑最短路
extern QMap<QString,QSet<QString> > Station_Line; // 站点所属线路总
extern QMap<QString,QColor> LineColor;  //  线路颜色
extern QMap<QString,QMap<QString,int> >dp; //两站点之间的距离;
extern QMap<QString,QMap<QString,QSet<QString> > >mp; //两站站点共同的线路

定义最大最小经纬度

extern double minLongi;
extern double minLati;
extern double maxLongi;
extern double maxLati;

统计站点信息 在经纬度网站

在这里插入图片描述
统计如下
在这里插入图片描述

读取统计的信息存储到容器

void infoinit(){QFile file(":/src/lineQD.txt");file.open(QIODevice::ReadOnly);if(!file.isOpen()){qDebug()<<"error open";return ;}QTextStream in(&file);QString buffer;QString Name;QString Color;int Num;while(true){in>>buffer>>buffer;if(in.atEnd()) break;in>>buffer>>buffer; // line name;Name = buffer;in>>buffer>>buffer; // line colorColor = buffer;in>>buffer>>buffer; // startin>>buffer;         // endin>>buffer>>buffer; // station numNum = buffer.toInt();/*extern QMap<QString,node> Station; //画图使用extern QMap<QString,QList<QString> > edge; // 跑最短路extern QMap<QString,QSet<QString> > Station_Line; // 站点所属线路总extern QMap<QString,QString> LineColor;  //  线路颜色*/node stal[100];for(int i=0;i<Num;i++){  // 存储站点信息,存储站点所属线路in>>buffer>>stal[i].name>>stal[i].e>>stal[i].n;updateBound(stal[i].e,stal[i].n);qDebug()<<stal[i].name<<stal[i].e<<stal[i].n<<"\n";qDebug()<<maxLati<<" "<<maxLongi<<" "<<minLati<<" "<<minLongi<<"\n";Station[stal[i].name] = stal[i];Station_Line[stal[i].name].insert(Name);}node sta,laststa;for(int i=0;i<Num;i++){  //存储边if(i>=1) { edge[stal[i].name].append(stal[i-1].name); dp[stal[i].name][stal[i-1].name]=getDistance(stal[i].name,stal[i-1].name);mp[stal[i].name][stal[i-1].name].insert(Name);}if(i<Num-1) { edge[stal[i].name].append(stal[i+1].name); dp[stal[i].name][stal[i+1].name]=getDistance(stal[i].name,stal[i+1].name);mp[stal[i].name][stal[i+1].name].insert(Name);}}LineColor[Name] = QColor(Color);   // 存储线路颜色}for(auto i:Station.keys()) {Station[i].coord.setX((Station[i].n-minLongi)/(maxLongi-minLongi)*1000+30);Station[i].coord.setY((Station[i].e-minLati)/(maxLati-minLati)*500+30);qDebug()<<Station[i].coord<<"\n";}return;
}

其他的一些相关函数

debug 显示存储的信息

void ddebug(){qDebug()<<"all station\n";QString s;for(auto &i:Station.keys()) {qDebug()<<Station[i].name<<" "<<Station[i].e<<" "<<Station[i].w<<" ";s=*Station_Line[i].begin();if(Station_Line[i].size()!=1)  qDebug()<<"black  ";}
}

更新最小最大经纬度的函数

void updateBound(const double lati,const double longi){if(minLati>lati)minLati=lati;if(maxLati<lati)maxLati=lati;if(minLongi>longi)minLongi=longi;if(maxLongi<longi)maxLongi=longi;
}

获取两点之间的距离 根据经纬度

int getDistance(const QString sta1,const QString sta2){const double EARTH_RADIUS = 6378.137;double rlati1 = Station[sta1].w * M_PI / 180;double rlati2 = Station[sta2].w * M_PI / 180;double rlongi1 = Station[sta1].e * M_PI / 180;double rlongi2 = Station[sta2].e * M_PI / 180;double vlongi = abs(rlongi1-rlongi2);double vlati = abs(rlati1-rlati2);double h = HaverSin(vlati)+cos(rlati1)*cos(rlati2)*HaverSin(vlongi);double ret = 2*EARTH_RADIUS*asin(sqrt(h));return (int)(ret*1000);
}
double HaverSin(double theta)
{double v = sin(theta / 2);return v * v;
}

相关文章:

Qt地铁智慧换乘系统浅学( 一 )存储站点,线路信息

存储 定义所需要的容器定义最大最小经纬度[统计站点信息 在经纬度网站](https://map.jiqrxx.com/jingweidu/)读取统计的信息存储到容器其他的一些相关函数debug 显示存储的信息更新最小最大经纬度的函数获取两点之间的距离 根据经纬度 定义所需要的容器 extern QMap<QStrin…...

Python之xToolkit库

文章目录 一、xToolkit是什么&#xff1f;二、准备工作1.引入库2.导入数据 三、使用时间模块-xdatetime判断时间格式是否正确get方法获取时间戳获取年月日时分秒时间推移计算时间替换时间扩展两个时间的差值开始与结束时间时间是否在指定区间中 字符串模块-xstring字符串格式校…...

2w+深度梳理!全网最全NLP面试题总结!

目录 技术交流群 1、命名实体识别常见面试篇2、关系抽取常见面试篇3、事件抽取 常见面试篇4、NLP 预训练算法常见面试篇5、Bert 常见面试篇6、文本分类 常见面试篇7、文本匹配 常见面试篇8、问答系统常见面试篇FAQ 检索式问答系统常见面试篇问答系统工具篇常见面试篇 9、对话系…...

Spring 学习(五)JavaConfig 实现配置

1. 使用 JavaConfig 实现配置 JavaConfig 是 Spring 项目的一个子项目&#xff0c;Spring 4 后成为核心功能。 注意&#xff1a; 如果开启包扫描&#xff0c;加载配置类以后就可以通过反射拿到配置类中的对象了。Bean 只写在方法上&#xff0c;返回的是一个对象&#xff0c;但…...

【Synapse数据集】Synapse数据集介绍和预处理,数据集下载网盘链接

【Segment Anything Model】做分割的专栏链接&#xff0c;欢迎来学习。 【博主微信】cvxiaoyixiao 本专栏为公开数据集的介绍和预处理&#xff0c;持续更新中。 文章目录 1️⃣Synapse数据集介绍文件结构源文件样图文件内容 2️⃣Synapse数据集百度网盘下载链接官网下载登录下…...

【运动规划算法项目实战】Dynamic Window Approach算法(附ROS C++代码)

文章目录 前言一、简介1.1 DWA算法原理1.2 DWA算法的应用场景1.4 DWA算法的优缺点1.4.1 优点1.4.2 缺点二、代码实现2.1 算法细节2.1.1 DWA的控制输入:2.1.2 动态窗口的计算2.1.3 评价函数的优化2.2 程序说明2.21 PathGenerator2.2.2 WaypointAction2.2.3 使用方法2.3 代码演示…...

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…...

Unity 场景淡入淡出效果

一. 使用Dotween&#xff0c;建议使用我的方式 FindObjectOfType<SceneFadeInAndOut>().FadeIn(() > { Debug.Log("Fade in MenuStart Scene"); }); using DG.Tweening; using System; using System.Numerics; using UnityEngi…...

快速使用Spring Cache

哈喽~大家好&#xff0c;这篇我们来看看快速使用Spring Cache。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; R…...

Scrum敏捷开发培训内训:提升团队能力和效率的重要途径

在当今软件开发领域&#xff0c;Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础&#xff0c;注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发&#xff0c;培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通…...

kaggle新赛:Optiver 美股价格预测赛题解析

赛题名称&#xff1a;Optiver - Trading at the Close 赛题链接&#xff1a;https://www.kaggle.com/competitions/optiver-trading-at-the-close 赛题背景 证券交易所是快节奏、高风险的环境&#xff0c;每一秒都很重要。随着交易日接近尾声&#xff0c;强度不断升级&#…...

Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications

环境Vue3 Ts 使用了el-table 后&#xff0c;容易出现如下错误 ERROR ResizeObserver loop completed with undelivered notifications. at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58) at eval (webpack-internal:///./nod…...

Wi-Fi直连分享:Android设备间的高速连接

Wi-Fi直连分享&#xff1a;Android设备间的高速连接 引言 随着无线局域网&#xff08;Wi-Fi&#xff09;的普及和发展&#xff0c;使用Wi-Fi直连技术&#xff08;P2P&#xff09;在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连&#xff0c;具备相应硬件…...

LeetCode 面试题 05.06. 整数转换

文章目录 一、题目二、Java 题解 一、题目 整数转换。编写一个函数&#xff0c;确定需要改变几个位才能将整数A转成整数B。 示例1: 输入&#xff1a; A 29 &#xff08;或者0b11101&#xff09;, B 15&#xff08;或者0b01111&#xff09; 输出&#xff1a; 2 示例2: 输入&a…...

增强for循环和一般for循环的对比使用

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 &#xff0c;视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘…...

云原生之使用Docker部署RSS阅读器Huntly

云原生之使用Docker部署RSS阅读器Huntly 一、Huntly介绍1.1 Huntly简介1.2 Huntly功能2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Huntly镜像五、部署Huntly5.1 创建挂载目录5.2 创建Hun…...

Powershell 实现禁用密码复杂性,空密码

前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…...

【c语言】详解动态内存管理

目录 关于动态内存分配malloc和calloc函数介绍动态内存回收----freerealloc函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…...

深度学习概念——端对端

目录 1、端对端是什么2、端对端有什么用3、例子4、引用 在读论文的过程中反复遇到端对端的概念&#xff0c;就需要理解深刻一些。在此将收集到的一些资料拿出来辅以自己的拙见&#xff0c;请大家多多批评指正&#xff01; 1、端对端是什么 在计算机学科中有一种算法叫分治法&a…...

苹果触控笔有必要买吗?平价ipad电容笔推荐

其实&#xff0c;市面上的数码类产品很多&#xff0c;有的侧重于美观&#xff0c;有的侧重于功能&#xff0c;有的侧重于性能。与iPad平板电脑搭配使用的电容笔同样也如此。因此&#xff0c;在选购电容笔时&#xff0c;一定要了解有关电容笔的知识。在购买之前&#xff0c;一定…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...