folium 地图加载速度提升让加载速度飞起来 加载本地资源

news2024/11/19 23:39:41

背景

去年写了篇关于如何让folium生成的html地图加载速度飞起来的笔记,笔记中提到解决问题的思路是对html文档中的js/css资源的引用进行本地化替换,并给出了本地化资源,以及资源替换的处理函数。但没有展示这个方法处理带来的效果。
解决folium地图加载速度慢的问题的文章
基于以上,本次再展示一些这个处理方法的实际使用效果。以及做一些资源的更新。

引用 folium模块,生成html地图。

下面一段代码,使用folium模块(已经进行了自定义封装)生成一个html地图。

# -*- coding:UTF-8 -*-

# region 引入必要依赖
import os
from DebugInfo.DebugInfo import *
from selfPyTools.伪装者 import 伪装类
from selfPyTools.mapModule import *

# endregion

# 伪装类自定义封装了 faker 模块,用于生成一些伪数据
伪装 = 伪装类()

# DebugInfo 模块,用于对齐文本并打印
画板 = 调试模板()

# 地图类自定义封装了 folium 模块,用于生成地图数据
地图 = 地图类()

# 定义一个坐标,用于演示html地图的效果
日本位置 = GPS坐标类(经纬度=伪装.地址.坐标.日本.经纬度, 坐标系=GPS坐标系类型.wgs84)

# 把日本位置整理成图标标记,添加到地图上
地图.添加基地(图标标记类(位置=日本位置,
                         消息=消息样式类('我是基地'),
                         图标=图标样式类(名称='glyphicon-flag', 颜色=颜色名.)))

# 在地图上添加一个参考经度线和参考纬度线
地图.添加参考经纬线(图层名称='参考线层', 参考点=日本位置)

# 生成并保存地图 html 文档
地图.指定高德底图().支持坐标拾取.允许资源置换.生成地图html(文档名='本地资源', 目标路径=os.path.dirname(__file__))

上述代码中,注意最后一行命令在生成html文档时,指令是允许资源置换, 这样可以在生成的html代码中,将js/css资源的引用转为本地引用,这样html打开时会从本地支应的src路径下加载js/css资源
上述代码中,修改最后一行命令,禁止资源置换,如下:

# 生成并保存地图 html 文档
地图.指定高德底图().支持坐标拾取.禁止资源置换.生成地图html(文档名='远程资源', 目标路径=os.path.dirname(__file__))

禁止资源置换后,folium生成的html文档中所引用的js/css资源将保持原样,这样html打开时会从其对应的url链接中加载js/css资源

html文档比较

以上两段代码,分别生成了两个html文档。如下:
folium生成的html文档
其中 src 路径下包含了本地js/css资源,文档结构如下:
folium 本地js/css 资源路径结构
下面是禁止资源置换的html文档内的js/css引用:(这不是html文本的全部,只展示了js/css资源部分)

<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
    <style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
    <script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>

下面是允许资源置换的html文档内的js/css引用:(这个文档中的js/css资源都指向了src路径下的对应文档)

<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
    <style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
    <script src="./src/leaflet/leaflet.js"></script>
    <script src="./src/jQuery/jquery-2.0.0.js"></script>
    <script src="./src/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <script src="./src/Leaflet.awesome-markers-2.0.2/dist/leaflet.awesome-markers.js"></script>
    <link rel="stylesheet" href="./src/leaflet/leaflet.css"/>
    <link rel="stylesheet" href="./src/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <link rel="stylesheet" href="./src/bootstrap-3.3.7/css/bootstrap-theme.min.css"/>
    <link rel="stylesheet" href="./src/font-awesome-4.7.0/css/font-awesome.min.css"/>
    <link rel="stylesheet" href="./src/Leaflet.awesome-markers-2.0.2/dist/leaflet.awesome-markers.css"/>
    <link rel="stylesheet" href="./src/leaflet.awesome.rotate/leaflet.awesome.rotate.css"/>

对比上面两个html文档中关于js/css资源的引用,差异是明显的,不用多强调。这部分差异,就是提升folium html地图加载的核心。

效果对比

光说不练——假把式。以上两种类型的js/css资源引用,是否真的提升html文档的加载速度呢?实测如下:

  • 第一部分,远程资源引用的html文档加载,数据如下:
    olium html 文档加载远程 js/css 资源的加载数据

