package com.flightfeather.uav.model.epw
|
|
import com.flightfeather.uav.domain.entity.Company
|
import com.flightfeather.uav.lightshare.bean.DataVo
|
import java.math.BigDecimal
|
|
/**
|
* 工业企业污染权重分析模型
|
* 根据走航监测数据,结合风速、风向、监测点与企业的相对位置等因素,计算企业对监测区域的影响程度
|
* @author riku
|
*/
|
class EPWModel {
|
|
private val windDirWeight = WindDirWeight()
|
private val windDisWeight = WindDisWeight()
|
|
private lateinit var datas: List<DataVo>
|
private lateinit var sources: List<Company>
|
|
fun execute() {
|
datas.forEach d@{d ->
|
if (d.lng == null || d.lng == 0.0 || d.lat == null || d.lat == 0.0) {
|
return@d
|
}
|
|
var con = 0
|
var ws = 0.0
|
var wd = 0
|
var hr = 0
|
val lng = d.lng
|
val lat = d.lat
|
|
sources.forEach s@ { s ->
|
// 经纬度有效性判断
|
if (s.ciLongitude == null || s.ciLongitude == BigDecimal(0) || s.ciLatitude == null || s.ciLatitude == BigDecimal(0)) {
|
return@s
|
}
|
|
val p1 = Pair(lng!!, lat!!)
|
val p2 = Pair(s.ciLongitude.toDouble(), s.ciLatitude.toDouble())
|
windDirWeight.getWeight(p1, p2, wd)
|
|
windDisWeight.getWeight(p1, p2, ws)
|
|
|
}
|
}
|
}
|
}
|