[英]How can I plot OpenStreetMap by road (or way) instead of by geolocation?
我的数据样本:
longitude latitude count
way_id
3996189 -3.732425 40.362795 12173
3996191 -3.596423 40.429618 1656
3996195 -3.603010 40.429786 211
3996196 -3.605451 40.434605 772
3996199 -3.606216 40.434230 1063
3996203 -3.606369 40.434044 40
3997425 -3.606917 40.424344 3080
3997426 -3.607961 40.434094 2095
3997427 -3.604154 40.423951 465
3997428 -3.606116 40.425008 217
要复制此 DataFrame:
df = pd.DataFrame({'longitude': {3996189: -3.732425,
3996191: -3.596423,
3996195: -3.60301,
3996196: -3.605451,
3996199: -3.606216,
3996203: -3.606369,
3997425: -3.606917,
3997426: -3.607961,
3997427: -3.604154,
3997428: -3.606116},
'latitude': {3996189: 40.362795,
3996191: 40.429618,
3996195: 40.429786,
3996196: 40.434605,
3996199: 40.43423,
3996203: 40.434044,
3997425: 40.424344,
3997426: 40.434094,
3997427: 40.423951,
3997428: 40.425008},
'count': {3996189: 12173,
3996191: 1656,
3996195: 211,
3996196: 772,
3996199: 1063,
3996203: 40,
3997425: 3080,
3997426: 2095,
3997427: 465,
3997428: 217}})
way_id
是与 OpenStreetMap 的ways对应的 ID。 例如,对于 ID = 3997428 的方式,您可以得到:
... 通过https://www.openstreetmap.org/way/3997428 。 我想展示一个 map 和 Python,其中所有way_id
都可以使用基于我数据中count
列的自定义颜色绘制。 我知道如何通过 plot 获取所有经度/纬度值plotly.express.scatter_mapbox
:
fig = px.scatter_mapbox(subsub_traces, lat="latitude", lon="longitude",
color="count", zoom=10,
mapbox_style='carto-positron',
size="count")
plot(fig, auto_open=True)
这显然绘制了地理位置而不是实际道路。 我在 OpenStreetMap 的文档中搜索了解决此问题的方法(双关语),但我找不到合适的功能。 我还搜索了OSMnx的文档,但无济于事。 我能找到的唯一接近的是osmnx.plot_graph_route
方法,其中 colors 是 OSM 数据上的一条路线,但它适用于图表。 关于如何解决这个问题的任何建议?
试试folium : http://python-visualization.github.io/folium/
您需要先创建一个folium.Map ,然后为每种方式遍历 dataframe 和 plot 一条折线。
请注意,每条路都需要两个坐标,即路的起始节点和结束节点。 修复您的 dataframe,为每个点添加两列(纬度、经度)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.