「AntV」路网数据获取与L7可视化

antv,路网,数据,获取,l7,可视化 · 浏览次数 : 115

小编点评

当然,您需要带简单的排版生成内容时需要带简单的排版。 您需要按照以下步骤进行排版: 1. 在您的排版工具中选择排版符号。 2. 在您的排版工具中选择“符号”。 3. 在您的排版工具中选择“排版”。 4. 在您的排版工具中选择“排版符号”。 5. 在您的排版工具中选择“符号”。 6. 在您的排版工具中选择“排版”。 7. 在您的排版工具中选择“排版符号”。 8. 在您的排版工具中选择“符号”。 9. 在您的排版工具中选择“排版”。 10. 在您的排版工具中选择“排版符号”。 11. 在您的排版工具中选择“符号”。 12. 在您的排版工具中选择“排版”。 13. 在您的排版工具中选择“排版符号”。 14. 在您的排版工具中选择“符号”。 15. 在您的排版工具中选择“排版”。 16. 在您的排版工具中选择“排版符号”。 17. 在您的排版工具中选择“符号”。 18. 在您的排版工具中选择“排版”。 19. 在您的排版工具中选择“排版符号”。 20. 在您的排版工具中选择“符号”。 21. 在您的排版工具中选择“排版”。 22. 在您的排版工具中选择“排版符号”。 23. 在您的排版工具中选择“符号”。 24. 在您的排版工具中选择“排版”。 25. 在您的排版工具中选择“排版符号”。 26. 在您的排版工具中选择“符号”。 27. 在您的排版工具中选择“排版”。 28. 在您的排版工具中选择“排版符号”。 29. 在您的排版工具中选择“符号”。 30. 在您的排版工具中选择“排版”。 31. 在您的排版工具中选择“排版符号”。 32. 在您的排版工具中选择“符号”。 33. 在您的排版工具中选择“排版”。 34. 在您的排版工具中选择“排版符号”。 35. 在您的排版工具中选择“符号”。 36. 在您的排版工具中选择“排版”。 37. 在您的排版工具中选择“排版符号”。 38. 在您的排版工具中选择“符号”。 39. 在您的排版工具中选择“排版”。 40. 在您的排版工具中选择“排版符号”。 41. 在您的排版工具中选择“符号”。 42. 在您的排版工具中选择“排版”。 43. 在您的排版工具中选择“排版符号”。 44. 在您的排版工具中选择“符号”。 45. 在您的排版工具中选择“排版”。 46. 在您的排版工具中选择“排版符号”。 47. 在您的排版工具中选择“符号”。 48. 在您的排版工具中选择“排版”。 49. 在您的排版工具中选择“排版符号”。 50. 在您的排版工具中选择“符号”。 51. 在您的排版工具中选择“排版”。 52. 在您的排版工具中选择“排版符号”。 53. 在您的排版工具中选择“符号”。 54. 在您的排版工具中选择“排版”。 55. 在您的排版工具中选择“排版符号”。 56. 在您的排版工具中选择“符号”。 57. 在您的排版工具中选择“排版”。 58. 在您的排版工具中选择“排版符号”。

正文

1. 引言

L7 地理空间数据可视分析引擎是一种基于 WebGL 技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用。L7 引擎支持多种数据源和数据格式,包括 GeoJSON、CSV等,可以快速加载和渲染大规模地理空间数据。L7 引擎还提供了丰富的可视化效果和交互功能,包括热力图、等高线图、鼠标交互等,可以帮助用户更好地理解和分析地理空间数据。

L7 官网:蚂蚁地理空间数据可视化 | AntV (antgroup.com)

L7 GitHub 仓库:antvis/L7: 🌎 Large-scale WebGL-powered Geospatial Data Visualization analysis engine (github.com)

L7 官方教程:简介 | L7 (antgroup.com)

L7 官方示例:所有图表 | L7 (antgroup.com)

L7 API文档:场景 Scene | L7 (antgroup.com)

本文描述使用L7对路网数据进行可视化

2. 数据获取

路网数据可以从以下网站下载,数据来源自OSM:Index of /extracts (openstreetmap.fr)