上图中, 我们看到,html 文档加载了21.84秒,最终结果是部分js/css 资源未能成功加载,由此造成左侧的图标变成了实心的点,即图标没有加载出来。

  • 第二部分,本地资源引用的html文档加载,数据如下: folium html文档加载本地资源加载数据
    上图中, 我们看到,html 文档加载了0.27秒,所有js/css 资源成功加载,同时左侧的图标显示了旗帜效果。

相比之后,使用本地js/css资源后,html文档加载的速度提升了 80 倍,用时压缩到ms级,真秒开。

百闻不如一见

上面说了那么多,都是静态的。真实效果如何,看下面视频。
视频资源审核中,稍后补上来。

小结

以上测试结果表明,通过html文档中js/css资源本地化置换后,其加载速度可以有实质性的提升,使用体验大大提升。

声明

以上所述方法,与所提js/css资源,仅对 folium 0.12.1.post1测试验证有效,其它版本并不保证效果。

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

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

相关文章

数字人创作+SadTalker+GTX1080

https://github.com/OpenTalker/SadTalker 开源项目 SadTalker模型是一个使用图片与音频文件自动合成人物说话动画的开源模型&#xff0c;我们自己给模型一张图片以及一段音频文件&#xff0c;模型会根据音频文件把传递的图片进行人脸的相应动作&#xff0c;比如张嘴&#xf…

线上批量查询物流导出到表格的操作指南

现在的生活中&#xff0c;我们经常需要查询包裹物流信息。如果一次性需要查询多个快递单号的物流信息&#xff0c;手动一个一个查询会非常麻烦。今天&#xff0c;我将向大家分享一个简单实用的方法&#xff0c;可以批量查询物流并导出到表格&#xff0c;方便随时查看。 首先&am…

AP51656 PWM和线性调光 LED车灯电源驱动IC 兼容替代PT4115 PT4205

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源 用于驱动一颗或多颗串联LED 输入电压范围从 5V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用高端电流采样设置 …

【AWS】实操-保护 Amazon S3 VPC 终端节点通信

文章目录 实验概览目标实验环境任务 1&#xff1a;探索并启动实验环境任务 1.1&#xff1a;探索 Amazon VPC 资源任务 1.2&#xff1a;探索 Amazon EC2 资源任务 1.3&#xff1a;创建 Amazon VPC 终端节点任务 1.4&#xff1a;连接私有 EC2 实例任务 1.5&#xff1a;探索 Amazo…

在win上,使用命令关闭占用端口号的进程

假设在 Windows 10 上&#xff0c;你可以使用以下命令关闭占用端口号为6200的进程&#xff1a; 打开命令提示符或 PowerShell 终端。 运行以下命令以查找占用端口号为6200的进程的 PID&#xff1a; netstat -ano | findstr :6200在输出中&#xff0c;找到占用端口号为6200的…

金蝶云星空二开,插件查看工具

可查询单据上挂载的系统原有插件、二开插件及插件类型 1.支持模糊查询单据列表 2.支持项目与账套二开插件对比 3.支持金蝶不同账套之间对比差异 操作步骤&#xff1a; 1.登陆界面&#xff0c;选择金蝶云管理中心账套登录获取账套列表&#xff1b; 2.单一标识查询&#xff1a;…

【Vue3】组件递归

【Vue3】组件递归 实现效果 通过传入一个数字&#xff0c;实现数字次循环 父组件 <script setup> import { ref } from "vue"; import RecursionMe from "./components/RecursionMe/index.vue";const level ref(0);const add () > level.val…

Unity 切换场景后场景变暗

问题 Unity版本&#xff1a;2019.4.34f1c1 主场景只有UI&#xff0c;没有灯光&#xff0c;天空盒&#xff1b;其他场景有灯光和天空盒所有场景不烘焙主场景作为启动场景运行&#xff0c;切换到其他场景&#xff0c;场景变暗某一个场景作为启动场景运行&#xff0c;光影效果正…

建筑工程数据处理的重要性有哪些?

建筑工程的数据非常复杂&#xff0c;数据处理也是非常重要的。它可以提高工程效率和质量&#xff0c;能够为决策者提供依据。那对于建筑工程来讲&#xff0c;数据处理重要性有哪些&#xff1f; 1.提高数据准确性 建筑工程数据处理需要准确无误&#xff0c;避免出现措施以及出现…

