一、扩散公式整理

二、编写java代码实现

String strJson = InterpolationUtils.calGaussPlumePoints0(z,height,q,lon,lat, size,scale,airStable);
return strJson.replaceAll("NaN","0").replaceAll("Infinity",String.valueOf(q));
String strJson = InterpolationUtils.calGaussPlumeEquiSurface(z,height,u ,q,wd,lon,lat, dataInterval,size,scale,airStable);
return strJson;

三、前端openlayers调用代码

geoJsonFe:{renderType:"level",renderField:"hvalue",FieldScope:[{min:-1,max:29.9,symbol:Layersymbols.screenVecSymbol1},{min:29.9,max:49.9,symbol:Layersymbols.screenVecSymbol2},{min:49.9,max:69.9,symbol:Layersymbols.screenVecSymbol3},{min:69.9,max:89.0,symbol:Layersymbols.screenVecSymbol4},{min:89.9,max:149.9,symbol:Layersymbols.screenVecSymbol5},{min:149.9,max:999999,symbol:Layersymbols.screenVecSymbol6}]
},
geoJsonFeP:{renderType:"level",renderField:"val",FieldScope:[{min:-1,max:30,symbol:Layersymbols.aqiSymbol1},{min:30,max:50,symbol:Layersymbols.aqiSymbol2},{min:50,max:70,symbol:Layersymbols.aqiSymbol3},{min:70,max:90,symbol:Layersymbols.aqiSymbol4},{min:90,max:150,symbol:Layersymbols.aqiSymbol5},{min:150,max:999999,symbol:Layersymbols.aqiSymbol6}]
}
screenVecSymbol1:new Style({stroke: new Stroke({color: 'rgba(0, 206, 0, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(0, 206, 0, 0.6)',}),
}),
screenVecSymbol2:new Style({stroke: new Stroke({color: 'rgba(254, 255, 3, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(254, 255, 3, 0.6)',}),
}),
screenVecSymbol3:new Style({stroke: new Stroke({color: 'rgba(255, 101, 0, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(255, 101, 0, 0.6)',}),
}),
screenVecSymbol4:new Style({stroke: new Stroke({color: 'rgba(254, 0, 0, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(254, 0, 0, 0.6)',}),
}),
screenVecSymbol5:new Style({stroke: new Stroke({color: 'rgba(129, 0, 127, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(129, 0, 127, 0.6)',}),
}),
screenVecSymbol6:new Style({stroke: new Stroke({color: 'rgba(128, 0, 0, 0.1)',width: 1,}),fill: new Fill({color: 'rgba(128, 0, 0, 0.6)',}),
}),
aqiSymbol1: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(0, 206, 0, 1)'})})
}),
aqiSymbol2: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(254, 255, 3, 1)'})})
}),
aqiSymbol3: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(255, 101, 0, 1)'})})
}),
aqiSymbol4: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(254, 0, 0, 1)'})})
}),
aqiSymbol5: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(129, 0, 127, 1)'})})
}),
aqiSymbol6: new Style({image: new Circle({radius: 6,stroke: new Stroke({color: '#62B8FF',}),fill: new Fill({color: 'rgba(128, 0, 0, 1)'})})
})
//通用创建geojson要素
export function commonCreateGeojsonFeatures (map, layerKey, LayersRenderSet, geo, labelField) {if (Object.keys(geo).length == 0 && geo.features.length == 0) return;let features = geo.features;for (let i in features) {let areaFeature = {};if (features[i].geometry.type == "MultiPolygon") {areaFeature = new Feature({geometry: new MultiPolygon(features[i].geometry.coordinates),});} else if (features[i].geometry.type == "Polygon") {areaFeature = new Feature({geometry: new Polygon(features[i].geometry.coordinates),});}else if (features[i].geometry.type == "MultiLineString") {areaFeature = new Feature({geometry: new MultiLineString(features[i].geometry.coordinates),});}else if (features[i].geometry.type == "LineString") {areaFeature = new Feature({geometry: new LineString(features[i].geometry.coordinates),});}else if (features[i].geometry.type == "Point") {areaFeature = new Feature({geometry: new Point(features[i].geometry.coordinates),});}let featureStyle = getLyaerRenderSymbol(LayersRenderSet, layerKey, features[i].properties).clone()areaFeature.setStyle(featureStyle)areaFeature.setProperties(features[i].properties);areaFeature.values_.values_=features[i].propertiesgetLayerByCode(map,layerKey).getSource().addFeature(areaFeature);if (features[i].properties[labelField] != undefined && labelField != '') {setFeatureLabel(areaFeature,features[i].properties[labelField].toString())}}
}

四、模拟效果展示

