[MiluGPS]为MiluGPS增加显示兴趣点的功能

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC 阅读详情

地标名称,类别(预留),经度,纬度

纯文本格式,一行一个兴趣点,保存于Map文件夹中,文件名为POI.txt。

现在文件名为固定形式,今后再增加可以多种类别的兴趣点,并由用户设置要加载哪些兴趣点


 1汕头市澄海区工商局,2,116.76421,23.45816
 2汕头市澄海区环卫局,2,116.76378,23.45271
 3汕头市澄海区劳动局,2,116.76305,23.45636
 4汕头市澄海区物资局,2,116.7628,23.45649
 5聚星新形象美发连锁沙龙,2,116.74684,23.44001
 6鹏发美容美发,2,116.76734,23.45379
 7亚洲人美容美发形象设计中心,2,116.76313,23.45705
 8银都,2,116.76254,23.4561
 9中国移动莱美服务厅,2,116.76395,23.45512
10中国网通中山南路营业厅,2,116.76326,23.45675
11中国铁通外砂营业厅,2,116.74881,23.44344
12吉成手机大卖场,2,116.76451,23.45898
13狮龙手机连锁店外砂大卖场,2,116.74941,23.43482

加载兴趣点:

 1        /// <summary>
 2        /// 兴趣点
 3        /// </summary>

 4        public List<POI> PoiPoint = new List<POI>();
 5
 6        /// <summary>
 7        /// 载入兴趣点
 8        /// </summary>

 9        public void LoadPOI() {
10
11            //判断 地图的路径是否存在.
12            if (_MapPath == "" || _MapPath == null) return;
13            //载入兴趣点数据
14            StreamReader srRut = new StreamReader(MapPath + "//POI.txt", System.Text.Encoding.Default);
15            //StreamReader srRut = new StreamReader(MapPath + "//Cities.poi", System.Text.Encoding.Default);
16
17            //清除原来的兴趣点列表
18            PoiPoint.Clear();
19
20            //测试性能
21            int t = Environment.TickCount;
22
23            //调取一行
24            string line = srRut.ReadLine();
25            string[] p;
26            Point pnt;
27
28            while (line != null) {
29                //把读入的一行文本分离成数组
30                p = line.Split(',');
31                //分离后的数组长度至少大于3个
32                if (p.Length >= 4) {
33                    try {
34                        //把经纬度转为坐标点
35                        pnt = ConvertLatLonToXY(p[3], p[2]);
36                        //如果坐标点在当前的地图范围内,贴添加到兴趣点列表中
37                        if(pnt.X>0 && pnt.Y>0 && pnt.X<map.RefPoint2.x&&pnt.Y<map.RefPoint2.y){
38                            PoiPoint.Add(new POI(p[0], Convert.ToInt32(p[1]),pnt));
39                        }

40                    }
 catch {
41                    }

42                }

43                line = srRut.ReadLine();
44            }

45            srRut.Close();
46
47            System.Diagnostics.Debug.WriteLine("Load POI TickCounts:" + (Environment.TickCount - t));
48        }

显示兴趣点:

利用GDI+的DrawString输出兴趣点。
遍厉兴趣点,判断兴趣点是否在当前的缓存地图上,如果是,判断当前的文本输范围是否与"已存在的文本范围"重叠,不重叠的话,刚输出兴趣点的文本。并把当前的文本范围添加到"已存在的文本范围"列表中。

 

 1        /// <summary>
 2        /// 画兴趣点
 3        /// </summary>
 4        /// <param name="g"></param>

 5        public void DrawPOI(Graphics g) {
 6
 7            if (PoiPoint.Count > 0) {
 8
 9                Font font = new Font("Nina", 12F, FontStyle.Regular);
10                SolidBrush br = new SolidBrush(Color.Red);
11                int px = 0;
12                int py = 0;
13                int bmpWidth = bmp.Width;
14                int bmpHeight = bmp.Height;
15                int t= Environment.TickCount;
16
17
18                List<Rectangle> rects = new List<Rectangle>();
19                Rectangle rect = new Rectangle();
20                bool isIntersect=false;
21
22                foreach (POI p in PoiPoint) {
23
24                        px = p.Longitude - MapCol * ImageTileWidth;
25                        py = p.Latitude - MapRow * ImageTileWidth - 4;
26                        if (px < 0 || py < 0 || px > bmpWidth || py > bmpHeight) {
27                            //上面的条件落在缓存图片之外
28                        }
 else {
29
30                            //测试文字区域
31                            rect.Size = g.MeasureString(p.Name, font).ToSize();
32                            rect.X = px;
33                            rect.Y = py;
34                            isIntersect = false;
35                            //判断是否与已有的文字区域相交
36                            foreach (Rectangle r in rects) {
37                                if (rect.IntersectsWith(r)) {
38                                    isIntersect = true;
39                                    break;
40                                }
                            
41                            }

42
43                            //如果不相交,输出文字,并把该方框添加到方框列表中
44                            if (!isIntersect) {
45                                g.DrawString(p.Name, font, br, px, py);
46                                rects.Add(rect);                                
47                            }

48                            
49                        }
               
50
51                }

52
53                rects.Clear();
54                
55                System.Diagnostics.Debug.WriteLine("Draw POI TickCounts:" + (Environment.TickCount - t));
56
57            }

58        }

