用 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 中的地图旁边放置条形图?
用 Colomap 绘制线串 - Geopandas 和 Folium