OpenLayers基础教程——使用WebGLPoints加载海量点数据

这篇具有很好参考价值的文章主要介绍了OpenLayers基础教程——使用WebGLPoints加载海量点数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

最近遇到一个问题:如何在OpenLayers中高效加载海量的场强点?由于项目中的一些要求,不能使用聚合的方法加载。一番搜索之后发现:OpenLayers中有一个WebGLPoints类,使用该类可以轻松应对几十万的数据量,下面开始介绍。

2、使用ol.layer.Vector

ol.layer.Vector是常用的矢量要素图层,下面这段代码演示了加载100000个随机点:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebGL</title>
    <style>
        html,
        body,
        #map {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
    <link rel="stylesheet" href="libs/ol/ol.css" />
    <script src="libs/ol/ol.js"></script>
</head>
<body>
    <div id="map"></div>
    <script>
        // 创建图层
        var layer = new ol.layer.Vector({
            source: new ol.source.Vector(),
            style: new ol.style.Style({
                image: new ol.style.Circle({
                    radius: 20,
                    fill: new ol.style.Fill({
                        color: 'red'
                    })
                })
            })
        });

        // 创建要素
        var source = layer.getSource();
        for (var i = 1; i <= 100000; i++) {
            var coordinates = [120.00 + Math.random(), 30.00 + Math.random()];
            var feature = new ol.Feature(new ol.geom.Point(coordinates));
            source.addFeature(feature);
        }

        // 创建地图
        var map = new ol.Map({
            target: 'map',
            layers: [
                layer
            ],
            view: new ol.View({
                projection: 'EPSG:4326',
                center: [120, 30],
                zoom: 10
            })
        });
    </script>
</body>
</html>

运行程序后可以发现:界面卡顿严重,用户体验较差。

openlayers加载海量数据,JavaScript,openlayers

3、使用ol.layer.WebGLPoints

下面使用ol.layer.WebGLPoints来加载100000个随机点,需要注意:OpenLayers的版本从6开始才支持ol.layer.WebGLPoints

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebGL</title>
    <style>
        html,
        body,
        #map {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
    <link rel="stylesheet" href="libs/ol/ol.css" />
    <script src="libs/ol/ol.js"></script>
</head>
<body>
    <div id="map"></div>
    <script>
        // 创建图层
        var layer = new ol.layer.WebGLPoints({
            source: new ol.source.Vector(),
            style: {
                symbol: {
                    symbolType: 'circle',
                    size: 20,
                    color: 'red'
                }
            }
        });

        // 创建要素
        var source = layer.getSource();
        for (var i = 1; i <= 100000; i++) {
            var coordinates = [120.00 + Math.random(), 30.00 + Math.random()];
            var feature = new ol.Feature(new ol.geom.Point(coordinates));
            source.addFeature(feature);
        }

        // 创建地图
        var map = new ol.Map({
            target: 'map',
            layers: [
                layer
            ],
            view: new ol.View({
                projection: 'EPSG:4326',
                center: [120, 30],
                zoom: 10
            })
        });
    </script>
</body>
</html>

运行程序后可以发现:界面无卡顿,用户体验较好。

openlayers加载海量数据,JavaScript,openlayers

4、结语

WebGL由于使用GPU加速渲染,因此绘图效率较高。在OpenLayers的开发中,如果遇到加载海量数据点的需求,不妨考虑使用WebGLPoints实现。文章来源地址https://www.toymoban.com/news/detail-859261.html

