我正在绘制美国空军在朝鲜战争期间对朝鲜执行的任务。以下是包含 2800 个标记的地图。
我一共有大约7500个数据点,但是每当我尝试绘制超过2800个数据点时,就会呈现一个空白的地图。我是在一台笔记本电脑上进行渲染的。如果我使用台式机渲染,会出现吗?或者这是folium的限制?
我不认为这是数据的问题。我将分享坐标数据,以防有人想要探索: link 以获取公共excel表格。
我一共有大约7500个数据点,但是每当我尝试绘制超过2800个数据点时,就会呈现一个空白的地图。我是在一台笔记本电脑上进行渲染的。如果我使用台式机渲染,会出现吗?或者这是folium的限制?
我不认为这是数据的问题。我将分享坐标数据,以防有人想要探索: link 以获取公共excel表格。
正如 @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示例
希望这对您有所帮助。
folium.map.FeatureGroup()
函数将在单个图层上添加3000个标记,然后我们可以使用add_child()
函数将该图层添加到地图上,这样可以减少地图上的图层数量。我得到了20000个标记和3000个线条的结果。并且能够在40-45秒内加载。