예제 #1
0
        public void GetColorTest()
        {
            string              colorMapFile      = Path.Combine(TestDataPath, "ColorMap.png");
            IProjectionGridMap  projectionGridMap = new MockClasses.MockProjectionGridMap();
            ColorMapOrientation orientation       = ColorMapOrientation.Vertical;
            double              minimumValue      = double.MinValue;
            double              maximumValue      = double.MaxValue;
            DataColorMap        target            = new DataColorMap(colorMapFile, projectionGridMap, orientation, minimumValue, maximumValue);
            Color expectedColor = Color.FromArgb(255, 164, 169, 230);
            Color actual        = target.GetColor(200, 400);

            Assert.AreEqual(expectedColor, actual);
        }
예제 #2
0
        /// <summary>
        /// Processes the input equirectangular dataset.
        /// </summary>
        /// <param name="inputFile">
        /// Input File path.
        /// </param>
        /// <param name="outputDir">
        /// Output directory where pyramid is generated.
        /// </param>
        /// <param name="colorMapPath">
        /// Map of color map file.
        /// </param>
        /// <param name="orientation">
        /// Orientation of color map file.
        /// </param>
        /// <param name="projection">
        /// Projection type.
        /// </param>
        public static void ProcessEquirectangularGrid(string inputFile, string outputDir, string colorMapPath, ColorMapOrientation orientation, ProjectionTypes projection)
        {
            Trace.TraceInformation("{0}: Reading input dataset...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));

            // Get grid details from the input file
            var dataGridDetails = DataGridHelper.LoadFromFile(inputFile);

            // Populate the data grid using grid details
            var dataGrid = new DataGrid(dataGridDetails.Data, true);

            // Build a equirectangular projection grid map using the data grid and boundary details
            var equirectangularGridMap = new EquirectangularGridMap(dataGrid, dataGridDetails.Boundary);

            // Build a color map using equirectangular projection grid map
            var dataColorMap = new DataColorMap(colorMapPath, equirectangularGridMap, orientation, dataGridDetails.MinimumThreshold, dataGridDetails.MaximumThreshold);

            // Define an instance of ITileCreator to create image tiles.
            ITileCreator imageTileCreator = TileCreatorFactory.CreateImageTileCreator(dataColorMap, projection, outputDir);

            Trace.TraceInformation("{0}: Building base and parent levels...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            TileGenerator tileGenerator = new TileGenerator(imageTileCreator);
            int           zoomLevels    = 5;

            tileGenerator.Generate(zoomLevels);

            string fileName = Path.GetFileNameWithoutExtension(inputFile);

            // Generate Thumbnail Images.
            Trace.TraceInformation("{0}: Building Thumbnail image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageTileSerializer tileSerializer = new ImageTileSerializer(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png);
            string thumbnailFile = Path.Combine(outputDir, fileName + ".jpeg");

            TileHelper.GenerateThumbnail(tileSerializer.GetFileName(0, 0, 0), 96, 45, thumbnailFile, ImageFormat.Jpeg);

            // Create and save WTML file.
            Trace.TraceInformation("{0}: Generating WTML file...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string         textureTilePath = WtmlCollection.GetWtmlTextureTilePath(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png.ToString());
            WtmlCollection wtmlCollection  = new WtmlCollection(fileName, thumbnailFile, textureTilePath, zoomLevels, projection);

            wtmlCollection.IsElevationModel = false;
            string path = Path.Combine(outputDir, fileName + ".wtml");

            wtmlCollection.Save(path);
            Trace.TraceInformation("{0}: Collection successfully generated.", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
        }
예제 #3
0
 public void GetNaNColorTest()
 {
     try
     {
         string              colorMapFile      = Path.Combine(TestDataPath, "ColorMap.png");
         IProjectionGridMap  projectionGridMap = new MockClasses.MockProjectionGridMap();
         ColorMapOrientation orientation       = ColorMapOrientation.Vertical;
         double              minimumValue      = double.MinValue;
         double              maximumValue      = double.MaxValue;
         DataColorMap        target            = new DataColorMap(colorMapFile, projectionGridMap, orientation, minimumValue, maximumValue);
         Color color = target.GetColor(double.NaN, double.NaN);
         Assert.AreEqual(color, Color.Transparent);
     }
     catch (Exception ex)
     {
         Assert.Fail(ex.Message);
     }
 }