Exemplo n.º 1
0
        private void ReadSectorFile()
        {
            SctFileReader reader = new SctFileReader();

            reader.GeoLineHandler += line =>
            {
                var from = LatLongUtil.GetLatLongDecimalPointFromLatLongString(line.Start);
                var to   = LatLongUtil.GetLatLongDecimalPointFromLatLongString(line.End);
                geoLines.Add(new LatLongDegreeLine(new LatLongDegreePoint(from.X, from.Y), new LatLongDegreePoint(to.X, to.Y), line.ColorName));
            };
            reader.DefineHandler += (key, color) =>
            {
                byte blue  = (byte)((color & 0xff0000) >> 16);
                byte green = (byte)((color & 0xff00) >> 8);
                byte red   = (byte)(color & 0xff);
                if (!sectorfileColors.ContainsKey(key))
                {
                    sectorfileColors.Add(key, Color.FromRgb(red, green, blue));
                }
            };
            reader.RegionHandler += region =>
            {
                regions.Add(new LatLongRegion(region.Name, region.ColorName,
                                              region.Coordinates
                                              .Select(c =>
                {
                    var point = LatLongUtil.GetLatLongDecimalPointFromLatLongString(c);
                    return(new LatLongDegreePoint(point.X, point.Y));
                }
                                                      )
                                              .ToList()));
            };
            reader.SectorfileInfoHandler += info => fileInfo = info;
            reader.Parse("..\\..\\..\\UnitTestProject1\\Testdata\\EKDK_official_16_13.sct");

            logger.Debug("Read " + geoLines.Count + " geo lines");
        }
Exemplo n.º 2
0
        public void TestReading()
        {
            int geoLineCount = 0;
            int defineCount  = 0;
            int regionCount  = 0;

            var reader = new SctFileReader();

            reader.GeoLineHandler =
                line =>
            {
                geoLineCount++;
                Assert.IsFalse(String.IsNullOrWhiteSpace(line.Data));
                if (geoLineCount == 1)
                {
                    Assert.AreEqual("N062.59.56.504 E008.19.38.824 N062.59.42.774 E008.19.15.589", line.Data);
                    Assert.AreEqual("N062.59.56.504 E008.19.38.824", line.Start);
                    Assert.AreEqual("N062.59.42.774 E008.19.15.589", line.End);
                    Assert.IsTrue(line.ColorName.Length == 0);
                }
                else if (geoLineCount == 36050)
                {
                    Assert.AreEqual("N056.50.52.551 E009.27.53.104 N056.50.53.237 E009.27.53.612 BUILDING", line.Data);
                    Assert.AreEqual("Hangar medium", line.Comment);
                    Assert.AreEqual("N056.50.52.551 E009.27.53.104", line.Start);
                    Assert.AreEqual("N056.50.53.237 E009.27.53.612", line.End);
                    Assert.AreEqual("BUILDING", line.ColorName);
                }
            };
            reader.DefineHandler = (define, color) =>
            {
                if (defineCount == 0)
                {
                    Assert.AreEqual("ISLAND", define);
                    Assert.AreEqual(32768, color);
                }
                else if (defineCount == 20)
                {
                    Assert.AreEqual("BASE", define);
                    Assert.AreEqual(7290880, color);
                }

                defineCount++;
            };
            reader.RegionHandler = region =>
            {
                if (regionCount == 0)
                {
                    Assert.AreEqual("BASECPH", region.Name);
                    Assert.AreEqual("BASE", region.ColorName);
                    Assert.AreEqual(7, region.Coordinates.Count);
                    Assert.AreEqual("N055.43.56.000 E012.48.34.000", region.Coordinates[0]);
                    Assert.AreEqual("N055.41.58.000 E012.25.56.000", region.Coordinates[5]);
                    Assert.AreEqual("N055.43.56.000 E012.48.34.000", region.Coordinates[6]);
                }
                else if (regionCount == 342)
                {
                    Assert.AreEqual("EKRD", region.Name);
                    Assert.AreEqual("RWY", region.ColorName);
                    Assert.AreEqual(4, region.Coordinates.Count);
                    Assert.AreEqual("N056.30.19.553 E010.01.45.910", region.Coordinates[0]);
                    Assert.AreEqual("N056.30.28.433 E010.02.36.064", region.Coordinates[2]);
                    Assert.AreEqual("N056.30.20.360 E010.01.45.387", region.Coordinates[3]);
                }

                regionCount++;
            };
            reader.SectorfileInfoHandler = info =>
            {
                Assert.AreEqual("Denmark - VATSCA manual 1609", info.Name);
                Assert.AreEqual("EKDK_CTR", info.DefaultCallsign);
                Assert.AreEqual("EKCH", info.DefaultAirport);
                Assert.AreEqual("N055.37.04.439", info.DefaultLatitude);
                Assert.AreEqual("E012.39.21.600", info.DefaultLongitude);
                Assert.AreEqual(60.0, info.NMPerLatDegree);
                Assert.AreEqual(34.0, info.NMPerLongDegree);
                Assert.AreEqual(-1.8, info.MagVar);
            };
            reader.Parse("..\\..\\Testdata\\EKDK_official_16_13.sct");
            Assert.AreEqual(36050, geoLineCount);
            Assert.AreEqual(343, regionCount);
        }