映射许多数据并单独绘制传单上的道路

Mapping many data and drawing lines alone the roads on leaflet

我想在我的网页中做一些像Google地图中的交通状况,我在前端使用React和Leaflet(react-leaflet)。我在城市周围有数百万个点,格式如 [纬度、经度、方位、速度]。

我试图盲目地将数据绘制为标记或多段线,当然,浏览器似乎需要很长时间才能加载。

看来我需要完成以下任务,但我不知道如何实现它们:

  1. 从某处获取道路信息(在 openstreet 地图中称为“way”吗?)。
  2. 找到一些算法将点映射到道路。
  3. 平均每个路段点的速度但保持方向。
  4. 根据路段画线

是否有人可以为我指明实现这些目标的方向,尤其是 1 和 2?非常感谢。

您所描述的是您需要解决的一系列问题。你最好把它分成几个部分,尝试解决每个部分,并在展示你的努力的同时寻求帮助。

我会尝试通过指出一些需要记住的困难/条件来提供帮助。

  • 您很难仅使用前端解决方案来实施您的项目。在前端将所有数据作为矢量数据加载会显着增加加载时间,并可能很快导致延迟,通常会导致糟糕的用户体验。考虑使用空间服务器(例如 GeoServer)为 WMS 或 WFS(例如使用 BBox 策略)提供服务。

  • 您想根据您的积分值给路段赋值。但首先,你需要决定你希望它发生在哪里。前端?后端?我会建议后者,但这意味着如果没有 PostGIS,您可能无法逃脱。此外,您将不得不下载整个道路数据集,这意味着您可能必须限制您的区域(或者您将不得不处理大量数据)。

  • 如果您想继续使用前端解决方案,那么您需要在矢量数据中获取道路(例如,从矢量切片),用您的线条创建一个 GeoJson(分配一个值每一个)并将你的线捕捉到道路(例如使用Turf.js)。或者您可以尝试使用地图匹配服务捕捉您生成的折线(例如 OSRM、Mapbox 地图匹配 API)。