folium是否存在标记绘制数量限制?

8
我正在绘制美国空军在朝鲜战争期间对朝鲜执行的任务。以下是包含 2800 个标记的地图。

enter image description here

我一共有大约7500个数据点,但是每当我尝试绘制超过2800个数据点时,就会呈现一个空白的地图。我是在一台笔记本电脑上进行渲染的。如果我使用台式机渲染,会出现吗?或者这是folium的限制?

我不认为这是数据的问题。我将分享坐标数据,以防有人想要探索: link 以获取公共excel表格。


你是否偶然在使用弹出窗口? - Bob Haffner
1
@BobHaffner 不,我没有使用弹出窗口。 - ekim420
嗯...在Jupyter笔记本中渲染? - Bob Haffner
1
你应该能够绘制超过2800个数据点。我曾经遇到过在jupyter笔记本中无法渲染的情况,所以我不得不将其保存然后在浏览器中打开。此外,虽然那7500个数据点应该可以绘制,但可能需要一些时间。请查看FastMarkerClusters以获得显著的加速效果。 - Bob Haffner
@BobHaffner 是的,我使用jupyter笔记本。这是个好建议。我会试试看的,谢谢! - ekim420
2个回答

11

正如 @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示例

希望这对您有所帮助。


这是标记而不是圆形。 - secsilm
“FastMarkerCluster example”的链接已经失效。是否有该博客文章的其他版本或存档? - blong
1
嗨@blong,你可以尝试在Bob Haffner的GitHub [链接](https://github.com/bobhaffner/medium_posts/blob/master/folium_markerclusters/folium_markerclusters.ipynb)中探索旧帖子的代码。 - DavidDr90

1
另一个选项是我们可以在一个图层上添加特定数量的标记(假设是3000个标记),使用folium.map.FeatureGroup()函数将在单个图层上添加3000个标记,然后我们可以使用add_child()函数将该图层添加到地图上,这样可以减少地图上的图层数量。我得到了20000个标记和3000个线条的结果。并且能够在40-45秒内加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接