Мне нужно было реализовать это в PowerShell, надеюсь, что это может помочь кому-то другому. Некоторые примечания об этом методе
Function MetresDistanceBetweenTwoGPSCoordinates($latitude1, $longitude1, $latitude2, $longitude2)
{
$Rad = ([math]::PI / 180);
$earthsRadius = 6378.1370 # Earth's Radius in KM
$dLat = ($latitude2 - $latitude1) * $Rad
$dLon = ($longitude2 - $longitude1) * $Rad
$latitude1 = $latitude1 * $Rad
$latitude2 = $latitude2 * $Rad
$a = [math]::Sin($dLat / 2) * [math]::Sin($dLat / 2) + [math]::Sin($dLon / 2) * [math]::Sin($dLon / 2) * [math]::Cos($latitude1) * [math]::Cos($latitude2)
$c = 2 * [math]::ATan2([math]::Sqrt($a), [math]::Sqrt(1-$a))
$distance = [math]::Round($earthsRadius * $c * 1000, 0) #Multiple by 1000 to get metres
Return $distance
}
Не используйте типизированный вариант агрегации агрегации, который по существу пытается перевести ссылки свойств в типе ввода (AgentDataStorage) в имена полей и не удается, когда он не находит ссылки на свойства, в вашем случае dataPoints.TOTAL_BUS_COMMISSION.
Используйте
AggregationResults<AggregationResult> results = mongoTemplate.aggregate(aggregation,
"agent_data_storage", AggregationResult.class);