Esempio n. 1
1
        public static void calculateSatellitePosition(string catalogID, Site site)
        {
            // update TLE values
            if (dataObject.getLatestN(satelliteList, numTLEs)) { writeConfigSatelliteFile(); }

            Satellite theSat;
            dataObject.satelliteList.TryGetValue(catalogID, out theSat);
            TLE tle = new TLE(theSat.TLEs[0].name, theSat.TLEs[0].line1, theSat.TLEs[0].line2);

            // Create an orbit object using the TLE object.
            Orbit orbit = new Orbit(tle);

            // Get the location of the satellite from the Orbit object. The
            // earth-centered inertial information is placed into eciSDP4.
            // Here we ask for the location of the satellite 90 minutes after
            // the TLE epoch.
            //EciTime eciSDP4 = orbitSDP4.GetPosition(90.0);
            // get the position, as of NOW!!!
            EciTime eciSDP4 = orbit.GetPosition((DateTime.UtcNow - orbit.EpochTime).TotalMinutes);

            Console.Write("\n      TSINCE                     X                   Y                   Z\n");
            Console.Write("{0,12} {1,19:f8} {2,19:f8} {3,19:f8}\n",
                              DateTime.UtcNow.ToString(),
                              eciSDP4.Position.X,
                              eciSDP4.Position.Y,
                              eciSDP4.Position.Z);
            Console.Write("\n                              XVEL                 YVEL                 ZVEL\n");
            Console.Write("{0,38:f8} {1,20:f8} {2,20:f8}\n",
                              eciSDP4.Velocity.X,
                              eciSDP4.Velocity.Y,
                              eciSDP4.Velocity.Z);

            // Now get the "look angle" from the site to the satellite.
            // Note that the ECI object "eciSDP4" has a time associated
            // with the coordinates it contains; this is the time at which
            // the look angle is valid.
            Topo topoLook = site.GetLookAngle(eciSDP4);

            // Print out the results. Note that the Azimuth and Elevation are
            // stored in the CoordTopo object as radians. Here we convert
            // to degrees using Rad2Deg()
            Console.Write("\n{0,15} - AZ: {1:f3}  EL: {2:f3}\n", tle.Name, topoLook.AzimuthDeg, topoLook.ElevationDeg);
            Console.WriteLine("-------------------------------------------------------------------------");
        }
Esempio n. 2
1
        static void Main(string[] args)
        {
            //TODO: implement iterator for TLEs in satellite class, satellites in datastore class
            //TODO: get cookie that is valid for longer, store in XML

            // Sample code to test the SGP4 and SDP4 implementation. The test
            // TLEs come from the NORAD document "Space Track Report No. 3".

            filename = @"satellites.xml";
            satelliteList = new string[] { "25544", "37820", "39412", "39414", "39506", "36086", "39567", "39570", "39622", "39648", "39571", };
            readConfigSatelliteFile();
            dataObject.authenticate();
            if (dataObject.getLatestN(satelliteList, numTLEs)) { writeConfigSatelliteFile(); }

            // Test SGP4
            //string str1 = "SGP4 Test";
            //string str2 = "1 88888U          80275.98708465  .00073094  13844-3  66816-4 0     8";
            //string str3 = "2 88888  72.8435 115.9689 0086731  52.6988 110.5714 16.05824518   105";
            //Satellite otherthing;
            //dataObject.satelliteList.TryGetValue(satelliteList[1], out otherthing);
            //TLE tle1 = new TLE(otherthing.TLEs[0].name, otherthing.TLEs[0].line1, otherthing.TLEs[0].line2);
            //PrintPosVel(tle1);
            //Console.WriteLine();
            // Test SDP4
            //str1 = "SDP4 Test";
            //str2 = "1 11801U          80230.29629788  .01431103  00000-0  14311-1       8";
            //str3 = "2 11801  46.7916 230.4354 7318036  47.4722  10.4117  2.28537848     6";

            // Example: Define a location on the earth, then determine the look-angle
            // to the SDP4 satellite defined above.
            // First create a site object. Site objects represent a location on the
            // surface of the earth. Here we arbitrarily select a point on the
            // equator.
            //Site siteEquator = new Site(0.0, -100.0, 0); // 0.00 N, 100.00 W, 0 km altitude
            //Site siteWinnipeg = new Site(49.8994, -97.1392, 0.232);
            Site centerOfEarth = new Site(0, 0, -6378.1);

            Timer timer1 = new Timer(250);
            timer1.Elapsed += delegate { calculateSatellitePosition(satelliteList[0], centerOfEarth); };
            timer1.Start();
            Console.ReadLine();
        }