QT编写地图实现获取区域边界

目录
  • 一、前言
  • 二、功能特点
  • 三、体验地址
  • 四、效果图
  • 五、相关代码

一、前言

区域边界也是一些坐标点集合,而且不同的行政区划得到的区域边界点数组集合个数不同,觉得部分都是一个集合,少部分有一些飞地之类的,需要多个闭合区域,所以会得到多个数组集合,绘制的时候都要分别取出来绘制就行。

获取边界点一般和行政区划搭配起来使用,比如用户输入一个省市的名称,然后自动定位到该省市,然后对该轮廓获取所有边界点集合输出到js文件,最后供离线使用,获取边界点还有一个功能就是获取当前区域内的左下角右上角等经纬度坐标,这个主要是供离线地图下载使用的,百度地图很好的提供了bdary.get(cityname, function(rs)的函数来获取行政区划的边界点集合,其中rs.boundaries就是所有的边界点集合,估计他是服务器上存储好的每个区域的集合,查询到了立即返回,可能早期也是人工的一点点圈起来连线好存到到数据库的,按照此方式其实可以搞一个程序自动将全国的所有省市边界点集合数据全部扒下来,给离线地图使用,测试了下貌似只支持到县城级别,不支持具体到乡镇。

二、功能特点

定时器排队下载省市轮廓图点坐标集合存储到JS文件。

支持一个行政区域多个不规则区域下载。

自动计算行政区域的下载轮廓数量。

可精确选择省份、市区、县城,也可直接输入行政区域的名称。

可以设置下载间隔、随时开始下载和停止下载。

提供编辑边界功能,可以直接在地图上编辑好不规则区域的点集合,然后获取边界点集合数据,这个可以用来自己绘制区域拿到数据,比如某个乡镇甚至某个小区的行政区域数据,很牛逼。

三、体验地址

体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_map.zip

国内站点:https://gitee.com/feiyangqingyun

国际站点:https://github.com/feiyangqingyun

四、效果图

五、相关代码

void frmMapBoundary::getBoundary()
{
    //判断当前索引对应的省会的复选框有没有勾选,没有勾选则找到下一个勾选的
    int count = names.count();
    while (indexMain < count - 1 && !cks.at(indexMain)->isChecked()) {
        indexMain++;
        indexSub = 0;
    }

    //到了最后一个省会的索引,停止定时器
    if (indexMain == count || !cks.at(indexMain)->isChecked()) {
        on_btnStop_clicked();
        return;
    }

    //下载到省会的最后一个县,索引自动跳到下一个省会
    QStringList list = names.at(indexMain);
    if (indexSub == list.count()) {
        indexMain++;
        indexSub = 0;
        getBoundary();
        return;
    }

    QString name = list.at(indexSub);
    addBoundary(name);
    indexSub++;

    //更新进度条
    int value = bars.at(indexMain)->value();
    bars.at(indexMain)->setValue(value + 1);
    ui->txtTip->setText(name);
}

void frmMapBoundary::addBoundary()
{
    //开启编辑状态
    QString name = ui->cboxName->currentText();
    addBoundary(name, true);
}

void frmMapBoundary::addBoundary(const QString &name, bool edit)
{
    currentName = name;
    QString js = QString("addBoundary('%1', true, %2)").arg(name).arg(edit ? "true" : "false");
    runJs(js);
}

void frmMapBoundary::saveBoundary(const QString &fileName, const QVariant &data)
{
    //传过来的是行政区划的边界点坐标集合,存储到js文件
    //可能会有多个数据,比如台湾的金门岛,都是独立的区域形状,存入数组
    QStringList boundarys;
    QStringList list = data.toString().split("|");
    foreach (QString points, list) {
        boundarys << QString("{'points': '%1'}").arg(points);
    }

    //最终js文件内容数据
    QString boundary = QString("var boundarys = [%1]").arg(boundarys.join(", "));
    QFile file(fileName);
    if (file.open(QFile::WriteOnly | QFile::Truncate)) {
        QTextStream out(&file);
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
        out.setCodec("utf-8");
#endif
        out << boundary;
    }
}

以上就是QT编写地图实现获取区域边界的详细内容,更多关于QT获取区域边界的资料请关注我们其它相关文章!

时间: 2022-01-12

QT编写地图实现设备点位的示例代码

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 在学习JS语法的时候发现其实程序都大同小异,正所谓一通百通,熟悉各大概的语法以后基本都可以上手,和C++最大的不同就是他没有数据类型的概念,作为解释性的语言,是在执行的时候自动去转换数据类型,工作都交给解释器做掉了,这样就大大方便了程序员,到处var即可,哪怕是数组啊对象啊,万物皆var,只有当真正赋值的时候,才知道具体的数据类型. 在地图应用的相关项目中,在地图上标识一些设备点,并对点进行交互这个功能用的最多的,于

Qt编写地图迁徙图的实现示例

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 在很多web系统中,尤其是大屏系统中,经常可以看到类似于飞机迁徙图的效果,这个在echart中也是最常用的一个效果,迁徙图既可以是一个飞机也可以是其他形状,然后有一条动态的移动轨迹来表示流向,一般都是多个点流向一个点,也可以做成一个点流向多个点,是个多对多的关系,常用来表示人口迁徙.动物迁徙.黑客攻击.病毒攻击.数据流向.产品流向等. 迁徙图和上一篇的闪烁点图类似,也需要提供三个基本要素:城市名称集合.城市经纬度集合

Qt编写地图实现省市区域图的示例代码

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 省市区域图也可以叫省市轮廓图,就是将每个省份.市区的边界区域变成轮廓展示,只是个大概的轮廓,和真是的地图基本一致,毕竟都是一个个点堆起来的,可能会有很小很小的误差,之前做大屏系统中间那个中国地图的时候,客户千方百计交代清楚,千万要注意有九段线,不然在展会上被别人看到如果连九段线都没有的话会被人骂死,可能在部分早期的数据由于不是很完善所以未必有,后期的最新的地图数据都是有的,包括轮廓图数据. echart本身是没有提供

QT编写地图实现在线轮廓图的示例代码

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码  一.前言 轮廓图也叫行政区划,这里的轮廓图是指百度地图的区域轮廓图,不是之前文章中提到的echart专用的轮廓图,百度地图的轮廓图就是一个不规则的多边形区域,只不过这个区域的坐标点一般是特别多的,比如某个县市的区域轮廓,可以拿到一系列的坐标点,主要是用来突出标注某个区域,比如这个区域可以突出颜色显示,线条的颜色和粗细及透明度都可以设置. 在线的轮廓图可以直接调用地图内置的 Boundary.get 方法获取,只需要指定区域的

QT编写地图实现离线轮廓图的示例代码

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码  一.前言 离线轮廓图使用起来,就没有在线轮廓图方便了,在线的可以直接传入名称拿到,离线的只能自己绘制了,一般需要用区域轮廓图下载器将你需要的区域下载好对应的js文件,其实就是一堆坐标点集合数组,这些数据可以在有网络的地方的时候下载好,也可以在地图上通过绘制不规则的多边形区域得到,只要你熟知该区域的轮廓. 离线轮廓图的加载首先引入该区域的坐标点数组js文件,然后通过读取该文件的数据传入自定义的 addBoundary 函数进行

Qt编写地图综合应用之绘制覆盖物折线

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码  一.前言 折线图目前应用最广的也是用来绘制各种轨迹,折线图其实就是后面动态轨迹图.飞机航线图的前身,公用的一个方法addPolyline,折线图可以设置颜色.粗细.透明度等属性,如果开启了悬浮绘图工具栏,也可以直接单击工具栏中的折线图绘制工具,直接动态绘制. 二.功能特点 同时支持在线地图和离线地图两种模式. 同时支持webkit内核.webengine内核.miniblink内核.IE内核. 支持设置多个标注点,信息包括名

Qt编写地图综合应用之绘制雨量分布

目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码  一.前言 雨量分布图是在区域地图基础上,针对区域中的每个最小单位区域比如县城点位不同颜色显示,最开始做这个封装的时候,并没有提供单独设置每个点颜色的接口,后面经过几个客户的强烈建议,咬咬牙把每个点都可以单独设置不同颜色的接口加进去,这样就更加符合实际的需求,比如这个点到了报警阶段则红色显示,正常阶段则绿色显示,如果没有设置过颜色,就取值默认的颜色,全部不设置颜色则全部取默认的颜色.每个点的颜色值和对应点的经纬度坐标一样,队列

编写Bash Shell通过gnuplot绘制系统性能数据图的方法

使用步骤: 1.设置一个定时任何 执行getperf.sh,采集性能数据 2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压 3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中 4.安装gnuplot程序(这里下载) 5.将字体文件夹,拷贝到/usr/share/fonts/目录 6.直接运行 bash performance_analyse.sh getperf.sh脚本内容如下: ############################

PyQt5 在label显示的图片中绘制矩形的方法

在利用QT编写GUI程序时经常需要一些交互操作,常见的有鼠标事件.键盘事件等.今天我们要实现的是在label中已经显示的图像中绘制矩形框,以便进行下一步操作(如放大细节,选中感兴趣区域等)程序主要参考了知乎的小杨老师的专栏. 核心点是重写Label,使其实现相应的功能,看下面的一个小例子 from PyQt5.QtWidgets import QWidget, QApplication, QLabel from PyQt5.QtCore import QRect, Qt from PyQt5.Q

Qt图形图像开发之曲线图模块QCustomplot库生成静态、动态曲线详细教程图解

Qt曲线图模块QCustomPlot库介绍 QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线.动态曲线.多重坐标曲线,柱状图,蜡烛图等.只需要在项目中加入头文件qcustomplot.h和qcustomplot.cpp文件,然后使一个widget提升为QCustomPlot类,即可使用. QCustomPlot官网:   http://www.qcustomplot.com/ QCustomPlot下载地址:   http://www.qcustomplot.com/index.

vue基于Vue2.0和高德地图的地图组件实例

前言 在做基于LBS的应用中,时常会和地图打交道,最直接的解决方案,当然是去对应的地图官网找文档,然后一步步来玩.对于简单场景而言,体验应该还好,但对于一些状态多,变化频繁的复杂场景而言,不仅要时刻维护本地数据状态和地图状态同步,还要查找设置各种状态的地图API,实在是让人头疼的事情. 设计vue-amap的初衷,也就是为了让开发者,在编写地图应用时,能从查找众多地图API和繁琐的地图状态同步中解脱出来. 那么vue-amap是如何做到的,又能给开发者带来怎样的便利与开发体验呢?我们就从一个轻点

使用D3.js创建物流地图的示例代码

本文介绍了使用D3.js创建物流地图的示例代码,分享给大家,具体如下: 示例图 制作思路 需要绘制一张中国地图,做为背景. 需要主要城市的经纬坐标,以绘制路张起点和终点. 接收到物流单的城市,绘制一个闪烁的标记. 已经有过物流单的目标城市,不再绘制路线. 每次新产生一笔物流单,都有一个标记沿路线移向目标的动画效果. 绘制结束后的数据,需要清理掉,以减少对浏览器的资源占用. 开始撸码 1.创建网页模板 加载D3JS,为了方便调试,直接下载d3.js文件在本地,实际使用的时候,可以换成加载路径.注意

Pyecharts绘制全球流向图的示例代码

安装 pip(3) install pyecharts 此文版本为v1.6 此文版本为v1.6 此文版本为v1.6 效果图 使用Pycharts绘制一个如上图类似的全球流向图. pyecharts里的地理图标总共有三种- Geo:地理坐标系,Map:地图,Bmap:百度地图. Map地图可以绘制全球地图,但不能绘制带有流向的效果图,所以此处需要使用Geo地理坐标系图. Geo图的类型有scatter(散点图),effectScatter(涟漪散点图),heatmap(热力图),lines(流向图

Qt图形图像开发之高性能曲线图模块QCustomplot库详细使用方法与实例(支持动、静曲线图)

Qt曲线图模块QCustomPlot库介绍 QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线.动态曲线.多重坐标曲线,柱状图,蜡烛图等 前段时间用QChart模块画图,一条曲线上面放8000条数据就会卡的不行必须要换个其他的控件,后来找到了曲线图模块QCustomplot库 这个库性能非常好,画曲线图折线图柱状图动态静态,放大缩小,都很好用,10w条数据量无压力秒画出来一点也不卡 下载地址 https://www.qcustomplot.com/index.php/downloa

linux入门教程 第4章 X-Window与汉化

4.1 X-Window简介 要想成为一套优秀的操作系统,除了性能稳定.功能齐全之外,还应该拥有一个友好的操作系统,否则只会呆在研究室里,难以普及. 在UNIX系统下,大多都是采用X Window做为图形界面的.1984年,麻省理工学院与DEC制定了Athena计划,这就是X Window 第一个版本.1988年1月成立了一个非盈利性的X联盟,负责制定X Window的标准.在Linux出现后,Xfree86 Project Inc.基于Linux实现了一个开源的X Window系统:XFree

Python实现单词翻译功能

在进行英文文献阅读时,经常会出现一些不认识的单词,但对于一些pdf阅读器,比如Foxit阅读器使用翻译功能需要点击(Extra->Translate),并且启用了翻译功能将不能使用注释功能,这对于阅读者来说将是极不方便的.所以为了方便查询单词,自己开发了个Windows环境下的Python程序用于监控并查询单词,而只需的操作就是选中单词并按Ctrl+C即可. 该Python程序主要分为三部分:从另外一个应用程序中获取需要查询的单词,单词翻译和单词显示. 从另外一个应用程序中获取需要查询的单词涉及

基于原生JS实现图片裁剪

下面是我自己写的图片裁剪的功能介绍: 可以利用鼠标拖拉,产生裁剪框 可以改变裁剪框大小 点击确定,返回裁剪数据 原理 完成裁剪的方法有两种: 1.利用HTML5新增拖拽事件drag drop等 2.传统方法,利用鼠标事件,mousedown.mousemove等 在这里,我们采用方法2. 裁剪区域的形成 要进行裁剪首先要形成裁剪区域,这个裁剪区域的形成我们可以与鼠标移动的距离相关联.鼠标移动多远,裁剪区域就有多大.如下图: 如上图所示鼠标的横向移动距离与纵向移动距离共同组成了裁剪区域的宽和高.