有风模拟参照:高斯羽烟gis应用java实现模型计算_兴诚的博客-CSDN博客

如果对您有所帮助请点赞打赏支持!

技术合作交流qq:2401315930

java实现大气无风环境污染物扩散模拟相关推荐

  1. python元胞自动机模拟交通_基于立体网格的放射性污染物扩散过程模拟与表达

    作 者 信 息 施加松1,余接情2,常芸芬1,童晓冲3 (1.防化研究院,北京 102205:2.中国矿业大学 环境与测绘学院,江苏 徐州 221116:3.信息工程大学,河南 郑州 450001) ...

  2. Lakes Environmental ARTM View v1.4.2 1CD放射物扩散模拟模型

    Lakes Environmental ARTM View v1.4.2 1CD放射物扩散模拟模型 Lakes.AERMOD.View.v8.9.0 1CD大气扩散模型软件包 ARTM(Atmosph ...

  3. 环境污染物如何通过影响肠脑轴而影响心理健康

    谷禾健康 在这个充满压力.紧张和焦虑的快节奏世界中,人人都容易患上许多身心疾病. 根据世界卫生组织 (WHO) 的数据,世界上每 8 人中就有 1 人患有精神障碍,其中焦虑症和抑郁症最为常见.尤其经历 ...

  4. 飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会

    5月19-21日,第一届全国数据驱动计算力学研讨会在大连召开.本次研讨会由中国力学学会主办,大连理工大学运载工程与力学学部承办,北京理工大学先进结构技术研究院协办. 会议共吸引了400多位来自全国各地 ...

  5. MyEclipse搭建java Web项目开发环境

    MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...

  6. Java及Android开发环境搭建

    前言 自从接触java以来,配置环境变量折腾了好几次,也几次被搞得晕头转向,后来常常是上网查阅相关资料才解决.但是过一段时间后一些细节就会记不清了,当要在其他机子上配置时又得上网查或者查阅相关书籍,如 ...

  7. 大气波导计算MATLAB,基于抛物方程的大气波导环境下电波传播的研究rbedacv8.ppt

    基于抛物方程的大气波导环境下电波传播的研究姓 名: 刘玉敬 学 号:S313080029 指导教师:于蕾 副教授 基于抛物方程的大气波导环境下电波传播的研究 目录 背景介绍 大气折射与大气波导 抛物方 ...

  8. java applet配置_配置Java Applet的运行环境

    Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本地安装了JDK,指定好JAV ...

  9. Java开发和运行环境的搭建(详细教程)

    对JDK.JRE.Java 的认识 JDK 是Java Development Kit的缩写,即Java开发工具集.JDK是整个Java的核心,包括了Java运行环境(JRE).Java开发工具和Ja ...

最新文章

  1. java三大特性:封装、继承、多态
  2. IO之阻塞与非阻塞比较
  3. 苹果mp3软件_神技能!!!音视频制作软件
  4. Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
  5. c 语言五子棋游戏代码,C语言案例:控制台版本的五子棋游戏【代码】
  6. 他回国后对学生说,玩会这12个游戏就能掌握python基础,其实不难
  7. c++获得cpu厂商_使用Visual C++编程取得CPU信息
  8. [转]基于Storm的实时数据处理方案
  9. lua 获取网络时间_Lua脚本引擎教程:学习路线
  10. java spring 数据库_JAVA - SpringBoot项目引用MyBatis操作数据库
  11. PTA——堆中的路径
  12. SQL Server2008官方下载地址
  13. 无需代码,图文并茂详解EEGLAB中的ERPs数据分析方法
  14. 【查找资料】冰点文档下载免费下载百度、豆丁、丁香、畅享、MBALib、道客巴巴、Book118等文库文档
  15. HTML5前端知识图谱
  16. 如何制作基于beaglebone的设备通知Texter ?---凯利讯半导体
  17. 大牛揭秘:如何快速在阿里云搭建视频直播平台
  18. bilibili缓存视频的位置
  19. 5G 网络架构(核心网)总结
  20. Substrate 基础 -- 教程(Tutorials)

热门文章

  1. 上交所回应“科创板受理企业科技含量不高”:会在审核问询环节对企业进行多轮问询...
  2. Android根据经纬度获取地址,眼前一亮
  3. 2021中国农业大学电子信息考研初试经验分享
  4. 主流定时任务解决方案全横评
  5. chown命令用法举例
  6. android radiobutton属性大全,Android RadioButton
  7. QT为pushButton添加下拉菜单,并添加信号槽
  8. 最新!导电滑环常见问题
  9. 未来什么语言最流行?就是它!
  10. 程显峰:应届毕业生简历的常见问题