сравнение TLE
This commit is contained in:
+4
-3
@@ -1,15 +1,13 @@
|
||||
package space.nstart.pcp.pcp_request_service.controller
|
||||
|
||||
import ballistics.types.OrbitalPoint
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import space.nstart.pcp.pcp_request_service.service.TLEService
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.OrbPointDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TLEDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TlePointRequestDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TleRvaRequestDTO
|
||||
|
||||
@RestController
|
||||
@@ -23,6 +21,9 @@ class TLEController {
|
||||
@PostMapping("/parse")
|
||||
fun orbit(@RequestBody tle : TLEDTO) = tleService.parseTLE(tle)
|
||||
|
||||
@PostMapping("/point")
|
||||
fun point(@RequestBody req: TlePointRequestDTO) = tleService.point(req)
|
||||
|
||||
|
||||
@PostMapping("/rva")
|
||||
fun rva(@RequestBody req : TleRvaRequestDTO) = tleService.rva(req)
|
||||
|
||||
+34
@@ -1,7 +1,9 @@
|
||||
package space.nstart.pcp.pcp_request_service.service
|
||||
|
||||
import ballistics.Ballistics
|
||||
import ballistics.orbitalPoints.timeStepper.TLEStepper
|
||||
import ballistics.types.BallisticsError
|
||||
import ballistics.types.EarthType
|
||||
import ballistics.types.PPI
|
||||
import ballistics.types.TLE
|
||||
import ballistics.types.TLEParams
|
||||
@@ -15,6 +17,7 @@ import space.nstart.pcp.pcp_request_service.configuration.CustomValidationExcept
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.OrbPointDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.RadioVisibilityAreaDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TLEDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TlePointRequestDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TargetPositionDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TleRvaRequestDTO
|
||||
import kotlin.math.PI
|
||||
@@ -47,6 +50,37 @@ class TLEService() {
|
||||
|
||||
|
||||
|
||||
|
||||
fun point(req: TlePointRequestDTO): OrbPointDTO {
|
||||
val bal = Ballistics()
|
||||
val tleParams = try {
|
||||
bal.getTLEParams(TLE(req.tle.first, req.tle.second), req.tle.header ?: "empty")
|
||||
} catch (ex: Exception) {
|
||||
throw CustomValidationException("Ошибка формата TLE : ${ex.message}")
|
||||
}
|
||||
if (req.time < tleParams.time) {
|
||||
throw CustomValidationException("Время расчета должно быть не раньше эпохи TLE ${tleParams.time}")
|
||||
}
|
||||
|
||||
val point = try {
|
||||
val stepper = TLEStepper(req.tle.first, req.tle.second, EarthType.PZ90d02)
|
||||
stepper.calculate(fromDateTime(req.time))
|
||||
} catch (ex: Exception) {
|
||||
throw CustomErrorException("Ошибка расчета положения по TLE : ${ex.message}")
|
||||
}
|
||||
|
||||
return OrbPointDTO(
|
||||
toDateTime(point.t),
|
||||
point.vit.toLong(),
|
||||
point.v.x,
|
||||
point.v.y,
|
||||
point.v.z,
|
||||
point.r.x,
|
||||
point.r.y,
|
||||
point.r.z
|
||||
)
|
||||
}
|
||||
|
||||
fun rva(req : TleRvaRequestDTO) : Iterable<RadioVisibilityAreaDTO> {
|
||||
|
||||
val bal = Ballistics()
|
||||
|
||||
Reference in New Issue
Block a user