基于leaflet-velocity的二维动态风场展示

简介: 本文讲解了leaflet-velocity插件,并利用插件进行了模拟的动态风场、洋流等信息的综合展示,让读者掌握集成方式。

    有一阵子没动笔了,时间过得好快。这阵子因为工作的原因,间隔了很久跟大家分享,希望后面稳定下来会有更多的时间来做一些记录。这次分享一个比较有意思的leaflet插件,可以在二维场景下用来对风场、洋流等信息进行动态展示,同时可以展示实时风速和流速。

     本次内容用到的例子以及数据可以在以下开源地址找到:

    https://github.com/onaci/leaflet-velocity,包含演示的数据。

     打开clone下来的代码,可以看到:

image.png

  实例文件在demo文件夹中。

      第一步、打开demo.html

<!doctype html><html><head><title>LeafletVelocity Demo</title><metacharset="utf-8"></head><body><divid="map"></div><!--vendor--><scriptsrc="https://code.jquery.com/jquery-2.2.4.min.js"></script><linkrel="stylesheet"href="https://npmcdn.com/leaflet@1.1.0/dist/leaflet.css"/><scriptsrc="https://npmcdn.com/leaflet@1.1.0/dist/leaflet.js"></script><!--leaflet-velocity--><linkrel="stylesheet"href="../dist/leaflet-velocity.css"/><scriptsrc="../dist/leaflet-velocity.js"></script><!--demo--><linkrel="stylesheet"href="demo.css"/><scriptsrc="demo.js"></script></body></html>

上面的关键代码主要引入了leaflet、jquery和leaflet-velocity插件,以及用来控制核心逻辑的demo.js

     第二步、编辑demo.js

function initDemoMap(){
    var Esri_WorldImagery = L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
        attribution: 'Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, ' +
        'AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'
    });
    var Esri_DarkGreyCanvas = L.tileLayer(
        "http://{s}.sm.mapstack.stamen.com/" +
        "(toner-lite,$fff[difference],$fff[@23],$fff[hsl-saturation@20])/" +
        "{z}/{x}/{y}.png",
        {
            attribution: 'Tiles &copy; Esri &mdash; Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, ' +
            'NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'
        }
    );
    var baseLayers = {
        "Satellite": Esri_WorldImagery,
        "Grey Canvas": Esri_DarkGreyCanvas
    };
    var map = L.map('map', {
        layers: [ Esri_WorldImagery ]
    });
    var layerControl = L.control.layers(baseLayers);
    layerControl.addTo(map);
    map.setView([-22, 150], 5);
    return {
        map: map,
        layerControl: layerControl
    };
}

照例是做底图的初始化配置和引用资源的定义等等初始化工作。

        第三步、引入动态数据

$.getJSON('http://localhost:8086/2d/leaflet-velocity-master/demo/wind-gbr.json', function (data) {
varvelocityLayer=L.velocityLayer({
displayValues: true,
displayOptions: {
velocityType: 'GBR Wind',
displayPosition: 'bottomleft',
displayEmptyString: 'No wind data'    },
data: data,
maxVelocity: 10  });
layerControl.addOverlay(velocityLayer, 'Wind - Great Barrier Reef');
});

如果只是对接数据进行数据可视化的话,到这一步基本已经达到预期。我们来看下实现的效果:

image.png

     这里,使用的底图是墨卡托的,如果要换成经纬度或者其他投影方式的话,兼容性不太好,需要调整源码。调整leaflet-velocity.js中的矢量元素变化的动态计算算法。如果有已经调整好的小伙伴,可以分享一下github链接。

目录
相关文章
|
定位技术 API
基于Leaflet.draw的自定义绘制实战
本文介绍了如何基于leaflet.draw进行自定义绘制,同时获取对象的bbox和geojson信息。
1019 0
基于Leaflet.draw的自定义绘制实战
|
定位技术
基于Leaflet的轨迹模拟回放
在gis场景中,轨迹回放是一个很常见的场景。比如在导航软件中,在行程结束后根据运动轨迹生成运动图,在keep软件中,会自动记录用户的锻炼轨迹,在结束后可以看到自己的运动轨迹等等。这些需求都是设备在运行中自动记录相应的点,在结合gis模拟即可。
1424 0
基于Leaflet的轨迹模拟回放
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
Linux
【专栏】Pigz 是一个并行化的 gzip 实现,利用多核处理器提高文件压缩速度
【4月更文挑战第28天】Pigz 是一个并行化的 gzip 实现,利用多核处理器提高文件压缩速度。相比 gzip,Pigz 在处理大型文件时更具优势,且生成的文件与 gzip 兼容。通过包管理器安装后,使用方式类似 gzip,支持高级选项。注意,Pigz 在压缩时会消耗更多系统资源,可能存在微小压缩差异,并需确保与其他工具的兼容性。在需要快速压缩的场景下,Pigz 是一个更好的选择。
790 0
|
数据处理 Python Windows
python 如何读取GFS数据(.grib文件)
python 如何读取GFS数据(.grib文件)
python 如何读取GFS数据(.grib文件)
|
数据可视化 定位技术
【threejs】可视化大屏酷炫3D地图附源码
【threejs】可视化大屏酷炫3D地图附源码
【threejs】可视化大屏酷炫3D地图附源码
|
JSON 前端开发 定位技术
Leaflet开发:webgl方式加载point
Leaflet开发:webgl方式加载point
375 0
Leaflet开发:webgl方式加载point
|
前端开发 JavaScript 异构计算
分享cesium的风场开源网站
分享cesium的风场开源网站
980 0
|
存储 XML 数据格式
GeoServer实现NetCDF气象文件自动发布
众所周知,GeoServer是一个地理服务器,提供了管理页面进行服务发布,样式,切片,图层预览等一系列操作,但是手动进行页面配置有时并不满足业务需求,所以GeoServer同时提供了丰富的rest接口可供用户自己组织业务逻辑进行自动化管理。
2093 0
|
移动开发 前端开发 JavaScript
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载