Контур для ПУУД

This commit is contained in:
emelianov
2026-06-15 12:49:45 +03:00
parent 7fdac8c71e
commit 29b8206867
8 changed files with 291 additions and 1 deletions
@@ -28,6 +28,7 @@ data class AngularMotionCalculationResultDTO(
val satelliteId: Long,
val approximateTime: LocalDateTime,
val startTime: LocalDateTime,
val contourWkt: String?,
val points: List<AngularMotionPointDTO>,
)
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service
import space.nstart.pcp.angularmotion.AngularMotionCalculatorFactory
import space.nstart.pcp.angularmotion.AngularMotionConfig
import space.nstart.pcp.angularmotion.AngularMotionMode
import space.nstart.pcp.angularmotion.SurveyContourCalculator
import space.nstart.pcp.angularmotion.SurveyId
import space.nstart.pcp.pcp_request_service.configuration.CustomValidationException
import space.nstart.pcp.pcp_request_service.service.SatelliteCatalogClient
@@ -91,12 +92,14 @@ class AngularMotionService(
} catch (error: RuntimeException) {
throw CustomValidationException(error.message ?: "Ошибка расчета ПУУД")
}
val contourWkt = SurveyContourCalculator(EarthType.PZ90d02).calculate(result, request.captureAngleDeg)
return AngularMotionCalculationResultDTO(
mode = result.mode,
satelliteId = request.satelliteId,
approximateTime = request.approximateTime,
startTime = toDateTime(result.startTime),
contourWkt = contourWkt,
points = result.points.map { point ->
AngularMotionPointDTO(
time = toDateTime(point.t),
@@ -122,6 +125,9 @@ class AngularMotionService(
if (request.durationSec <= 0.0) {
throw CustomValidationException("durationSec must be positive")
}
if (request.captureAngleDeg <= 0.0 || !request.captureAngleDeg.isFinite()) {
throw CustomValidationException("captureAngleDeg must be positive")
}
if (request.latitudeDeg !in -90.0..90.0) {
throw CustomValidationException("latitudeDeg must be in [-90; 90]")
}