59
卫星图像检测,分割,跟踪,超分辨率,数据集调研,以及论文笔记 目标检测,针对物体有很多类如桥,烟囱,罐子等,有静态图像下的检测,也就是图像源头多来自谷歌地图,但是前后帧没有任何联系,并且谷歌地图相对来说比较清楚,难度小一点,也有粗粒度以及较细粒度的检测,然后卫星视频的数据集较少,则可以通过前后帧的联系来辅助检测,并且卫星帧基本上只对车,船,飞机,火车进行检测,没有进行细粒度的检测即将车辆分类为卡车,皮卡,小轿车,但是关船,则可以分类为货船以及军舰,因为目前的卫星视频中小车实在太少了,难以进行更细粒度的检测。luojia 三号卫星。 阅读详情

相关推荐

影刀RPA之成绩批量查询系统

自动化登录账号,读取数据表中内容去填写信息去查询,并判断多个数据不同的页面去不同的读取查询结果内容,如考生各项信息与各科成绩,总分和查询时间,采集出来到指定的数据表格中,等待时间并依次循环运行。主要功能。

2201_75330891的博客 1084

MiluGPS(迷路者GPS导航软件)

  MiluGPS是一个为自己的手机写的简单GPS软件。这个软件可以运行于WM5 .NET CF 2.0 平台,可以连接以串口形式连接的GPS接收机(如蓝牙GPS接收机),地图使用图位地图,可以使用Ozi转换过来的地图。  制作这个软件的主要有两个目的,一个是学习WM5下的.NET开发;二是自己的软件自己做主,随时可以为软件增加新的功能。  因为是从头学习C#、.NET CF,所以应该有很

网摘 1488

基于强化学习框架的交易策略学习过程

每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。

xu624735206的博客 1110

[MiluGPS]时间同步功能

  因为手机内置电池的老化,在手机更换电池时,经常造成时间恢复到系统的默认时间,有时可能因为附近没有其它方式获和较准确的时间而造成不便。微软的ActiveSync就有同步时间的功能,只要插上USB线连接上ActiveSync,就会自动更新手机上的时间。  因为GPS可以获得非常精确的时间,所以也可以利用GPS的功能,进行同步时间。获得GPS的时间很容易,主要是设置系统的时间需要调用一些API。

网摘 1647

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6563

基于DSP28335的Matlab/Simulink代码生成实验七:A/D采样

实验七:讲解如何使用DSP的ADC模块,通过代码生成技术控制DSP进行电流采样,是后续实现电机闭环控制的重要环节。通过简单的实验来熟悉代码生成的过程。最终实现复杂算法代码自动生成,进行高性能电机控制!

m0_73869369的博客 4724

是Attribute,还是Property

