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;
}

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

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

相关文章

单元测试 —— JUnit 5 参数化测试

JUnit 5参数化测试 目录 设置我们的第一个参数化测试参数来源 ValueSourceNullSource & EmptySourceMethodSourceCsvSourceCsvFileSourceEnumSourceArgumentsSource参数转换参数聚合奖励总结 如果您正在阅读这篇文章&#xff0c;说明您已经熟悉了JUnit。让我为您概括一下…

Web 基础概念

自己总结的web前端知识体系大全 基础概念 DOM DOM是什么意思-前端入门_dom是什么意思啊_猿说前端的博客-CSDN博客 DOM的含义&#xff1a; DOM称为文件对象模型&#xff08;DocumentObjectModel&#xff0c;简称DOM&#xff09;&#xff0c;是W3C组织推荐的处理可扩展置标语言的…

hanoi塔问题

汉诺塔 5层攻略31步_哔哩哔哩_bilibili 问题描述&#xff1a; n阶Hanoi塔问题&#xff0c;假设有3个分别命名为A、B、C塔座&#xff0c;在塔座A上插有n个直径大小各不相同、依小到大的圆盘。现要求将A轴上的n个圆盘移动至塔座C上并按同样顺序叠排&#xff0c;圆盘移动时必须遵…

【Linux】生产消费模型 + 线程池

文章目录 &#x1f4d6; 前言1. 生产消费模型2. 阻塞队列2.1 成员变量&#xff1a;2.2 入队(push)和出队(pop)&#xff1a;2.3 封装与测试运行&#xff1a;2.3 - 1 对代码进一步封装2.3 - 2 分配运算任务2.3 - 3 测试与运行 3. 循环阻塞队列3.1 POSIX信号量&#xff1a;3.1 - 1…

VRRP DHCP ACL NAT 网络核心路由技术综述 (第十课)

VRRP DHCP ACL NAT 网络核心技术综述 (第十课) 六大路由基础技术 简单的利用思维导图回顾 1 浮动路由 2 VRRP 技术==>目的是备份网关

阿里云Stable Diffusion操作教程

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 Stable Diffusion是⼀种深度学习模型,主要⽤于将⽂本描述转化为详细的图像,也可以应⽤于其他图像处理任务 。 这个模型由创业公司Stability AI 与学术研究者合作开发,使⽤了⼀种称为潜在扩散模型(LDM)的扩散模型…

基于UWB技术高精度人员定位系统源码

一、UWB定位技术有什么优势&#xff1f; UWB技术解决了困扰传统无线通信技术多年的有关传播方面的重大难题&#xff0c;具有对信道衰落不敏感、发射信号功率谱密度低、截获率低、系统复杂度低、能提供数厘米的定位精度等优点。 1.系统结构简单 UWB系统中的发射器直接用脉冲小…

28.CSS 渐变圆文本动画

效果 源码 index.html <!doctype html> <html> <head><meta charset="utf-8"><title>Glowing Gradient Circle Text Animation</title><link rel="stylesheet" href="style.css"> </head> &l…

联想电脑打开exe提示要在Microsoft Store中搜索应用

问题&#xff1a; 你需要为此任务安装应用。 是否要在Microsoft Store中搜索一个&#xff1f; 如图&#xff1a; 出现此情况&#xff0c;仅需要做如下操作&#xff0c;在要打开的exe文件上右键&#xff0c;属性&#xff1a; 如图箭头所示&#xff0c;点击“解除锁定”出现对钩&…

LPA*算法图文详解

之前我们看过了A* 算法&#xff0c;知道了A* 算法的基本原理&#xff0c;但是A* 算法的缺陷也很明显&#xff1a;它是离线的路径规划算法&#xff0c;只能一次规划出路径&#xff0c;但是后面路径被改变的话就无法生效了。针对这个问题&#xff0c;人们研究出了D* 算法。D* 算法…

基于FFmpeg+SDL的视频播放器的制作

基于FFmpegSDL的视频播放器的制作 基于FFmpegSDL的视频播放器的制作实验1实验2实验3实验4基本练习进阶练习 基于FFmpegSDL的视频播放器的制作 雷霄骅博士的课程。 课程链接&#xff1a;https://blog.csdn.net/leixiaohua1020/article/details/47068015 初学 FFmpeg&#xff…

Coovally模型探索:快速获取并应用MMDetection模型

Coovally作为一个帮助用户快速落地机器视觉解决方案的平台&#xff0c;用户可以管理数据集、自动训练以及部署模型。 Coovally现已支持图像、文本、表格、时间序列等不同类型数据的深度学习和应用&#xff0c;快速实现机器学习。实现目标检测、图像分割、文本分类、多模态建模…

计算机毕设 基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;…

J2L3x:优秀的即时通讯交流工具

即时通讯交流工具是现今互联网上使用最广泛的工作工具之一。这种类型的软件可以帮助工作人员快速、方便地与同事进行交流、分享和讨论&#xff0c;从而使团队的工作效率更高。J2L3x是一个被广泛使用的即时通讯交流工具之一&#xff0c;下面我们来详细介绍一下它的优点。 首先…

AxureRP制作静态站点发布互联网,实现公网访问【内网穿透】

AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问 文章目录 AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4…

基于springboot+vue的信息技术知识赛系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

蓝桥杯备赛-上学迟到

上学迟到 P5707 【深基2.例12】上学迟到 - 洛谷 |https://www.luogu.com.cn/problem/P5707 题目介绍 题目描述 学校和 yyy 的家之间的距离为 s 米&#xff0c;而 yyy 以v 米每分钟的速度匀速走向学校。 在上学的路上&#xff0c;yyy 还要额外花费 1010 分钟的时间进行垃圾分…

【LeetCode-简单题】110. 平衡二叉树

文章目录 题目方法一&#xff1a;后序递归 题目 方法一&#xff1a;后序递归 递归遍历的同时判断是否是平衡二叉树&#xff0c;如果不是&#xff0c;就置为-1&#xff0c;如果是 就正常做递归求最大深度 参考图解网址 判断平衡二叉树 class Solution {public boolean isBalanc…

实现安全的服务通信:探索如何使用服务网格来确保服务间的安全通信

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

计算机IO原理

一、中断机制 在IO处理中有2种思路&#xff0c;一种就是轮训&#xff08;polling&#xff09;机制&#xff0c;一种是中断(interrupt)机制&#xff0c;前置是一种同步的通信机制&#xff0c;不是计算机中IO采用的机制&#xff0c;我们重点来说明中断机制。 CPU停下当前的工作…