内网隧道代理技术(十八)之 上线不出网机器

上线不出网机器 不出网机器介绍 上线不出网机器是我们常见的问题&#xff0c;如何在内网中实现不出网机器的上线呢&#xff0c;我们分为了如下的形式&#xff0c;根据之前所学的内容我们开始进行实验&#xff0c;常见的网络拓扑如下&#xff1a; 一般渗透的场景是这样的&…

瑞芯微:基于RK3568得人脸朝向检测

驾驶员监控系统是基于驾驶员面部图像处理来研究驾驶员状态的实时系统。首先挖掘出人在疲劳状态下的表情特征&#xff0c;然后将这些定性的表情特征进行量化&#xff0c;提取出面部特征点及特征指标作为判断依据&#xff0c;再结合实验数据总结出基于这些参数的识别方法&#xf…

AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

原因 pytorch版本问题 解决办法 顺着路径找到文件upsampling.py并打开&#xff0c;修改里面的代码即可解决&#xff0c; 这个方式不需要重新安装pytorch YOLOV5 训练好模型测试时出现问题&#xff1a;AttributeError: ‘Upsample‘ object has no attribute ‘recompute_sc…

多路波形发生器的控制

本次波形发生器&#xff0c;主要使用运算放大器、NE555以及一些其他的电阻电容器件来实现。整体电路图如下所示&#xff1a; 产生的三角波如下&#xff1a; 正弦波如下 方波如下&#xff1a; 运算放大器&#xff08;Operational Amplifier&#xff0c;简称OP-AMP&#xff09;是…

将数字转化为时间格式

输入字符串类型数据&#xff1a;年-月&#xff0c;输出该月的第一天&#xff0c;最后一天&#xff0c;该月天数&#xff0c;时间序列索引。示例&#xff1a;输入2019-09&#xff0c;输出如下 calendar模块monthrange方法返回两个参数&#xff1a;该月第一天是星期几、该月有多少…

ChatGPT插件的优缺点

虽然西弗吉尼亚大学的研究人员看到了最新的官方ChatGPT插件——名为“代码解释器”&#xff08; Code Interpreter&#xff09;的教育应用潜力&#xff0c;但他们也发现&#xff0c;对于使用计算方法处理针对癌症和遗传疾病的定向治疗的生物数据的科学家来说&#xff0c;这款插…

【C++模拟实现】vector的模拟实现

【C模拟实现】vector的模拟实现 目录 【C模拟实现】vector的模拟实现vector模拟实现的标准代码vector模拟实现中的要点insert和erase会涉及到迭代器失效的问题vector深度剖析关于模版template< class InputIterator >使用memcpy拷贝问题 作者&#xff1a;爱写代码的刚子 …

ShardingSphere——弹性伸缩原理

摘要 支持自定义分片算法&#xff0c;减少数据伸缩及迁移时的业务影响&#xff0c;提供一站式的通用弹性伸缩解决方案&#xff0c;是 Apache ShardingSphere 弹性伸缩的主要设计目标。对于使用单数据库运行的系统来说&#xff0c;如何安全简单地将数据迁移至水平分片的数据库上…

windows安装MongoDB后进入命令交互界面失败解决方案

MongoDB下载链接&#xff1a;https://www.mongodb.com/download-center MongoDB安装教程&#xff1a;https://juejin.cn/post/6844903912000978952 不要安装最新的高版本MongoDB&#xff0c;因为配置方法可能会有差别&#xff0c;比如7.0一直失败的话就换5.0及以下版本试试&am…

RDMA性能优化经验浅谈

一、RDMA概述 首先我们介绍一下RDMA的一些核心概念&#xff0c;当然了&#xff0c;我并不打算写他的API以及调用方式&#xff0c;我们更多关注这些基础概念背后的硬件执行方式和原理&#xff0c;对于这些原理的理解是能够写出高性能RDMA程序的关键。 Memory Region RDMA的网…

Vue:关于声明式导航中的 跳转、高亮、以及两个类名的定制

声明式导航-导航链接 文章目录 声明式导航-导航链接router-link的两大特点&#xff08;能跳转、能高亮&#xff09;声明式导航-两个类名定制两个高亮类名 实现导航高亮&#xff0c;实现方式其实&#xff0c;css&#xff0c;JavaScript , Vue ,都可以实现。其实关于路由导航&…