Satellite: Difference between revisions
Dvb-nomail (talk | contribs) No edit summary |
Dvb-nomail (talk | contribs) No edit summary |
||
Line 25: | Line 25: | ||
</source> | </source> | ||
== How to create satellite objects == | |||
The satellite objects are first created and then added to the satellite layer. | The satellite objects are first created and then added to the satellite layer. | ||
<source lang="c#"> | <source lang="c#"> | ||
//This test code | //This test code creates a satellite position object | ||
var satellite = new TPG.GeoFramework.SatelliteLayer.Satellite | var satellite = new TPG.GeoFramework.SatelliteLayer.Satellite | ||
{ | { | ||
Line 38: | Line 38: | ||
Assert.NotNull(satellite); | Assert.NotNull(satellite); | ||
//calculate the satellite position for this time | |||
var time = new DateTime(2020, 08, 14, 7, 55, 26, DateTimeKind.Utc); | var time = new DateTime(2020, 08, 14, 7, 55, 26, DateTimeKind.Utc); | ||
Assert.IsTrue(satellite.CreateSatellite(time)); | Assert.IsTrue(satellite.CreateSatellite(time)); | ||
Assert.AreEqual(1, satellite.Objects.Count); | Assert.AreEqual(1, satellite.Objects.Count); | ||
Assert.IsNotNull(satellite.Objects.First() as ISatellitePosition); | Assert.IsNotNull(satellite.Objects.First() as ISatellitePosition); | ||
</source> | |||
<source lang="c#"> | |||
//The satellite layer | |||
SatelliteLayerViewModel _satelliteLayerViewModel = ... | |||
//create satellites, details not shown | |||
var createdSatellites = new List<ISatellite>(); | |||
createdSatellites = CreateSatellites(); | |||
//prevent refresh while we are adding satellites | |||
_satelliteLayerViewModel.LockRedraw = true; | |||
foreach (var satellite in createdSatellites) | |||
_satelliteLayerViewModel.AddSatellite(satellite); | |||
//will refresh rendering | |||
_satelliteLayerViewModel.LockRedraw = false; | |||
</source> | </source> |
Revision as of 13:12, 13 January 2022
The GDK layer "Satellite" defined in the namespace TPG.GeoFramework.SatelliteLayer handles satellites, they can therefore easily be separated from other draw types. Satellite objects in this layer are controlled using the TPG.GeoFramework.SatelliteLayer.SatelliteLayerViewModel class.
What is a satellite?
A satellite consists of two draw objects; a satellite position object of type symbol and a satellite trajectory object of type line. Both object types are not required, but are usually used.
ISatellitePosition
The satellite position is handled by the ISatellitePosition class.
ISatelliteTrajectory
The satellite trajectory is handled by the ISatelliteTrajectory class.
The TLE string
A satellite position and its trajectory is computed from a TLE string. The format of the TLE is described in https://www.space-track.org/documentation#/tle.
//Example of TLE text used in tests
public static string TestTle()
{
var tle = "0 ISS (ZARYA)";
tle += "\n1 25544U 98067A 20227.03014521 .00002523 00000-0 53627-4 0 9998";
tle += "\n2 25544 51.6461 62.1977 0001435 30.4470 104.2862 15.49164713240985";
return tle;
}
How to create satellite objects
The satellite objects are first created and then added to the satellite layer.
//This test code creates a satellite position object
var satellite = new TPG.GeoFramework.SatelliteLayer.Satellite
{
Tle = TestTle(),
MetadataSetting = (long)SatelliteObject.TleMetadata.All,
RecalculateTrajectoryAlways = FullCurveCalculations
};
Assert.NotNull(satellite);
//calculate the satellite position for this time
var time = new DateTime(2020, 08, 14, 7, 55, 26, DateTimeKind.Utc);
Assert.IsTrue(satellite.CreateSatellite(time));
Assert.AreEqual(1, satellite.Objects.Count);
Assert.IsNotNull(satellite.Objects.First() as ISatellitePosition);
//The satellite layer
SatelliteLayerViewModel _satelliteLayerViewModel = ...
//create satellites, details not shown
var createdSatellites = new List<ISatellite>();
createdSatellites = CreateSatellites();
//prevent refresh while we are adding satellites
_satelliteLayerViewModel.LockRedraw = true;
foreach (var satellite in createdSatellites)
_satelliteLayerViewModel.AddSatellite(satellite);
//will refresh rendering
_satelliteLayerViewModel.LockRedraw = false;