我使用folium来绘制一些坐标,每次我运行代码时,它都会在一些默认坐标而不是我定义的坐标处打开Map。
我试过:
import folium
import pandas as pd
# includes only an example route, dict contains N keys with each being a route. Not relevant to the issue
routes_processed = {0: [(41.4178016, 2.149055),
(41.419455, 2.1498049),
(41.4195666, 2.1499949),
(41.4195266, 2.1514833),
(41.4198416, 2.151785),
(41.4201266, 2.1517766),
(41.4204183, 2.1502616)]}
m = folium.Map(location=[41.399231, 2.168904])
def add_marker(points, m):
for point in [points[0], points[-1]]:
folium.Marker(point).add_to(m) # add the lines
def add_line(points, m):
folium.PolyLine(points, weight=5, opacity=1).add_to(m) # create optimal zoom
def fit_bounds(points, m):
df = pd.DataFrame(points).rename(columns={0:'Lon', 1:'Lat'})[['Lat', 'Lon']]
sw = df[['Lat', 'Lon']].min().values.tolist()
ne = df[['Lat', 'Lon']].max().values.tolist()
m.fit_bounds([sw, ne])
for key, value in routes_processed.items():
add_marker(value, m)
add_line(value, m)
fit_bounds(value, m)
m.show_in_browser()
我遵循了this教程和this另一个。
我期望浏览器在[41.399231,2.168904]坐标处打开,并限制在我在points变量中使用的坐标处。相反,我得到了非洲肯尼亚附近的某个地方。无论我使用什么输入坐标作为配置,这种情况都会发生。
终端中没有提示错误,我可以在每次运行代码时使用缩放来重新定位感兴趣区域。
我想可能是因为我用Map作为参数,并将配置重写为默认值。当我不绘制任何标记时,它会工作。
- 问题:**如何在不为
routes_processed
中坐标的每次迭代创建新的标记和线的情况下向Map添加标记和线,并使其保持在定义的位置[41.399231,2.168904]的中心?
- 问题:**如何在不为
环境
我正在MSI/第11代英特尔(R)酷睿(TM)i7 - 11800H上使用Windows 10 Pro。
使用conda环境,Python 3.9.15,folium版本0.14.0和panda 1.5.2。
从VSCode,powershell终端运行,并提示到Chrome 109.0.5414.75(官方版本)(64位)。
1条答案
按热度按时间xpszyzbs1#
我认为这个问题作为一个使用folium进行可视化的例子,作为一个用户是一个有用的代码,错误的原因是初等纬度和经度颠倒了,但是提问者给了我回答问题的机会。