Exemple #1
0
        private RasterBoundaries GetRasterBoundaries(IEnumerable <IVariableFilter> variableFilters)
        {
            RasterBoundaries rasterBoundaries = new RasterBoundaries {
                WidthX = Grid.SizeX, WidthY = Grid.SizeY
            };

            foreach (var filter in variableFilters)
            {
                var variableValueFilter = filter as IVariableValueFilter;

                if (variableValueFilter != null)
                {
                    if (filter.Variable == Grid.X)
                    {
                        rasterBoundaries.StartX = Grid.X.Values.IndexOf(variableValueFilter.Values[0]);
                        rasterBoundaries.WidthX = 1;
                    }
                    if (filter.Variable == Grid.Y)
                    {
                        rasterBoundaries.StartY = Grid.Y.Values.IndexOf(variableValueFilter.Values[0]);
                        rasterBoundaries.WidthY = 1;
                    }
                }

                var variableIndexRangeFilter = filter as VariableIndexRangeFilter;

                if (variableIndexRangeFilter != null)
                {
                    if (filter.Variable == Grid.X)
                    {
                        rasterBoundaries.StartX = variableIndexRangeFilter.MinIndex;
                        rasterBoundaries.WidthX = 1 + variableIndexRangeFilter.MaxIndex - variableIndexRangeFilter.MinIndex;
                    }
                    if (filter.Variable == Grid.Y)
                    {
                        rasterBoundaries.StartY = variableIndexRangeFilter.MinIndex;
                        rasterBoundaries.WidthY = 1 + variableIndexRangeFilter.MaxIndex - variableIndexRangeFilter.MinIndex;
                    }
                }
            }

            return(rasterBoundaries);
        }
Exemple #2
0
        private static Dataset GetOutputDataset <T>(Dataset gdalDataset, Driver gdalDriver, Driver targetDatasetDriver, IRegularGridCoverage gridCoverage, int rasterBandIndex, RasterBoundaries rasterBoundaries, T[] values)
        {
            Dataset outputDataset = gdalDataset;

            if (targetDatasetDriver.ShortName == "PCRaster")
            {
                // Convert the in mem dataset to a pc rasterBoundaries compatible one...

                Type valueType = gridCoverage.Components[0].ValueType;

                DataType dataType =
                    GdalHelper.GetGdalDataType(targetDatasetDriver, valueType);

                outputDataset = gdalDriver.Create(gridCoverage.Name, gdalDataset.RasterXSize,
                                                  gdalDataset.RasterYSize,
                                                  gridCoverage.Components.Count, dataType, new string[] { });

                GdalHelper.SetValuesForBand(outputDataset, rasterBandIndex, rasterBoundaries.StartX, rasterBoundaries.StartY, rasterBoundaries.WidthX, rasterBoundaries.WidthY, values);
            }
            return(outputDataset);
        }