PyQt5_pyecharts显示简易世界地图

news2025/1/19 8:24:59

pyecharts显示地图,地图数据可以安装pyecharts相关的地图数据包,也可以使用自定义的geojson文件,本文使用自定义geojson文件,自定义geojson文件相比于默认的地图数据能有更大的操作空间和自由度,由于本文不适用默认的地图数据,实现过程中不需要安装地图数据包。

目录

最终效果

制作地图数据

1. 地图数据源下载

2. 转换成geojson文件

3. 查看geojson文件数据

4. pyecharts默认地图数据格式(题外话)

实现地图数据显示

1. 安装需要用到的包

2. 代码

3. 需要注意的点

4. 运行

5. 相关网址


最终效果

制作地图数据

1. 地图数据源下载

网站:www.naturalearthdata.com/downloads/

本文显示最简单的世界行政区划,选择 1:110m比例尺的 Cultural 

 只需要显示到国家,选择Admin 0 - Countries

下载得到zip压缩包

 解压缩

2. 转换成geojson文件

网址:mapshaper.org

打开 mapshaper.org 网址,该网站是一个地图数据格式转换工具

 点击“select”,打开刚刚解压后的文件夹,同时选择.dbf .prj .shp三个文件,导入

 点击右上角“Export”按钮

 导出的文件格式为GeoJSON, pyecharts显示地图需要用GeoJSON格式的文件,导出,本文导出后文件名为world06.json

3. 查看geojson文件数据

网址:geojson.io

打开 geojson.io 网址,该网站是一个geojson文件查看工具

 点击左上角的“Open”,选择刚刚导出的world06.json的geojson文件

 

 左侧显示地图,右侧显示json文件的字段和值

json文件特征:

1)最顶级的键值为 type 和 features

2)features的值为数组,数组里每个元素里有 type  geometry  properties 三个键

3)  这里要关注 properties 里的“名称”键,名称键是显示该区域名称使用,pyecharts需要引用这个键值用以显示区域名称,即NAME,一些geojson文件用的是小写name, 本文是NAME

4. pyecharts默认地图数据格式(题外话)

由于本文没有安装pyecharts默认的地图数据包,我们可以另辟蹊径。

网址:datav.aliyun.com/tools/atlas/#&lat=31.769817845138945&lng=104.29901249999999&zoom=4

这个网址有提供中国的geojson数据下载,也可以直接查看json文件,通过 geo.datav.aliyun.com/areas_v3/bound/geojson?code=100000_full 直接查看

 这个文件的字段就和pyecharts默认的地图数据包文件差不多

实现地图数据显示

pyecharts显示地图,本质上还是在网页上显示,要在PyQt5的项目中实现pyecharts的地图显示,需要在PyQt5中提供浏览器引擎,用于显示pyecharts生成的网页

1. 安装需要用到的包

1)安装PyQt5包

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

2)查看PyQt5的版本,安装相同版本的 PyQtWebEngine(没有相同版本就用最相近的版本尝试)

pip list 查看 PyQt5版本为5.15.7

pip install PyQtWebEngine==5.15.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

(没有5.15.7版本的PyQtWebEngine,所以安装相近版本5.15.6)

3) 安装pyecharts包

pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 代码

在项目根目录下创建 data文件夹  html文件夹

data文件夹:放置地图geojson文件

html文件夹:放置pyecharts生成的html网页文件

import sys,json
from PyQt5 import QtWidgets
from PyQt5.QtCore import QUrl, QFileInfo
from PyQt5.QtWebEngineWidgets import QWebEngineView

from pyecharts import options as opts
from pyecharts.charts import Geo
world_data = None
with open('../data/world06.json', 'r', encoding='utf-8') as fr:
    world_data = json.load(fr)

