首页编程开发ECharts【数据可视化(EChart...

【数据可视化(ECharts篇)】41.地理数据可视化——加载三维建筑数据

本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1W26KrZK7RjwgxvulccTA9w?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Data_Visualization





ECharts中加载三维建筑数据需要series中的type设置为"polygons3D"

polygons3D用于可视化地图上带有高度信息的多边形数据,常用于建筑群的绘制。

01
数据说明

本次使用的三维建筑数据为网络获取的厦门市思明区和湖里区的建筑数据。原始数据为shp格式,可以通过QGIS这类软件查看,也可以通过mapshaper(网址如下)在线查看。
https://mapshaper.org/

通过右侧工具栏的选择工具选择任意建筑面要素,可以看到其有Floor这一代表建筑层数的属性,后期可以以此估算建筑高度。

ECharts中加载数据格式要求为geojson格式,因此可以通过mapshaper进行格式转换。

两种格式数据均存放在data文件夹下。
02
加载建筑数据

加载三维建筑数据之前,需要先查看polygons3D要求的数据格式:
data: [{
    // A square
    coords: [[0, 0], [100, 0], [100, 100], [0, 100]],
    // Height
    height: 3
}, {
    // A triangle
    coords: [[50, 0], [100, 100], [0, 100]],
    // Height
    height: 5
}]
后续要加载的geojson建筑数据可以通过console.log()函数在后台查看:
    $.getJSON('data/buildings.json'function(buildings{
        console.log(buildings)
    })

可以看到数据中的coordinates为建筑面数据各顶点的坐标信息,Floor为建筑层数信息:

因此需要通过一个循环,将每个建筑数据进行重新组合,以满足polygons3D求的数据格式,但是需要注意的是,因为数据为网络获取,会存在一些数据缺失,因此需要使用try{}catch{}异常处理语法(首先执行try里面的代码,如果出错了,则执行catch里的代码):
    $.getJSON('data/buildings.json'function(buildings{

        // console.log(buildings)

        var data = []
        for (var i = 0; i < buildings['features'].length; i++) {
            try {
                data.push({
                    coords: buildings['features'][i]['geometry']['coordinates'],
                    height: buildings['features'][i]['properties']['Floor'] * 7
                })
            } catch {}
        }
    })
series中的设置很简单:
            // 数据系列
            series: [{
                type: 'polygons3D',
                coordinateSystem: 'maptalks3D',
                datadata
            }],
完整代码如下所示:
    $.getJSON('data/buildings.json'function(buildings{

        // console.log(buildings)

        var data = []
        for (var i = 0; i < buildings['features'].length; i++) {
            try {
                data.push({
                    coords: buildings['features'][i]['geometry']['coordinates'],
                    height: buildings['features'][i]['properties']['Floor'] * 7
                })
            } catch {}
        }


        // 设置图表的参数
        var option = {

            maptalks3D: {
                center: [118.1224.52], // 地图中心点坐标
                zoom: 13// 缩放等级缩放等级
                pitch: 50// 视角俯视的倾斜角度。默认为0,也就是垂直于地图表面。最大的值是60
                bearing: 30// 地图的旋转角度
                // 绑定URL模板
                urlTemplate: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
                altitudeScale1// 海拔的缩放,默认为1
                // 后处理特效的相关配置。
                // 后处理特效可以为画面添加高光、景深、环境光遮蔽(SSAO)、调色等效果,可以让整个画面更富有质感。
                postEffect: {
                    enabletrue,
                    FXAA: {
                        enabletrue
                    }
                },
                // 光照相关的设置
                light: {
                    // 场景主光源的设置
                    main: {
                        intensity1// 主光源的强度
                        shadow: true// 主光源是否投射阴影。默认为关闭
                        shadowQuality: 'high' // 阴影的质量。可选'low', 'medium', 'high', 'ultra'
                    },
                    // 全局的环境光设置
                    ambient: {
                        intensity0.2 // 环境光的强度
                    },
                }
            },

            title: {
                text"三维建筑数据",
                left"center",
                textStyle: { color"#000"fontSize25 },
            },

            // 图例
            legend: {},

            // 数据系列
            series: [{
                type'polygons3D',
                coordinateSystem'maptalks3D',
                data: data,
                itemStyle:{
                    color:'orange'
                }
            }],
        };


        // 使用指定的配置项和数据显示图表
        myChart.setOption(option);
    })
可视化结果如下图所示:


更多参数和配置可以查看官方文档:

1https://echarts.apache.org/zh/option.html


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments