| | |
| | | package com.flightfeather.uav.model.epw |
| | | |
| | | import com.flightfeather.uav.domain.entity.Company |
| | | import com.flightfeather.uav.lightshare.bean.DataVo |
| | | import com.flightfeather.uav.model.* |
| | | import com.flightfeather.uav.socket.eunm.FactorType |
| | | import java.math.BigDecimal |
| | | |
| | | /** |
| | |
| | | * 根据走航监测数据,结合风速、风向、监测点与企业的相对位置等因素,计算企业对监测区域的影响程度 |
| | | * @author riku |
| | | */ |
| | | class EPWModel { |
| | | class EPWModel : BaseModel<DataVo, BaseSOP>() { |
| | | |
| | | // 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 |
| | | } |
| | | |
| | | sources.forEach s@ { s -> |
| | | // 经纬度有效性判断 |
| | | if (s.ciLongitude == null || s.ciLongitude == BigDecimal(0) || s.ciLatitude == null || s.ciLatitude == BigDecimal(0)) { |
| | | return@s |
| | | } |
| | | |
| | | val p1 = Pair(d.lng!!, d.lat!!) |
| | | val p2 = Pair(s.ciLongitude.toDouble(), s.ciLatitude.toDouble()) |
| | | // windDirWeight.getWeight(p1, p2) |
| | | } |
| | | // 默认监测点经纬度 |
| | | var defaultLocation: Pair<Double, Double>? = null |
| | | set(value) { |
| | | weights = listOf(WindDirWeight(value), WindDisWeight(value)) |
| | | } |
| | | } |
| | | |
| | | override var dataPrep: BaseDataPrep<DataVo, BaseSOP> = EPWDataPrep() |
| | | |
| | | override var factorTypes: List<FactorType> = WeightType.weightType |
| | | |
| | | override var weights: List<BaseWeight<DataVo, BaseSOP>> = listOf(WindDirWeight(defaultLocation), WindDisWeight(defaultLocation)) |
| | | |
| | | override var sections: List<BaseSection<DataVo, BaseSOP>> = listOf(TimeSection()) |
| | | |
| | | override fun mDataCheck(m: DataVo): Boolean = !(m.lng == null || m.lng == 0.0 || m.lat == null || m.lat == 0.0) |
| | | |
| | | override fun sopCheck(s: BaseSOP): Boolean = |
| | | !(s.ciLongitude == null || s.ciLongitude == BigDecimal(0) || s.ciLatitude == null || s.ciLatitude == BigDecimal(0)) |
| | | |
| | | } |