Folium PolyLine 在地图上未显示 - 在 Jupyter 笔记本中使用 folium 0.7.0 和 python 3.6(anaconda)

3

我有一个使用以下代码生成的纽约市某个社区的folium地图:

m = folium.Map(location=[40.7035, -73.990], 
               zoom_start=16.5,
               tiles='cartodbpositron')

我尝试使用folium.PolyLine()添加连接地图上点的线路,但即使我在调用m._children时看到它们已列出,它们也不会显示在地图上。
以下是创建线路的代码,其中G是一个networkx图:
for x, y in G.edges():
    points = [nx.get_node_attributes(G, 'loc')[x], nx.get_node_attributes(G, 'loc')[y]]
    egde = folium.PolyLine(locations=points, weight=5, color='red')
    edge.add_to(m)

一个示例:
[(-73.986635, 40.703988), (-73.988683, 40.702674)]

m.children的输出结果(前几行):

OrderedDict([('cartodbpositron',
              <folium.raster_layers.TileLayer at 0x12279feb8>),
             ('poly_line_ae5785771a2148c5a8559cb0085b10a4',
              <folium.vector_layers.PolyLine at 0x122892128>),
             ('poly_line_ee73b495559940d484064e8c8492eda5',
              <folium.vector_layers.PolyLine at 0x1229734a8>),
             ('poly_line_415a7ed70a2a425e876c8a6711408a6a', ...

你有什么想法我可能做错了什么吗?


2
folium polyline 期望传入 y, x,而你传入的是 x, y - Bob Haffner
哇,我很惊讶我没有发现那个。谢谢 @BobHaffner! - Prratek Ramchandani
没问题。那个我没有被卡几次 :-) - Bob Haffner
1个回答

0

这有点奇怪,因为 folium polyline 要求使用 [纬度,经度] 格式的坐标,而通常接受的格式是 [经度,纬度]

让我们来看一个例子: 我假设您正在使用 OSRM 获取几何信息。

OSRM 几何信息以 [[经度,纬度],...] 的形式返回坐标。

如果您直接将其与 folium 一起使用,它将无法显示折线。

使用以下函数反转几何坐标:

def reverse_lon_lat(x):
    a = [[p[1], p[0]] for p in x]
    return a

并绘制您打算的折线。


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