I have been converting an SP3 file reader algorithm from java to python, and I have encountered a strange discrepancy in the propagator initial state. The file name, satellite key value,
sp3 coordinate values, and initial date are all the same; only the position and velocity for the initial state are different.
Java code:
file sp3File = new File(filePath, "IGS0OPSULT_20233190000_02D_15M_ORB.SP3");
DataSource source = new DataSource(file.getName(), () -> new FileInputStream(sp3File));
for (final DataFilter filter : Arrays.asList(new GzipFilter(),
new UnixCompressFilter(),
new HatanakaCompressFilter())) {
source = filter.filter(source);
}
final SP3Parser parserSp3 = new SP3Parser();
final SP3 sp3 = parserSp3.parse(source);
Map<String, SP3Ephemeris> satMap = sp3.getSatellites();
for (Map.Entry<String, SP3Ephemeris> sat : satMap.entrySet()) {
SP3Ephemeris ephem = sat.getValue();
BoundedPropagator prop = ephem.getPropagator();
SpacecraftState state = prop.getInitialState()
Python code:
from org.orekit.files.sp3 import SP3Parser
from org.orekit.data import DataSource as OrekitDataSource
# Retrieve Java SP3 object
sp3Parser = SP3Parser()
sp3File = os.path.join(gpsFolder, "IGS0OPSULT_20233190000_02D_15M_ORB.SP3")
sp3DataSource = OrekitDataSource(sp3File)
sp3 = sp3Parser.parse(sp3DataSource)
# Go through each GPS satellite in the file
for satKey in sp3.getSatellites().keySet() :
satEphem = sp3.getSatellites().get(satKey)
satProp = satEphem.getSegments().get(0).getPropagator()
state = satProp.getInitialState()
SP3 file:
IGS0OPSULT_20233190000_02D_15M_ORB.SP3 (493.3 KB)
Java state value: P(2.497060425079706E7, -1987644.8941127844, -8626500.762193203), V(1159.413893786791, 2165.489949288346, 3008.3040816768453)
Python state value: P(2.4970588127697874E7, -1987666.2709255107, -8626542.507136647), V(1159.4208096827388, 2165.488851065712, 3008.302262962948)