【问题标题】: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 笔记本。这是个好建议。我试试看,谢谢!

标签: python pandas plot data-science folium


【解决方案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 秒内加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2016-10-02
    • 2022-12-03
    相关资源
    最近更新 更多