• 天气可视化,海浪,温度图层的绘制,温度热力图的可视化


     

    简介

    海洋环境信息服务是向海上或岸上的用户提供其所需要的海洋动力环境、海洋气象环境和有关的地球物理情报信息,以保障海上运输和生产安全,促进海洋经济发展。海洋气象数据服务的原则是满足用户对海洋环境条件和气象情报的要求,在保障海洋作业安全的条件下,提高海洋作业效率和减少费用开支。

    可视化

    要想实现天气图层的可视化,以温度图层为例,我们首先想到的是热力图的方式实现,但是有个问题就是我们通常的温度图层原始数据都是格点数据,通常有几十万甚至上百万个点,如果直接以热力图的方式实现,显得简单粗暴,并且几十万个点同时渲染,会造成卡顿。所以我们必须选择其他方式实现。还有一种实现方式是对温度进行插值分析,计算出温度相同的区域,然后以不同的颜色绘制不同的温度区域。那么我们在前端绘制的时候只需要绘制多边型区域即可。

    绘制温度图层

    以下是以openlayers为例绘制温度图层

    请求URL :https://data.sailxy.com/Gettmp?[请求参数]

    请求参数:

    uid

    用户id,获取uid请联系作者。例如 uid=hy2021726

    timestamp

    当前时间戳,例如 timestamp=1627283926,注意必须是当前时间,时间戳五分钟内有效

    key

    用户秘钥,使用uid对应的秘钥ukey+timestamp取md5值,例如uid=hy2021726对应的秘钥为abcdef,key参数值就是对adcdef1627283926取MD5

    返回数据

    {"msg":"ok",data[{"hvalue":10,lvalue:5,point[[lat,lon],[lat,lon]]},....]}

    绘制方法

    // 获取数据function gettmp() {
    	$.ajax({
    		type : "post",
    		dataType : "json",
    		xhrFields : {
    			withCredentials : false
    		},
    		url : url,//替换为请求地址
    		async : true,
    		success : function(result) {
    			if (result.msg == "ok") {
    				data = result.content
    				tmpjson=[];
    				for (i = 0; i < data.length; i++) {
    					datai = data[i].data;
    					length = datai.length;
    					coord = [];
    					coords=[];
    					for (j = 0; j < length; j++) {
    						coordinaete = ol.proj.transform([ datai[j][0],
    								datai[j][1] ], 'EPSG:4326', 'EPSG:3857');
    						
    						coord.push(coordinaete)
    					}
    					coords.push(coord)
    						
    					geometry = new ol.geom.Polygon(coords)
    					json = new ol.Feature({
    						geometry : geometry,
    						"lvalue":data[i].lvalue
    					});	
    					tmpjson.push(json);  
    				}
    
    				showtmp(tmpjson,-80,80);
    			}
    
    			
    
    		},
    		error : function() {
    		}
    	})
    
    }function showtmp(geojsonObject,min,max) {
    	map.removeLayer(tmplayer);
    	tmplayer= new ol.layer.Vector({ // 初始化矢量图层
    		source : new ol.source.Vector({
    			features : geojsonObject
    		}),
    		style : function(feature, resolution) {
    			stroke = new ol.style.Stroke({
    				color : '#00000000',
    				width : 0,
    			})
    			var colorv=feature.get("lvalue");
    			color=getcolor(colorv,min,max);
    	
    			fill = new ol.style.Fill({
    				color : color
    			})
    
    			style = new ol.style.Style({
    				fill : fill,
    				stroke : stroke,
    				
    
    			})
    			return [ style ]
    		},
    
    	});
    
    
    	map.addLayer(tmplayer);
    
    }
    

    查看示例:海洋气象,潮汐

    添加微信联系作者:lvxin6136
  • 相关阅读:
    用 Go 实现一个 LRU cache
    【转】入行软件测试,零基础拿OFFER
    【转】IntelliJ idea 高效使用教程,一劳永逸!
    python连接Oracle报错DPI1047
    【转】Pycharm快捷键设置(鼠标滚动控制字体大小)
    【转】Ubuntu:命令行安装可视化界面
    【转】Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
    VAR多变量预测
    windows进程管理
    git关闭filemode
  • 原文地址:https://www.cnblogs.com/ecdis/p/15084712.html
Copyright © 2020-2023  润新知