首席数据官

Hi, 请登录

基于WebGL的大数据二三维可视化--uber的deck.gl介绍

deck.gl是由uber开发并开源出来的基于WebGL的大数据量可视化框架。它具有提供不同类型可视化图层,GPU渲染的高性能,React和Mapbox GL集成,结合地理信息数据(GPS)的特点。下面我们就举两个例子探索一下这个神奇的库。

1.第一站:将源码的例子跑起来

源码在github里,首先克隆出来。

npm 下载,在项目根目录下

npm install

(友情提醒,如果npm下载速度比较慢,可以使用淘宝镜像,详细请自行搜索)

下面我们来到例子中,和上不一样在example文件夹下下载安装

npm install

安装成功之后,要申请mapbox的一个key。方法如下:

在mapbox网站注册后进入,我们便可以在Default Public Token

找到我们需要的mapbox key。

在例子文件夹下命令行下输入

export MAPBOX_ACCESS_TOKEN=

注意:cmd会不认export,可以使用git命令行,或者直接在代码中加入

//const MAPBOX_TOKEN = process.env.MAPBOX_ACCESS_TOKEN; //改为
const MAPBOX_TOKEN = 上面申请到的key>

然后执行

npm run start

浏览器会自动打开,地址为localhost:3030。

第一例子3d-heatmap,我们看到

对应官网上的例子

这是一个HexagonLayer的例子。

第二个例子是利用geojson

对应官网上的例子

2.第二站:先拿一个例子看看

第一例子3d-heatmap,显示效果上面有给出。

源码路径。

deck.gl 是基于地理信息数据的基于html5和webgl技术的大规模数据可视化,所以可视化很多都会分层两层,一层是地图数据底图,一层是可视化的数据。这个观念我们要记住,带进去看整个例子。对于这个例子组件MapGL是地里数据底图,组件DeckGLOverlay是可视化成的数据。

基本结构很见简单。

由于是使用React框架搭建,html很简单

- index.html


html>
  head>
    meta charset='UTF-8' />
    title>deck.gl exampletitle>
    style>
      body {margin: 0; padding: 0; overflow: hidden;}
    style>
  head>
  body>
    script src='bundle.js'>script>
  body>
html>

首先引入React和deckgl。

import React, {Component} from 'react';
import DeckGL, {HexagonLayer} from 'deck.gl';

几个变量先放出来,光线设置(LIGHT_SETTINGS),颜色范围设置(colorRange),高度显示范围(elevationScale),一些默认的属性(defaultProps)。

const LIGHT_SETTINGS = {
  lightsPosition: [-0.144528, 49.739968, 8000, -3.807751, 54.104682, 8000],
  ambientRatio: 0.4,
  diffuseRatio: 0.6,
  specularRatio: 0.2,
  lightsStrength: [0.8, 0.0, 0.8, 0.0],
  numberOfLights: 2
};
const colorRange = [
  [1, 152, 189],
  [73, 227, 206],
  [216, 254, 181],
  [254, 237, 177],
  [254, 173, 84],
  [209, 55, 78]
];
const elevationScale = {min: 1, max: 50};
const defaultProps = {
  radius: 1000,
  upperPercentile: 100,
  coverage: 1
};

我们建立叫DeckGLOverlay的组件

export default class DeckGLOverlay extends Component {
}

组件中提供了两个静态的属性,静态属性可以使用[类名].[方法名]调用,例如:DeckGLOverlay.defaultColorRange。

  static get defaultColorRange() {//默认的颜色范围
    return colorRange;
  }
  static get defaultViewport() {//默认的视图
    return {
      longitude: -1
试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏

来源【首席数据官】,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!

版权声明:本文内容来源互联网整理,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jkhui22@126.com举报,一经查实,本站将立刻删除。

相关推荐

二维码
评论