解决folium生成的html加载慢的问题,提升folium生成的html加载速度

关于folium工具包

folium工具包是一个很好用的地图可视化工具,具体使用方法不是本文的重点内容,大家可以自行查阅其它相关文档进行学习。

关于folium生成的html加载速度的问题

folium生成的html引用了第三方的js脚本库和CSS库来进行页面效果的渲染,但如果在国内网络环境下使用时,由于js及CSS的服务器在国外,导致这些库文件的加载缓慢,效果无法保证,极端情况下,html出现打开失败的现象。

使用离线js/css库

如上所述,解决js/css服务链接速度慢的问题,可以通过使用离线js/css库的方式来处理。将js/css库下载到本地,然后在html文件内引用本地路径下的html文件,从而解决js/css库加载慢的问题,达到提升html文件打开速度和打开稳定性的目的。

js/css库文件

folium所引用的js/css库打包整理见folium html src.zip。下载后解压文件夹,将folium所生成的html文件与src文件夹放于同一路径下,配合以下所列的处理过程,html文件便可以引用离线js/css库文件。
解压的src文件需要和html文件在同一路径下

处理html文件

folium生成的html文件默认使用在线js/css库,我们需要对所生成的html文件进行处理,以便使html文件使用离线的js/css库文件,避免加载在线库。

python函数

# 本函数的根本作用,是将folium所生成的html文件中的相关js/css引用链接,替换为本地的js/css路径。所使用的路径为相对路径,所以在打开html文件的时候,需要将html文件与src文件夹放置在同一个路径下
import os
def replaceJsRef(fileFullName):
    replaceContents = [['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        ''''''],
                       ['''''',
                        '''''']
                       ]

    with open(fileFullName, "r", encoding="utf-8") as f1, open("%s.bak" % fileFullName, "w", encoding="utf-8") as f2:
        for line in f1:
            for itm in replaceContents:
                if itm[0] in line:
                    line = line.replace(itm[0], itm[1])
                    replaceContents.remove(itm)
            f2.write(line)
    os.remove(fileFullName)
    os.rename("%s.bak" % fileFullName, fileFullName)

你可能感兴趣的:(python,folium,map,css,html,前端)