到了这里,关于OpenLayers基础教程——使用WebGLPoints加载海量点数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Openlayers实战:加载GPX文件

    在OPenlayers的交互中,经常性的我们要加载一些数据,在这个实战中,演示的是加载GPX文件。 GPX(GPS eXchange Format,GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式。它可以用来描述路点、轨迹、路程。这个格式是免费的,可以在不需要付任何许可费用的前提下

    2024年02月16日
    浏览(33)
  • 海量遥感数据处理与GEE云计算技术应用【基础、进阶】

    目前,GEE以其强大的功能受到了国外越来越多的科技工作者的重视和应用,然而在国内应用还十分有限。应广大科学工作者的要求,本学习将结合具体范例,重点介绍利用GEE进行数据处理的常用方法,并通过土地遥感信息提取进行进阶训练,掌握实际操作能力。  海 量 遥 感

    2024年01月21日
    浏览(44)
  • SeaTunnel 海量数据同步工具的使用(连载中……)

    SeaTunnel 是一个非常易用,高性能、支持实时流式和离线批处理的海量数据处理产品,前身是 WaterDrop (中文名:水滴),自 2021年10月12日更名为 SeaTunnel 。2021年12月9日,SeaTunnel 正式通过Apache 软件基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目。 2022年

    2024年01月16日
    浏览(29)
  • openLayers基础地图操作

    和高德地图,百度地图,腾讯地图,Arcgis一样,OpenLayers是一个用于开发WebGIS客户端的JavaScript包。 它有自带的api在线说明官方文档: https://openlayers.org/ 。也有中文api网站: http://linwei.xyz/ol3-primer/ch01/index.html 。 openLayers依赖包npm安装: npm install ol --save openLayers依赖包yarn安装:

    2024年02月05日
    浏览(40)
  • openlayers controls基础知识

    控件是一个可见的小部件,其 DOM 元素位于屏幕上的固定位置。 它们可以涉及用户输入(按钮),或者仅提供信息; 位置是使用 CSS 确定的。 默认情况下,它们放置在 CSS 类名为 ol-overlaycontainer-stopevent 的容器中,但可以使用任何外部 DOM 元素。 .在Openlayers中多数Controls直接可

    2024年02月12日
    浏览(26)
  • Vue+OpenLayers6从入门到实战进阶案例汇总目录,Vue+OpenLayers6地图整合教程,OpenLayers6中文文档,OpenLayers6中文手册

    本篇作为《Vue+OpenLayers6入门教程》和《Vue+OpenLayers6实战进阶案例》所有文章的二合一汇总目录,方便查找。 本专栏源码是由OpenLayers6.15.1版本结合Vue2框架编写,同时支持Vue3,零星几篇文章用到了Element-UI库。 本专栏从Vue搭建脚手架到如何引入OpenLayers依赖的每一步详细新手教程

    2024年04月23日
    浏览(63)
  • openlayers 入门教程(六):controls 篇

    还是大剑师兰特 :曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。 No. 内容链接 1 Openlayers 【入门教

    2024年04月15日
    浏览(28)
  • java中多线程去跑海量数据使用线程池批量ThreadPoolExecutor处理的方式和使用Fork/Join框架的方式那种效率高?

    在Java中,使用线程池(ThreadPoolExecutor)和使用Fork/Join框架来处理海量数据的效率取决于具体的应用场景和需求。下面是一些需要考虑的因素: 任务类型:如果任务是CPU密集型的,那么使用Fork/Join框架可能更高效,因为它可以自动进行任务分割和并行处理。如果任务是I/O密集

    2024年02月10日
    浏览(38)
  • 【scikit-learn基础】--『数据加载』之外部数据集

    这是 scikit-learn 数据加载系列的最后一篇,本篇介绍如何加载 外部的数据集 。 外部数据集 不像之前介绍的几种类型的数据集那样,针对每种数据提供对应的接口,每个接口加载的数据都是固定的。 而外部数据集加载之后,数据的字段和类型是不确定的。 简单来说,我们在

    2024年02月05日
    浏览(37)
  • 【scikit-learn基础】--『数据加载』之玩具数据集

    机器学习的第一步是准备数据,好的数据能帮助我们加深对机器学习算法的理解。 不管是在学习还是实际工作中, 准备数据 永远是一个枯燥乏味的步骤。 scikit-learn 库显然看到了这个痛点,才在它的 数据加载 子模块中为我们准备了直接可用的数据集。 在它的 数据加载 子模

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包