其中,中国的路网数据可以从这个下载:Index of /extracts/asia/china (openstreetmap.fr)

笔者这里下载上海的数据:http://download.openstreetmap.fr/extracts/asia/china/shanghai.osm.pbf

下载好以后可以直接拖入QGIS中:

image-20230608025426654

  • 注:这里加载了Lines,数据量较大,绘制卡顿。且路网质量也欠佳

在图层上右键选择导出

image-20230608025441930

导出为GeoJSON

image-20230608025517171

导出的数据尺寸为84 MB,至此数据获取完成

3. L7可视化

可参考官方路网图样例:路径地图 | L7 (antgroup.com)

3.1 加载底图

加载高德地图

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src='https://unpkg.com/@antv/l7'></script>
  <style>
    body,
    #map {
      height: 100vh;
      width: 100vw;
      margin: 0;
    }
  </style>
</head>

<body>
  <div id="map"></div>
  <script>
    const scene = new L7.Scene({
      id: 'map',
      map: new L7.GaodeMap({
        center: [116.3956, 39.9392],
        zoom: 2,
        style: 'light'
      })
    });
  </script>
</body>

</html>

image-20230608024834829

3.2 加载数据并解析

加载数据,L7对于GeoJSON无需额外设置解析器:

scene.on('loaded', () => {
    fetch('./lines.geojson')
        .then(res => res.json())
        .then(data => {
        console.log(data);
    })
});

image-20230608033901544

3.3 绘制样式

绘制线图层,并设置样式:

const layer = new L7.LineLayer({
    zIndex: 2,
})
    .source(data)
    .size(0.5)
    .active(true)
    .color('highway', (type) => {
        switch (type) {
            case "bridleway"  :
                return '#c81841';
            case "bus_guideway" :
                return '#39a0cc';
            case "bus_stop"  :
                return '#0d70cc';
            case "busway"  :
                return '#d385dd';
            case "construction"  :
                return '#30e5dc';
            case "corridor"  :
                return '#ca6166';
            case "cycleway"  :
                return '#c94534';
            case "elevator"  :
                return '#c3ee79';
            case "footway"  :
                return '#df7f53';
            case "living_street" :
                return '#0d2dce';
            case "motorway"  :
                return '#c8659f';
            case "motorway_link" :
                return '#15d066';
            case "path"  :
                return '#cab646';
            case "pedestrian" :
                return '#2ddb95';
            case "planned" :
                return '#36cd25';
            case "platform" :
                return '#d99b1f';
            case "primary"  :
                return '#75cc53';
            case "primary_link" :
                return '#e31eb2';
            case "proposed"  :
                return '#4e2bec';
            case "raceway"  :
                return '#c8721c';
            case "residential" :
                return '#6ced77';
            case "road"  :
                return '#57e079';
            case "secondary" :
                return '#2063e9';
            case "secondary_link" :
                return '#7aec1d';
            case "service"  :
                return '#58d9ed';
            case "services"  :
                return '#1fe3b9';
            case "steps"  :
                return '#e010d2';
            case "tertiary"  :
                return '#adca37';
            case "tertiary_link"  :
                return '#d0d32e';
            case "track"  :
                return '#e04684';
            case "trunk"  :
                return '#b232e4';
            case "trunk_link"  :
                return '#822dcd';
            case "unclassified"  :
                return '#a686de';
            case "null"  :
                return '#1f1bef';
            case ""  :
                return '#beb297';
            default:
                return '#beb297';
        }
    });
scene.addLayer(layer);
});

image-20230608033429972

3.4 完整代码

完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src='https://unpkg.com/@antv/l7'></script>
  <style>
    body,
    #map {
      height: 100vh;
      width: 100vw;
      margin: 0;
    }
  </style>
</head>

