如何使用Shiny/leaflet向客户端发送更少的数据

问题描述 投票:0回答:1

我想托管一个页面,以可视化美国人口普查区级别的分区统计图。我认为,由于所需数据的保真度,最好将其实现为某种闪亮的服务器,该服务器仅向客户端发送必要的分辨率级别,仅限于与其视口相关的内容。我该怎么做?

当地图可以作为静态 HTML 文件提供时,我经常在 GitHub 页面上托管地图。 GitHub 的文件大小限制为 25 MB,无需使用大文件存储,并且对于在移动设备上渲染地图,如果客户端使用移动连接,则最好不要向客户端推送超过 25 MB 的文件。因此,通过 GitHub 页面提供的静态文件 HTML 传单或 mapdeck 不会很好地工作。 (问题是,要使用具有足够高 dTolerance (~250m) 的

sf::st_simplify
来使文件大小小于 25 MB,小型人口普查区域渲染效果不佳,请参见示例)。

我了解如何在传单中进行与比例相关的渲染,就像我的博客文章在这里或在接受的解决方案这里

所以,我希望能够为网络客户端/浏览器渲染一张地图,一次最多只发送几兆字节,但据我所知:

  • 如果我使用所有美国人口普查数据,将原始地图保存为 .html 文件会产生 >25 MB 的空间
  • 压缩人口普查区会导致地图在密集区域看起来很糟糕。
  • 如果我使用比例相关渲染,即使我将其放入 Shiny,这实际上并不会减少发送到 Web 客户端的数据量,因为传单似乎仍然将所有层发送到客户端.

我怎样才能真正减少发送到网络客户端的数据量,至少这样移动连接上的人可以合理地使用地图?

r shiny mapping choropleth r-leaflet
1个回答
0
投票

减少几何尺寸而不在多边形之间创建间隙或条子的一种方法是使用 {rmapshaper} 或 https://mapshaper.org/ 来简化图层但保留拓扑。

如果您的图层很大,则在使用 {rmapshaper} 时可能必须使用本地安装的 Node.js Mapshaper。

© www.soinside.com 2019 - 2024. All rights reserved.