导读:   Attribute和Property都可以翻译成“属性”,有的地方用Attribute表示“属性”,有的地方又在用Property,初学者常常在这两个单词间“迷失”,甚至认为二者没有区别,是一样的。可是Attribute不等于Property。二者之间到底有何区别?      我们从OOA/OOD(Object Oriented Analysis / Object Orient

网摘 1616

ABAP 里的 XML 与 JSON 处理,一套从接口落地到 Clean Core 的完整参考

ABAP 里的 XML 和 JSON 处理并不只是几段工具类调用。iXML、sXML、、XCO、、code page conversion、GZIP、对象序列化,这些能力背后对应的是不同的数据规模、访问模式、接口契约和运行时边界。小报文、复杂树结构、需要修改节点,iXML 很顺手。大报文、顺序读写、内存敏感,sXML 更可靠。ABAP 结构和 XML、JSON 之间要做标准转换,是主干。现代 JSON API、ABAP Cloud、命名转换,XCO 值得优先考虑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 224

不要想当然,原来ASP与ASP.NET不能共享会话(Session)

  网站的论坛使用垃圾动网论坛,近一个月内,论坛几乎成了垃圾信息的集散地,虽然有多个版主帮忙删贴,但还是搞得焦头烂额,论坛已经有一定的贴子,现在想换论坛太麻烦了,那些垃圾信息都是自动注册,自动发贴。看来要防止这些自动发贴的软件,只能从防止自动注册入手,动网的验证码太过简单,普通的识别软件就能识别成功。于是想利用ASP.NET强大的GDI+功能来生成中文验证码。因为以前写过ASP.net利用GDI处

网摘 1462

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 215

WPS Office JS宏实现文件和数据的上传及下载

WPS Office JS宏下载、上传文件;通过加载项实现数据的获取和上传。

学点笔记 4300

static和const关键字尽可能多的作用

static和const关键字尽可能多的作用   解答:   static关键字至少有下列n个作用:   (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;   (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;   (3)在模块内的static函数只可被这一模块内的其它函数

欢迎您来到Peking Lin的专栏 1112

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8251

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 267

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 集合框架(List、Set、Map)与常用基础

本文整理Java集合框架核心知识,涵盖集合体系、Collection接口API、List(ArrayList、LinkedList、Vector)、Set(HashSet、TreeSet)、Map(HashMap、TreeMap、Hashtable)实现类原理、泛型、增强for循环、可变参数与工具类,并附核心易错点速查表。

既然你都点开这里了,那可以给我点个关注吗?可以吗?可以吗? 481

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Bugku 326 Baby-heap1 题解:glibc 2.23 堆溢出到 FSOP 劫持 _IO_list_all(附完整 exp)

为什么 FSOP 在 2.23 这么好用?glibc 2.23 的_IO_FILE虚表调用没有 vtable 合法性检查是 2.24 才加入的),只要能把指向自己伪造的 FILE,就能让__overflow槽位指向任意函数。exit()一定会走因此把_mode置 0、置 1、置 0,就能进入;把fp首地址写成/bin/shsystem(fp)的参数就齐了。为什么用 fastbin attack 而不是?2.23 没有 tcache,fastbin 的fd。

kingx3的博客 177

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Iterator 迭代器、ListIterator & foreach 循环

foreach 是简化版 for 循环,底层依然是 Iterator 迭代器(语法糖)适用范围:数组、所有实现Iterablefor(容器中元素类型 临时变量 : 容器变量) {执行语句hasNext()只判断,不移动指针;不能连续多次调用next(),容易泛型缺失时,Iterator 取出元素是 Object,需要强制转换只能 List 获取,Set 集合不能使用增强 for 只是语法糖,编译后依然变成 Iterator,同样不能在遍历时直接调用集合增删方法。

Sarvartha的博客 347

[C++]:7.STL:list

好久不见,firdawn小课堂又和大家见面啦。今天我们要学习的内容是list容器,list也是一种常用的数据结构。下面是本章的思维导图,那么让我们开始学习吧!自定义的list,由三个结构构成。分别是链表的最小组成单位,也就是链表节点。以及迭代器类和list类其实要特别说明的是, List的迭代器,它不是单纯的指针,因为我们如果对指针直接进行解引用操作的话,我们得到的是这个节点,而不是节点里面存储的值并且我们对这个指针加加,得到的也不是下一个节点的地址,而是所在节点的下一个单位的地址。

2301_80817679的博客 175

LinkedList知识

LinkedList是List 接口的实现类,同时实现了Deque有序、可重复、带索引双向链表prev前驱指针 + item数据 + next后继指针✅ 核心特点首尾增删速度快:只修改指针,不需要移动元素查询慢:没有数组随机访问,按索引查找需要遍历链表线程不安全,支持存储 null兼具 List、队列、栈的功能,所以有两套首尾 API(一组抛异常,一组返回 null)ArrayList:可变数组 → 查询快,中间增删慢LinkedList:双向链表 → 首尾增删快,查询慢多态写时,

Sarvartha的博客 88

List 接口 & ArrayList

List 是Collection 的子接口(单列集合)有序:存入顺序和取出顺序一致可重复:允许存储重复元素有索引:支持根据索引操作元素(这是 List 独有的!Set 没有索引)所以 Collection 里所有方法,List 全都可以用,同时 List 新增一套带索引的专属方法ArrayList 是实现类,实现了 List 接口有序、可重复、有索引底层数组,查询快、中间增删慢扩容 1.5 倍;空参构造不会立刻创建长度 10 数组,JDK8 是懒加载线程不安全,不同步。

Sarvartha的博客 343

一个链表(Linked List)--为什么要用链表--deepseek

数组(如你定义的大盘子就像你在 FPGA 里例化了一块深度为 2500 的 BRAM。它必须是一块连续的、完整的内存。如果内存里全是碎片,凑不出 2500 个连续空位,数组就建立不起来。链表(Linked List)就像一堆散落在大街小巷的小仓库,每个仓库大小不固定,彼此不挨着。但是,每个仓库的门口都贴了一张小纸条,纸条上写着“下一个仓库的地址”。我们来画个图,这就是链表的核心——节点(Node)text。

AlibabaApple的博客 163

FreeRTos笔记(12c):从事件链表里删除节点 xTaskRemoveFromEventList、

(1) (2) 谢谢

zhangzhangkeji的博客 159

【C++初阶】list使用及相关实现,思路顺滑流畅!

list使用及相关实现

Severus_black的博客 36

List(上):LPUSH / RPUSH 与 LRANGE

这是《Redis C++ 实战笔记》系列的第 06 篇。String 讲完了,进入第二种类型:List。它是一串有顺序、可以重复的值,两头都能进出。

wbs_scy的博客 233

细粒度锁的线程安全list实现

【代码】细粒度锁的线程安全list实现。

weixin_43698578的博客 189
上一篇: MiluGPS(迷路者GPS导航软件)
下一篇: [MiluGPS]时间同步功能
Iamfish
博客等级 码龄25年 46粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值