IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> pyqt5 地图可视化 网页地图 folium -> 正文阅读

[C++知识库]pyqt5 地图可视化 网页地图 folium

实验任务(实验题目、目的)

Implement a shortest path algorithm and apply it to the national railway system.以全国主要城市为图的顶点, 铁路连接为图的边, 距离作为加权, 设计完成一个最短路径自动查找系统. 输入为出发城市和目标城市, 输出为最短路径和距离.

任务分析

实现思路
在研究、挖掘GPS位置数据、轨迹数据的过程中,地理信息的可视化展示是非常关键的一步。
folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm或自行获取的osm资源和地图原件进行地理信息内容的可视化,以及制作优美的可交互地图。

folium.map:https://python-visualization.github.io/folium/modules.html#module-folium.map
  location:tuplelist类型输入,用于控制初始地图中心点的坐标,格式为(纬度,经度)[纬度,经度],默认为None
  width:int型或str型,int型时,传入的是地图宽度的像素值;str型时,传入的是地图宽度的百分比,形式为'xx%'。默认为'100%'
  height:控制地图的高度,格式同width
  tiles:str型,用于控制绘图调用的地图样式,默认为'OpenStreetMap',也有一些其他的内建地图样式;也可以传入'None'来绘制一个没有风格的朴素地图,或传入一个URL来使用其它的自选osm
              可选的样式包括:
                 ”OpenStreetMap”
                 ”Stamen Terrain”, “Stamen Toner”, “Stamen Watercolor”
                 ”CartoDB positron”, “CartoDB dark_matter”
                 ”Mapbox Bright”, “Mapbox Control Room” (Limited zoom)
                 ”Cloudmade” (Must pass API key)
                 ”Mapbox” (Must pass API key)
  max_zoom:int型,控制地图可以放大程度的上限,默认为18
  attr:str型,当在tiles中使用自选URL内的osm时使用,用于给自选osm命名
  control_scale:bool型,控制是否在地图上添加比例尺,默认为False即不添加
  no_touch:bool型,控制地图是否禁止接受来自设备的触控事件譬如拖拽等,默认为False,即不禁止
Heatmap Parameters
data (list of points of the form [lat, lng] or [lat, lng, weight]) – The points you want to plot. You can also provide a numpy.array of shape (n,2) or (n,3).
name (string, default None) – The name of the Layer, as it will appear in LayerControls.
min_opacity (default 1.) – The minimum opacity the heat will start at.
max_zoom (default 18) – Zoom level where the points reach maximum intensity (as intensity scales with zoom), equals maxZoom of the map by default
max_val (float, default 1.) – Maximum point intensity
radius (int, default 25) – Radius of each “point” of the heatmap
blur (int, default 15) – Amount of blur
gradient (dict, default None) – Color gradient config. e.g. {0.4: ‘blue’, 0.65: ‘lime’, 1: ‘red’}
overlay (bool, default True) – Adds the layer as an optional overlay (True) or the base layer (False).
control (bool, default True) – Whether the Layer will be included in LayerControls.
show (bool, default True) – Whether the layer will be shown on opening (only for overlays).
涉及的知识点

出现的问题

使用的库
from PyQt5 import QtCore, QtGui, QtWidgets,QtWebEngineWidgets
import io,sys,folium
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
import numpy as np
import json
import pickle
import requests
from geopy.distance import geodesic

求最短路径的两种算法核心代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#define INF 0x3f3f3f3f
using namespace std;
const int N=5;
int s=0;
int map[N][N]={{0,10,INF,8,5},
               {10,0,1,INF,3},
               {INF,1,0,6,9},
               {8,INF,6,0,2},
               {5,3,9,2,0}};

//Dijstra算法
Dijstra(int t){
    int vis[N]={0};
    int dis[N];
    int record=-1,m=INF,ss=s;
    memset(dis,INF,sizeof(dis));
    dis[ss]=0;
    vis[ss]=1;
    while(1){
    record=-1;
    m=INF;
    for(int i=0;i<N;i++){
        if(map[ss][i]!=INF&&!vis[i]){
        if(ss==0) dis[i]=map[ss][i];
         record=m<map[ss][i]?-1:i;
         m=min(m,map[ss][i]);
        }
    }
    if(record==-1) break;
    for(int i=0;i<N;i++){
        if(map[record][i]!=INF&&dis[record]!=INF){
        dis[i]=min(dis[record]+map[record][i],dis[i]);
        }
    }
    vis[record]=1;
    ss=record;
    }
    return dis[t];
}
//Floyd算法
Floyd(int t){
    int dis[N][N];
    memset(dis,0x3f,sizeof(dis));
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            for(int k=0;k<N;k++){
                if(dis[i][j]>map[i][k]+map[k][j]){
                    dis[i][j]=map[i][k]+map[k][j];
                    //cout<<i<<"->"<<j<<":"<<dis[i][j]<<endl;
                }
            }
        }
    }
    return dis[t][s];
}

int main(){
   cout<<"Dijstra="<<Dijstra(4)<<endl<<"Floyd="<<Floyd(4);
}

//其他功能靠api实现
实验结果
初始界面
在这里插入图片描述

有条件搜索:起点,终点,中间节点,出行方式
在这里插入图片描述

显示:全长距离,总预计耗时,备忘录会搜索路线指示
沿科华南路向南行驶368米直行进入隧道
沿科华南路向南行驶360米向右前方行驶进入匝道
沿科华南路出口途径科华南路向南行驶1.7千米右转
沿锦悦东路途径锦悦西路向西行驶528米右转
向北行驶24米到达目的地
总时间6938.45分钟
在这里插入图片描述

可以自己单击标注点,并且显示经纬度
在这里插入图片描述

可以将该次路线打开(.pkl)格式,或者自己命名保存
在这里插入图片描述

特殊功能:增加了打开网页的功能,上网,浏览网页,方便查询信息
在这里插入图片描述

可以娱乐玩小游戏

提示:需要点击特殊按钮才能打开网页功能

苏苏

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-04 21:12:22  更:2021-07-04 21:12:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 11:34:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码