<body>
  <div id="map"></div>
  <script>
    const scene = new L7.Scene({
      id: 'map',
      map: new L7.GaodeMap({
        center: [116.3956, 39.9392],
        zoom: 2,
        style: 'dark'
      })
    });

    scene.on('loaded', () => {
      fetch('./lines.geojson')
        .then(res => res.json())
        .then(data => {
          const layer = new L7.LineLayer({
            zIndex: 2,
          })
            .source(data)
            .size(0.5)
            .active(true)
            .color('highway', (type) => {
              switch (type) {
                case "bridleway"  :
                  return '#c81841';
                case "bus_guideway" :
                  return '#39a0cc';
                case "bus_stop"  :
                  return '#0d70cc';
                case "busway"  :
                  return '#d385dd';
                case "construction"  :
                  return '#30e5dc';
                case "corridor"  :
                  return '#ca6166';
                case "cycleway"  :
                  return '#c94534';
                case "elevator"  :
                  return '#c3ee79';
                case "footway"  :
                  return '#df7f53';
                case "living_street" :
                  return '#0d2dce';
                case "motorway"  :
                  return '#c8659f';
                case "motorway_link" :
                  return '#15d066';
                case "path"  :
                  return '#cab646';
                case "pedestrian" :
                  return '#2ddb95';
                case "planned" :
                  return '#36cd25';
                case "platform" :
                  return '#d99b1f';
                case "primary"  :
                  return '#75cc53';
                case "primary_link" :
                  return '#e31eb2';
                case "proposed"  :
                  return '#4e2bec';
                case "raceway"  :
                  return '#c8721c';
                case "residential" :
                  return '#6ced77';
                case "road"  :
                  return '#57e079';
                case "secondary" :
                  return '#2063e9';
                case "secondary_link" :
                  return '#7aec1d';
                case "service"  :
                  return '#58d9ed';
                case "services"  :
                  return '#1fe3b9';
                case "steps"  :
                  return '#e010d2';
                case "tertiary"  :
                  return '#adca37';
                case "tertiary_link"  :
                  return '#d0d32e';
                case "track"  :
                  return '#e04684';
                case "trunk"  :
                  return '#b232e4';
                case "trunk_link"  :
                  return '#822dcd';
                case "unclassified"  :
                  return '#a686de';
                case "null"  :
                  return '#1f1bef';
                case ""  :
                  return '#beb297';
                default:
                  return '#beb297';
              }
            });
          scene.addLayer(layer);
        });
    });

  </script>
</body>

</html>

4. 参考资料

[1] 简介 | L7 (antgroup.com)

[2] 所有图表 | L7 (antgroup.com)

[3] 场景 Scene | L7 (antgroup.com)

与「AntV」路网数据获取与L7可视化相似的内容:

「AntV」路网数据获取与L7可视化

本文描述使用L7对路网数据进行可视化

「AntV」基于众源轨迹数据的三维路网生成与L7可视化

本文描述使用L7对长沙岳麓山景点游客轨迹数据进行可视化并构建三维路网

「AntV」X6 自定义vue节点(vue3)

官方文档 本篇文档只讲解vue3中如何使用,vue2的可以参考下官方文档 安装插件 @antv/x6-vue-shape 添加vue组件 既然使用vue节点,那么我们就需要准备一个vue的组件,这个组件就是节点的一些样式,根据你们的ui自行写代码即可 节点名称

「AntV」L7 快速入门示例

本文主要描述AntV L7的基础功能使用

「AntV」Vue3与TS框架下使用L7

本文基于Vite、Vue3和TypeScript搭建L7开发环境并示例

「AntV」全球AQI数据获取与L7可视化

本文描述使用L7对全球AQI数据进行可视化

「AntV」景点轨迹数据获取与L7可视化

本文描述使用L7对长沙岳麓山景点游客轨迹数据进行可视化

「AntV」L7地理可视化:从入门到实践

这是一篇由浅入深的AntV L7的学习笔记总结

antv-x6 使用及总结

antv-x6是一个功能强大、可扩展性高的可视化工具,提供了一系列开箱即用的交互软件和简单易用的节点定制能力,能够帮助使用者便捷地创建流程图、ER图等交互性较强的应用。本次分享介绍了x6的基本功能,更多高级功能有待我们进一步学习和探索。

monaco-editor 实现SQL编辑器

原文链接:https://www.yuque.com/sxd_panda/antv/editor 安装 yarn add monaco-editor 或 npm install monaco-editor 配置 看网上的教程需要添加vite配置,但是我的项目没有对vite进行配置,打包出来的也是可以