Jinuss's blog Jinuss's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

东流

前端可视化
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • React

  • Vue

  • JavaScript文章

  • 学习笔记

  • openlayers

    • Openlayers用图片填充面
    • Openlayers用图片填充线
    • openlayers处理大量Overlay渲染问题
    • openlayers的比例尺
    • openlayers水印
    • openlayer实现矢量图层点击高亮效果
    • openlayers实现自定义路径
    • Openlayers加载渲染矢量切片
      • openlayers实现角度测量
      • openlayers实现长度测量
      • openlayers实现面积测量
      • Openlayers实现方位角测量
      • Openlayers中的动画
      • Openlayers的多边形高级交互
      • Openlayers地图底图换色
      • Openlayers种的默认交互事件
      • Openlayers默认键盘交互实现
      • 源码分析之Openlayers中默认键盘事件触发机制
      • 源码分析之Openlayers中的Collection类
    • threejs

    • MapboxGL

    • 工具

    • 源码合集

    • 前端
    • openlayers
    东流
    2024-10-24
    目录

    Openlayers加载渲染矢量切片

    # 概述

    在Web Worker 加载外部文件实践 (opens new window)文中提到 Openlayers 加载外部 GEOJSON 文件渲染作为地图底图。当矢量数据很大,又不想加载图层服务时,可以考虑矢量切片。

    # 矢量切片

    矢量切片是以金字塔方式切割矢量数据,切割的不是栅格图片,而是矢量数据的描述性文件,和常见的栅格切片是两码事。

    # PBF 数据格式

    PBF 则是一种轻便、高效的结构化数据存储格式,可以用于结构化数据串行化或者序列化。很合适做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域相关的语言无关】平台无关、可扩展的序列化结构数据格式。MVT(Mapbox Vector Tile)就是采用 PBF(Protocol Buffer)格式组织单个切片内要素的信息。

    # 前端实现

    Openlayers 的 ol/layer/VectorTile类可以加载并渲染 pdf 文件。

    核心代码如下:

    const layer = new VectorTile({
      declutter: true,
      renderMode: "vector",
      source: new VectorSource({
        format: new MVT(),
        projection: new Projection({
          code: "EPSG:4326",
          units: "degrees",
        }),
        url: "http://127.0.0.1:8087/gis/xyz/getTile0190184030088408124620852/dxt_element_r/4326/{z}/{x}/{y}.PBF",
      }),
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 效果展示

    当放大或缩小地图时,Openlayers 会同加载栅格瓦片一样,通过通配符{z}/{x}/{y}去获取对应的 pbf 文件,pbf 文件本质上就是后端生成的一个二进制文件,体积很小。

    效果如下:

    # 矢量切片优缺点

    矢量切片 PBF 的优缺点如下:

    优点

    • 相对于原始矢量数据,地图矢量切片更小巧,重新进行了编码,并进行了切分,只返回请求区域和相应级别的矢量数据。
    • 数据信息接近无损,但体积更小,地图矢量切片的大小通常比地图栅格切片小,这使得数据传输得更快,可以使用更小的带宽。
    • 数据在客户端渲染,而不是在服务器。这允许不同的地图应用程序使用不同的样式去渲染一个地图,而不需要事先在服务器进行预先的样式配置。
    • 更灵活,可以只返回每个专题数据的图层,而不像地图栅格切片那样把很多专题数据渲染在一张底图中。

    缺点

    • 地图矢量切片只能用于渲染。虽然是矢量格式,但它们不可编辑,地图矢量切片是为了读取和渲染的优化。

    # 总结

    矢量切片最合适的应用方向就是在对于渲染速度有要求的前提下使用,因为无法修改切片的样式。

    编辑 (opens new window)
    上次更新: 2024/11/06, 06:38:37
    openlayers实现自定义路径
    openlayers实现角度测量

    ← openlayers实现自定义路径 openlayers实现角度测量→

    最近更新
    01
    GeoJSON
    05-08
    02
    Circle
    04-15
    03
    CircleMarker
    04-15
    更多文章>
    Theme by Vdoing | Copyright © 2024-2025 东流 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式