class Main_Window(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()
        self.desktop = QtWidgets.QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.height = self.screenRect.height()
        self.width = self.screenRect.width()

        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('简易世界地图显示')
        self.setGeometry(self.width / 4, self.height / 4, self.width / 2, self.height / 2)

        self.browser = QWebEngineView()

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.browser)

        center_widget = QtWidgets.QWidget()
        center_widget.setLayout(layout)

        self.setCentralWidget(center_widget)

    def draw_chart(self):
        world_geo = (Geo().add_js_funcs("echarts.registerMap('world00',{});".format(world_data))
                        .add_schema(maptype='world00',name_property='NAME')
                        .set_global_opts(title_opts=opts.TitleOpts(title="全球"))
                     )
        world_geo.render("../html/world.html")

        temp_url = QUrl(QFileInfo("../html/world.html").absoluteFilePath())
        self.browser.load(temp_url)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Main_Window()
    window.draw_chart()
    window.show()
    sys.exit(app.exec_())

3. 需要注意的点

本文制作的geojson文件properties的名称的键为“NAME”,pyecharts默认的键名为“name”,所以在代码中要指定键名,不能使用默认的

4. 运行

5. 相关网址

pyecharts官方文档  pyecharts.org/#/zh-cn/intro

pyecharts官方实例  gallery.pyecharts.org/#/Geo/geo_chart_countries_js

echarts官网 echarts.apache.org/zh/index.html

echarts官方实例  echarts.apache.org/examples/zh/index.html#chart-type-map

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

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

相关文章

接口压测实践-压力测试常见参数解释说明

使用场景​ 对指定接口进行性能测试时,一些常见参数解释说明。 一键并发​ 可以通过下载最新版的 Apipost 客户端实现单接口的高性能一键并发压测,如下图所示 注意:请勿设置太大的并发量或者循环次数,这有可能导致直接将被压服…

php学习笔记-php文件表单上传-day06

php学习笔记-php文件表单上传-day061、php文件上传处理流程2、预定义变量 $_FILES2.1、文件上传的状态代码2.2、上传文件的实现函数3、文件上传的小例子3.1、文件上传表单 form1.php3.2 文件上传表单处理的php页面 uploadFiles.php3.3 运行测试输出3.4 文件上传需要注意的一些p…

JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

目录 1、前言 2、系统实机演示 3、系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4、系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 …

Python归并排序

归并排序 数据科学家每天都在处理算法。 然而,数据科学学科作为一个整体已经发展成为一个不涉及复杂算法实现的角色。 尽管如此,从业者仍然可以从建立对算法的理解和知识库中受益。 在本文中,对排序算法归并排序进行了介绍、解释、评估和实…

Educational Codeforces Round 141 (Rated for Div. 2)(A~D)

A. Make it Beautiful给出一个数组,将它重新排列,使得它成为一个beautiful数组。ugly数组的定义是存在一个数,为前面所有数字的和。思路:升序排序后一前一后构造数组,最后判断一下即可。AC Code:#include &…

Android 深入系统完全讲解(10)

8 如何定位界面,定位代码 这一节我们来说说如何定位界面,这个也是一个神器,今天来讲讲 hierarchyviewer.bat 的用法,AS 也有新的工具,但是我还是喜欢这个工具,于是我们开始讲这个。 我们使用 Genymotion …

Win32公共控件使用,进度条实现Marquee样式

参考:https://learn.microsoft.com/zh-cn/windows/win32/controls/progress-bar-control Comctl的全称是Common Controls,也就是公共控件的意思,属于Windows系统的一部分,提供了一组标准的UI控件,如Button、ListView等等。 Comctl32主要有两个大版本,v5和v6,最明显的两个…

【C++11】新特性入门

目录 一、C11简介 二、列表初始化 三、声明 1. auto 2. decltype 3. nullptr 四、范围for 五、STL中一些变化 1. array容器 2. forward_list容器 3. unordered_map和unordered_set容器 一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff…

IOzone I/O测试工具使用说明

IOzone磁盘读写工具使用说明0. IOzone简介1. 下载及安装1.1 下载1.2 编译并安装1.3 IOzone 效用测量什么?2. IOzone参数介绍3. 10 个 IOZone 示例3.1 使用默认值运行所有 IOZone 测试3.2 使用 iozone -b 将输出保存到电子表格3.3 使用 iozone -i 仅运行特定类型的测…

