GeoViews 保存内联 HTML 文件非常大

GeoViews saving inline HTML file is very large

我结合使用 geopandas 和 geoviews 创建了地理数据框。我正在使用的库如下:

import pandas as pd
import numpy as np
import geopandas as gpd
import holoviews as hv
import geoviews as gv
import matplotlib.pyplot as plt
import matplotlib
import panel as pn
from cartopy import crs
gv.extension('bokeh')

我连接了 3 个 shapefile 以构建英国医疗保健边界的多边形图片(如果需要,提供文件链接)。不幸的是,根据我的发现,英国并没有生成一个结合了所有这些的文件,因此不得不合并来自我感兴趣的 3 个国家的形状文件。这 3 个形状文件的大小为:

形状文件 1 = 5mb (https://www.opendatani.gov.uk/dataset/department-of-health-trust-boundaries)

形状文件 2 = 204kb (https://geoportal.statistics.gov.uk/datasets/5252644ec26e4bffadf9d3661eef4826_4)

形状文件 3 = 22kb (https://data.gov.uk/dataset/31ab16a2-22da-40d5-b5f0-625bafd76389/local-health-boards-december-2016-ultra-generalised-clipped-boundaries-in-wales)

我已经成功地将它们全部合并来构建我要使用的图片:

Test = gv.Polygons(Merged_Shapes, vdims=[('Data'), ('CCG_Name')], crs=crs.OSGB()).options(tools=['hover'], width=550, height=700) 
Test_2 = gv.Polygons(Merged_Shapes, vdims=[('Data'), ('CCG_Name')], crs=crs.OSGB()).options(tools=['hover'], width=550, height=700)

但是,我想将这些图表包含在可共享的 html 文件中。我 运行 遇到的问题是,当我使用 HTML 保存时:

from bokeh.resources import INLINE
layout = hv.Layout(Test + Test_2)
Final_report = pn.Tabs(('Test',layout)).save('Map_test.html', resources=INLINE)

我生成了一个显示图表的 html 文件,但大小为 80mb,太大了,特别是如果我想在同一个 html 中包含更多多边形图表和其他图表.

有谁知道更有效的方法,从内存的角度来看,我可以将多边形图表存储在 HTML 文件中以供共享?

您可以通过光栅化或抽取形状来缩小文件。对于光栅化,你可以调用 hv.operation.datashader.rasterize(obj),我认为 Shapely 或 GeoPandas 中有一些东西可以简化形状。