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.xdnf.cn/news/140892.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AI AIgents时代 - (四.) HuggingGPT MetaGPT

&#x1f7e2; HuggingGPT HuggingGPT是一个多模型调用的 Agent 框架&#xff0c;利用 ChatGPT 作为任务规划器&#xff0c;根据每个模型的描述来选择 HuggingFace 平台上可用的模型&#xff0c;最后根据模型的执行结果生成总结性的响应。 这个项目目前已在 Github 上开源&am…

获取文件创建时间

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Java源码 public void testGetFileTime() {try {String string "E://test.txt";File file new File(string);Path path file.toPath();BasicFileAttributes ba…

vscode终端中打不开conda虚拟包管理

今天&#xff0c;想着将之前鸽的Unet网络模型给实现一下&#xff0c;结果发现&#xff0c;在vscode中运行python脚本&#xff0c;显示没有这包&#xff0c;没有那包。但是在其他的ipynb中是有的&#xff0c;感觉很奇怪。我检查了一下python版本&#xff0c;发现不是我深度学习的…

neo4j下载安装配置步骤

目录 一、介绍 简介 Neo4j和JDK版本对应 二、下载 官网下载 直接获取 三、解压缩安装 四、配置环境变量 五、启动测试 一、介绍 简介 Neo4j是一款高性能的图数据库&#xff0c;专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构&#xff0c;非常适用于…

MySQL学习笔记13

DISTINCT数据去重&#xff1a; 案例&#xff1a;获取tb_student学生表学员年龄的分布情况。 mysql> select * from tb_student; ------------------------------------------------- | id | name | age | gender | address | --------------------------…

Echarts散点图筛选新玩法dataZoom

目录 前言 一、引入Echarts5.4.3 二、新建index.html 三、绑定Echarts展示元素 四、初始数据绑定 五、option设置 六、效果展示 七、参数说明 总结 前言 如果您在日常的工作当中也会遇到如下场景&#xff0c;需要在线对已经展示出来的图表进行进一步的筛选&#xff0c…

DATE和LocalDateTime在Java中有什么区别

在Java中&#xff0c;Date和LocalDateTime是两个表示日期和时间的类&#xff0c;它们有以下区别&#xff1a; 类型&#xff1a;Date是Java旧版提供的日期和时间类&#xff0c;而LocalDateTime是Java 8引入的新日期和时间API中的类。 不可变性&#xff1a;Date是可变类&#x…

寻找单身狗

在一个数组中仅出现一次&#xff0c;其他数均出现两次&#xff0c;这个出现一次的数就被称为“单身狗“。 一.一个单身狗 我们知道异或运算操作符 ^ &#xff0c;它的特点是对应二进制位相同为 0&#xff0c;相异为 1。 由此我们容易知道两个相同的数,进行异或运算得到的结果…

AcWing 5153. 删除(AcWing杯 - 周赛)(结论+枚举)

思路&#xff1a; ACcode: #include<bits/stdc.h> using namespace std; #define int long long string s; void solve() {cin>>s;s"00"s;int lens.size();for(int i0; i<len; i) {for(int ji1; j<len; j) {for(int kj1; k<len; k) {int xs[i]*…

Learn Prompt-经验法则

还记得我们在“基础用法”当中提到的三个经验法则吗&#xff1f; 尝试提示的多种表述以获得最佳结果使用清晰简短的提示&#xff0c;避免不必要的词语减少不精确的描述 现在经过了几页的学习&#xff0c;我认为是时候引入一些新的原则了。 3. 一个话题对应一个chat​ ChatG…

物联网安全优秀实践:2023年设备保护指南

物联网的发展可谓是革命性的&#xff0c;数十亿台设备实时互连、通信和共享数据。因此&#xff0c;考虑物联网安全的最佳实践至关重要。 物联网的重要性日益上升 在数字时代&#xff0c;物联网(IoT)已成为一股革命力量&#xff0c;重塑了企业运营和个人生活方式。从调节家庭温…

【软件设计师-从小白到大牛】上午题基础篇:第三章 数据库系统

文章目录 前言章节提要一、三级模式两级映射真题链接 二、数据库的设计过程真题链接 三、E-R模型真题链接 四、关系代数SQL基础&#xff08;补充&#xff09; 五、规范化理论1、函数依赖2、价值与用途3、键4、范式5、模式分解 六、并发控制真题链接分布式数据库特点&#xff08…

MySQL查询(基础到高级)

目录 一、单表查询&#xff1a; 1.基本查询&#xff1a; 1.1 查询多个字段&#xff1a; 1.2 去除重复记录&#xff1a; 2. 条件查询&#xff1a; 2.1 语法 2.2 条件分类&#xff1a; 比较运算符&#xff1a; between..and..使用示例&#xff1a; ​编辑 in(..) 使用示例&…

作业 练习题

内科护理学 参考试题 一、单项选择题&#xff08;每题2分&#xff0c;共100分&#xff09; 1.由于心排出量突然下降而出现的晕厥称为( )。 A.心脏骤停 B.病窦综合征 C.阿一斯综合征 D.倾倒综合征 2.护理服用洋地黄制剂的患者时&#xff0c;下列措施错误的是( )。 A.给洋地…

MasterAlign相机参数设置-曝光时间调节

相机参数设置-曝光时间调节操作说明 相机参数的设置对于获取清晰、准确的图像至关重要。曝光时间是其中一个关键参数&#xff0c;它直接影响图像的亮度和清晰度。以下是关于曝光时间调节的详细操作步骤&#xff0c;以帮助您轻松进行设置。 步骤一&#xff1a;登录系统 首先&…

JeecgBoot v3.5.5 版本发布,性能大升级版本—开源免费的低代码开发平台

项目介绍 JeecgBoot是一款企业级的低代码平台&#xff01;前后端分离架构 SpringBoot2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

【C++】布隆过滤器简单操纵模拟以及常见题目

&#x1f30f;博客主页&#xff1a; 主页 &#x1f516;系列专栏&#xff1a; C ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f60d;期待与大家一起进步&#xff01; 文章目录 前言一、求下标仿函数的建议二、布隆过滤器代码面试题1.近似算法&#xff1a;2.精确算…

链表的分割——哨兵位

现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排列后的链表的头指针。 思路&#xff0c;把链表分成两个新链表&#xff0c;然后连接起来 代码…

MySQL---优化日志

目录 一、MySQL优化 3、mysql server上的优化 3.1、MySQL查询缓存 3.2、索引和数据缓存 3.2、线程缓存 二、MySQL日志 2.1、redo log 重做日志 2.2、undo log 回滚日志 2.3、错误日志 2.4、查询日志 2.5、二进制日志 2.5.1、基于binlog数据恢复实践操作 六、慢查…

mysql 5.7 修改密码

为了提高安全性 mysql5.7中user表的password字段已被取消&#xff0c;取而代之的事 authentication_string 字段&#xff0c;当然我们更改用户密码也不可以用原来的修改user表来实现了。下面简绍几种mysql5.7下修改root密码的方法&#xff08;其他用户也大同小异&#xff09;。…