用 folium 绘制标记是不是有限制?

Posted

技术标签:

【中文标题】用 folium 绘制标记是不是有限制?【英文标题】:Is there a limit to plotting markers with folium?用 folium 绘制标记是否有限制? 【发布时间】:2018-10-03 16:55:40 【问题描述】:

我正在策划美国空军在朝鲜战争期间对朝鲜执行的任务。

以下是2800个地块的地图。

我总共有大约 7500 个图,但是每当我尝试在 2800 以上绘制时,都会渲染一个空白地图。我正在使用 PC 笔记本电脑进行渲染。如果我使用桌面,它会呈现吗?或者这是对叶的限制?

我不推测这是数据的问题。如果有人想探索它,我会分享坐标数据:link 到公共 excel 表。

【问题讨论】:

你是不是碰巧做弹窗? @BobHaffner 不,我没有使用弹出窗口 hmmm... 在 jupyter notebook 中渲染? 你应该能够绘制超过 2800 个。我曾经遇到过它不会在 jupyter 笔记本中呈现的情况,所以我不得不保存它然后在浏览器中打开它。此外,虽然应该绘制那些 7500,但可能需要一段时间。查看 FastMarkerClusters 以显着加快速度 @BobHaffner 是的,我使用了 jupyter 笔记本。这是个好建议。我试试看,谢谢! 【参考方案1】:

正如@Bob Haffner 建议的那样,您可以使用 Folium 库中的 FastMarkerCluster。 这是我的代码,在我的文件中有 ~500K 点。

import pandas as pd
import json
from folium.plugins import FastMarkerCluster

rome_lat, rome_lng = 41.9028, 12.4964
with open("file_name.json", 'r') as f:
  # create a new DataFrame
  samples = pd.DataFrame(json.loads(f.read()))        
# init the folium map object
my_map = folium.Map(location=[rome_lat, rome_lng], zoom_start=5)
# add all the point from the file to the map object using FastMarkerCluster
my_map.add_child(FastMarkerCluster(samples[['latitude', 'longitude']].values.tolist()))
# save the map 
my_map.save("save_file.html")

此代码需要大约 10 毫秒来渲染地图。

更多细节示例请点击此链接: FastMarkerCluster example

希望这有帮助。

【讨论】:

这是标记而不是圆圈。 “FastMarkerCluster 示例”的链接已损坏。该博文是否有其他版本或存档? 嗨@blong,你可以尝试从 Bob Haffner 的 GitHub LINK987654322@的旧帖子中探索代码【参考方案2】:

另一种选择是我们可以在一个图层上添加特定数量的标记(比如说 3000 个标记),使用 folium.map.FeatureGroup() 函数将在单个图层上添加 3000 个标记,我们可以将该图层添加到地图中使用add_child() 函数,它减少了地图上的层数。我得到了 20,000 个标记和 3000 行字符串的结果。并且能够在 40-45 秒内加载。

【讨论】:

以上是关于用 folium 绘制标记是不是有限制?的主要内容,如果未能解决你的问题,请参考以下文章

如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?

用folium在物体上绘制航向

无法用folium绘制地图

用 Colomap 绘制线串 - Geopandas 和 Folium

使用 Python 地图绘制工具 -- folium 全攻略

使用 Python 地图绘制工具 -- folium 全攻略