BMP图片格式分析(超详细)

系列文章目录 文章目录系列文章目录前言一、BMP格式概览二、实战分析bmp图片数据前言 对学习C感兴趣的可以看看这篇文章哦:C/C实战入门到精通 BMP图片大家见的应该也比较多,它是一种非常基本的图片格式 因为最近对C生成二维码比较感兴趣,用…

【golang】rune

一、背景 来看下2023.1.11的每日一题,是个简单题 2283. 判断一个数的数字计数是否等于数位的值几乎都有思路,先遍历一遍把数存在map中,第二次遍历直接判断就可以。 二、解答 我的解答(很久不写代码了) 开始想着map的…

autoCell:用于scRNA-seq的分析工具

目录简介引言相关工作贡献数据集和对比方法autoCell高斯混合模型图嵌入结果插补去噪后轨迹分析潜在特征捕获细胞病理学发现细胞类型特异性分子网络简介 动机:scRNA-seq使研究人员能够以单细胞分辨率研究基因表达。然而,由dropout引起的噪声可能会妨碍精…

mac快速配置iterm2

文章目录安装 iterm2设置为默认终端安装 oh-my-zsh 设置默认 shell查看 shell 有几种安装 oh-my-zsh设置默认 shell配置主题安装插件安装高亮插件设置快捷键安装 iterm2 自行官网下载 iterm2 设置为默认终端 Mac 默认终端即“终端”,我们可以把好用的 iterm2 设置…

Pytorch复习笔记--导出Onnx模型为动态输入和静态输入

目录 1--动态输入和静态输入 2--Pytorch API 3--完整代码演示 4--模型可视化 5--测试动态导出的Onnx模型 1--动态输入和静态输入 当使用 Pytorch 将网络导出为 Onnx 模型格式时,可以导出为动态输入和静态输入两种方式。动态输入即模型输入数据的部分维度是动态…

Elasticsearch:运用 Go 语言实现 Elasticsearch 搜索 - 8.x

在我之前的文章 “Elasticsearch:Go 客户端简介 - 8.x”,我对 Elasticsearch golang 客户端做了一个简单的介绍。在今天的这篇文章中,我将详细介绍如何使用这个客户端来一步一步地连接到 Elasticsearch,进而创建索引,搜…

流程编辑器bpmnjs的改造1:设计器外观和布局

重新设计页面,弄一个比较规范的设计器外观和布局,bpmnjs.css加入如下的代码:/* Frame CSS */html,body{width:100%;height:100%}.toolsBar{position:fixed;width:100%;height:40px;background-color:#FFF; border-bottom:1px solid #E1E1E1;d…

Linux安装Docker完整详细教程

目录 Docker及系统版本 Docker的自动化安装 Docker的手动安装(CentOS7) 1.1 卸载历史版本的Docker 1.2 安装依赖包 1.3 更新本地镜像源(也可以叫做:设置源仓库) 1.4 Docker安装 1.5 配置镜像加速 Docker启动 删除Docker Docker其…

连接池PgBouncer部署与踩坑实践

安装 可以直接使用 yum install pgbouncer 安装(rpm管理的是1.14版本) 或者在http://www.pgbouncer.org/downloads/ 下载最新的tat.gz包 解压出来进入目录,通过 ./configure --prefix/home/pgbouncermake & make install 安装&…

01等概率发生器、随机函数、对数器

1.数据结构 数据结构:是由连续结构、跳转结构或者连续加跳转(可能有多个叉)结构组成 数据结构是很多算法得以进行的载体 数组:便于寻址不便于删增数据(需要不断移动数据,如果不动可能就不是连续结构) 链表(跳转结构…

jupyter notebook 暗黑模式新方法

1 直接浏览器采用暗黑模式 (1)首先我们打开谷歌浏览器,在浏览器地址栏中输入“chrome://flags”然后按下回车键。 (2)之后我们会进入谷歌浏览器的实验室页面,在页面左上方的搜索框中输入“enable-force-…