Beispiel #1
0
        static public double checkDistance(GPS5Data gpsData, double destX, double destY, double destZ)
        {
            double biasX = gpsData.posX - destX;
            double biasY = gpsData.posY - destY;
            double biasZ = gpsData.altitude - destZ;
            double W     = biasX * biasX + biasY * biasY + biasZ * biasZ;

            return(Math.Sqrt(W));
        }
Beispiel #2
0
        static public int PushGPSDataToZone(GPS5Data newData)
        {
            int foundIdx = -1;

            foreach (var node in gpsZoneList)
            {
                int      zoneIdx  = node.Key;
                GPS5Zone zoneInfo = node.Value;
                double   distance = checkDistance(newData, zoneInfo.posX, zoneInfo.posY, zoneInfo.altitude);
                if (distance < 0.01)
                {
                    foundIdx = zoneInfo.idx;
                }
            }
            if (foundIdx >= 0)
            {
                GPS5Zone zoneInfo = gpsZoneList[foundIdx];
                zoneInfo.nbImg++;
                zoneInfo.endSpeed     = newData.speed_3d;
                gpsZoneList[foundIdx] = zoneInfo;
                return(foundIdx);
            }

            //new zone
            lastZoneIdx++;
            GPS5Zone newZone = new GPS5Zone();

            newZone.idx        = lastZoneIdx;
            newZone.posX       = newData.posX;
            newZone.posY       = newData.posY;
            newZone.altitude   = newData.altitude;
            newZone.nbImg      = 1;
            newZone.startSpeed = newData.speed_3d;
            newZone.endSpeed   = newData.speed_3d;
            gpsZoneList.Add(newZone.idx, newZone);
            return(newZone.idx);
        }
Beispiel #3
0
        public void LoadGPS5Data(string filename)
        {
            movie_data = new MovieData();
            StreamReader reader      = new StreamReader(filename);
            int          count       = 0;
            int          payload_idx = 0;
            int          sample_idx  = 0;

            char[] charSeparators = new char[] { '=', ',', ' ' };
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                count++;
                if (line.Length <= 4)
                {
                    continue;
                }
                if (line[0] == '#')
                {
                    continue;
                }
                var values = line.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
                if (values.Length < 2)
                {
                    continue;
                }
                if (values[0].Contains("MetadataLength"))
                {
                    double d         = Convert.ToDouble(values[1]);
                    int    n         = Convert.ToInt32(values[3]);
                    string movieFile = values[5];
                    movie_data.payload_max     = n;
                    movie_data.payload_data    = new List <PayloadData>(n);
                    movie_data.movie_filename  = movieFile;
                    movie_data.metadata_length = (float)d;
                    continue;
                }
                if (values[0].Contains("PayloadInTime"))
                {
                    payload_idx++;

                    PayloadData payload_data = new PayloadData();
                    payload_data.PayloadId = payload_idx - 1;
                    double d = Convert.ToDouble(values[1]);
                    payload_data.inTime = (float)d;
                    d = Convert.ToDouble(values[3]);
                    payload_data.outTime = (float)d;
                    movie_data.payload_data.Add(payload_data);
                    sample_idx = 0;
                    continue;
                }
                if (values[0].Contains("GPS5"))
                {
                    if (values[1].Contains("In"))
                    {
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        double      d            = Convert.ToDouble(values[2]);
                        //payload_data.inTime = (float)d;
                        //d = Convert.ToDouble(values[4]);
                        //payload_data.outTime = (float)d;
                        d = Convert.ToDouble(values[6]);
                        payload_data.Rate = (float)d;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[1].Contains("Samples"))
                    {
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        int         n            = Convert.ToInt32(values[2]);
                        payload_data.Samples   = n;
                        payload_data.gps5_data = new List <GPS5Data>(n);
                        sample_idx             = 0;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[1].Contains("Elements"))
                    {
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        int         n            = Convert.ToInt32(values[2]);
                        payload_data.Elements = n;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[1].Contains("Rate"))
                    {
                        double d = Convert.ToDouble(values[2]);
                        movie_data.gps5_rate = (float)d;
                    }
                    continue;
                }
                if (values[0].Contains("GPSElement"))
                {
                    if (values[0].Contains("GPSElement1"))
                    {
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        int         baseIdx      = payload_idx - 1;
                        baseIdx *= payload_data.Samples;
                        baseIdx += sample_idx;
                        GPS5Data gps5Data = new GPS5Data();
                        gps5Data.frame = baseIdx;
                        double d = Convert.ToDouble(values[1]);
                        gps5Data.latitude = (float)d;
                        payload_data.gps5_data.Add(gps5Data);
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                        sample_idx++;
                    }
                    if (values[0].Contains("GPSElement2"))
                    {
                        double      d            = Convert.ToDouble(values[1]);
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        GPS5Data    gps5Data     = payload_data.gps5_data[sample_idx - 1];
                        gps5Data.longitude = (float)d;
                        payload_data.gps5_data[sample_idx - 1]   = gps5Data;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[0].Contains("GPSElement3"))
                    {
                        double      d            = Convert.ToDouble(values[1]);
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        GPS5Data    gps5Data     = payload_data.gps5_data[sample_idx - 1];
                        gps5Data.altitude = (float)d;
                        payload_data.gps5_data[sample_idx - 1]   = gps5Data;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[0].Contains("GPSElement4"))
                    {
                        double      d            = Convert.ToDouble(values[1]);
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        GPS5Data    gps5Data     = payload_data.gps5_data[sample_idx - 1];
                        gps5Data.speed_2d = (float)d;
                        payload_data.gps5_data[sample_idx - 1]   = gps5Data;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    if (values[0].Contains("GPSElement5"))
                    {
                        double      d            = Convert.ToDouble(values[1]);
                        PayloadData payload_data = movie_data.payload_data[payload_idx - 1];
                        GPS5Data    gps5Data     = payload_data.gps5_data[sample_idx - 1];
                        gps5Data.speed_3d = (float)d;
                        payload_data.gps5_data[sample_idx - 1]   = gps5Data;
                        movie_data.payload_data[payload_idx - 1] = payload_data;
                    }
                    continue;
                }


                //m_csv_data.Add(count, line_data);
                //count++;
            }
            //number = m_csv_data.Count - 1;
            reader.Close();
            return;
        }