| | |
| | | */ |
| | | class EPWModel { |
| | | |
| | | // private val windDirWeight = WindDirWeight() |
| | | // private val windDisWeight = WindDisWeight() |
| | | private val windDirWeight = WindDirWeight() |
| | | private val windDisWeight = WindDisWeight() |
| | | |
| | | private lateinit var datas: List<DataVo> |
| | | private lateinit var sources: List<Company> |
| | |
| | | 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(d.lng!!, d.lat!!) |
| | | val p1 = Pair(lng!!, lat!!) |
| | | val p2 = Pair(s.ciLongitude.toDouble(), s.ciLatitude.toDouble()) |
| | | // windDirWeight.getWeight(p1, p2) |
| | | windDirWeight.getWeight(p1, p2, wd) |
| | | |
| | | windDisWeight.getWeight(p1, p2, ws) |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.flightfeather.uav.model.epw |
| | | |
| | | import com.flightfeather.uav.model.BaseWeight |
| | | import kotlin.math.abs |
| | | import kotlin.math.sqrt |
| | | |
| | | /** |
| | | * 风速距离权重 |
| | |
| | | override val weights: List<Double> = listOf(1.0, 0.8, 0.6, 0.5, 0.3, 0.0) |
| | | |
| | | fun getWeight(dis: Double, ws: Double): Double { |
| | | val value = dis / ws / 60 |
| | | val value = dis / 1000 / ws / 60 |
| | | return weightCal(value) |
| | | } |
| | | |
| | | fun getWeight(p1: Pair<Double, Double>, p2: Pair<Double, Double>, ws: Double): Double { |
| | | val dx = p2.first - p1.first |
| | | val dy = p2.second - p1.second |
| | | val dis = sqrt(abs(dx * dx) + abs(dy * dy)) * 100 |
| | | return getWeight(dis, ws) |
| | | } |
| | | } |