예제 #1
0
        public async Task Bug1691()
        {
            double BayOfBiscaySELat = 44.5;
            double BayOfBiscaySELon = -3.5;

            double InFranceLat = 47;
            double InFranceLon = 1;

            Random r        = new Random(1);
            var    eps      = r.NextDouble() / 10.0;
            double latDelta = InFranceLat - BayOfBiscaySELat;
            double lonDelta = InFranceLon - BayOfBiscaySELon;
            var    tr       = new TimeRegion(1990, 2001, 1, -1, 0, 24);

            var request = new FetchRequest(
                "temp",
                FetchDomain.CreateCellGrid(
                    Enumerable.Range(0, 31).Select(i => eps + BayOfBiscaySELat + i * latDelta / 31.0).ToArray(),
                    Enumerable.Range(0, 21).Select(i => eps + BayOfBiscaySELon + i * lonDelta / 21.0).ToArray(),
                    tr));


            string etopoLocalUri = TestConstants.UriEtopo;

            var ghcnStorage = TestDataStorageFactory.GetStorageContext(TestConstants.UriGHCN);

            var reqContext = RequestContextStub.GetStub(ghcnStorage, request);

            DataSourceHandler handler = await GHCNv2DataSource.DataHandler.CreateAsync(ghcnStorage);

            var result = await handler.ProcessRequestAsync(reqContext);

            Assert.IsTrue(-70.0 < (double)result.GetValue(16, 2)); //manual data comparison.
        }
예제 #2
0
        public async Task GHCNOutOfDataTests()
        {
            IStorageContext   storage = new GhcnStorageContextStub();
            DataSourceHandler handler = await GHCNv2DataSource.DataHandler.CreateAsync(storage);

            IFetchDomain fd = FetchDomain.CreatePoints(new double[] { Math.Asin(1.0 / Math.Sqrt(3.0)) * 180.0 / Math.PI }, new double[] { 45.0 }, new TimeRegion(firstYear: 1970, lastYear: 1970, firstDay: 160, lastDay: 190)); //mar
            FetchRequest fr = new FetchRequest("temp", fd);

            IRequestContext requestContext = RequestContextStub.GetStub(storage, fr);

            var result = await handler.ProcessRequestAsync(requestContext);

            Assert.IsTrue(double.IsNaN((double)result.GetValue(0)));
        }
예제 #3
0
        public async Task GhcnPartialFutureOutOfDataFinishesTest()
        {
            System.Diagnostics.Trace.WriteLine(TestConstants.UriGHCN);
            var storage = TestDataStorageFactory.GetStorageContext(TestConstants.UriGHCN);
            DataSourceHandler handler = await GHCNv2DataSource.DataHandler.CreateAsync(storage);

            ITimeRegion  tr     = new TimeRegion(firstYear: 1990, lastYear: 2101).GetMonthlyTimeseries(firstMonth: 12, lastMonth: 12); //data index 2567
            IFetchDomain domain = FetchDomain.CreatePoints(
                new double[] { -25.18 },                                                                                               //exact station. data index 18398
                new double[] { 151.65 },
                tr);

            FetchRequest prateRequest = new FetchRequest("prate", domain);


            var reqContext = RequestContextStub.GetStub(storage, prateRequest);

            var result = await handler.ProcessRequestAsync(reqContext);
        }
예제 #4
0
        public async Task GhcnPrateValuesTest()
        {
            System.Diagnostics.Trace.WriteLine(TestConstants.UriGHCN);
            var storage = TestDataStorageFactory.GetStorageContext(TestConstants.UriGHCN);
            DataSourceHandler handler = await GHCNv2DataSource.DataHandler.CreateAsync(storage);

            ITimeRegion  tr     = new TimeRegion(firstYear: 1914, lastYear: 1914).GetMonthlyTimeseries(firstMonth: 12, lastMonth: 12); //data index 2567
            IFetchDomain domain = FetchDomain.CreatePoints(
                new double[] { -25.18 },                                                                                               //exact station. data index 18398
                new double[] { 151.65 },
                tr);

            FetchRequest prateRequest = new FetchRequest("prate", domain);


            var reqContext = RequestContextStub.GetStub(storage, prateRequest);

            var result = await handler.ProcessRequestAsync(reqContext);

            Assert.AreEqual(85.1, (double)result.GetValue(0), 1e-3); //manual data comparison.
        }
예제 #5
0
        public async Task GhcnTempValuesTest()
        {
            System.Diagnostics.Trace.WriteLine(TestConstants.UriGHCN);
            string etopoLocalUri = TestConstants.UriEtopo;

            var ghcnStorage = TestDataStorageFactory.GetStorageContext(TestConstants.UriGHCN);

            DataSourceHandler handler = await GHCNv2DataSource.DataHandler.CreateAsync(ghcnStorage);

            ITimeRegion  tr     = new TimeRegion(firstYear: 1921, lastYear: 1921).GetMonthlyTimeseries(firstMonth: 3, lastMonth: 3); //data index 2642
            IFetchDomain domain = FetchDomain.CreatePoints(
                new double[] { 36.27 },                                                                                              //exact station. data index 3776
                new double[] { -90.97 },
                tr);

            FetchRequest tempRequest = new FetchRequest("temp", domain);

            var reqContext = RequestContextStub.GetStub(ghcnStorage, tempRequest);

            var result = await handler.ProcessRequestAsync(reqContext);

            Assert.AreEqual(15.6, (double)result.GetValue(0), 1e-5); //manual data comparison.
        }