繁体   English   中英

我怎样才能通过道路(或方式)而不是通过地理定位 plot OpenStreetMap?

[英]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 数据上的一条路线,但它适用于图表。 关于如何解决这个问题的任何建议?

试试foliumhttp://python-visualization.github.io/folium/

您需要先创建一个folium.Map ,然后为每种方式遍历 dataframe 和 plot 一条折线

请注意,每条路都需要两个坐标,即路的起始节点和结束节点。 修复您的 dataframe,为每个点添加两列(纬度、经度)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM