Exemple #1
0
        public void Join(int lat0, int lon0, int lat1, int lon1)
        {
            int dlat = lat0 - lat1;
            int dlon = lon1 - lon0;

            var readers = new List <RawReader>();

            var concatBitmaps = new List <EnumerableBitmap <short> >();

            for (int lat = lat0; lat >= lat1; lat--)
            {
                var bitmapPaths = new List <string>();
                for (int lon = lon0; lon <= lon1; lon++)
                {
                    string bitmapPath = string.Format(_inputPath, MapPosition(lat, lon));
                    bitmapPaths.Add(bitmapPath);
                }
                var rawReaders = bitmapPaths.Select(p => File.Exists(p) ? new RawReader(File.OpenRead(p)) : null).ToArray();
                readers.AddRange(rawReaders);

                var rowBitmaps = rawReaders.Select(r => r != null ? r.ReadBitmap <short>(1201, 1201) : (IBitmap <short>)_oceanBitmap).ToArray();
                var rowBitmap  = BitmapTools.Concatenate(rowBitmaps);

                concatBitmaps.Add(rowBitmap);
            }

            var theBitmap = BitmapTools.Append(concatBitmaps.ToArray());

            using (var tiffWriter = new TiffWriter(File.Create($@"Datasets\Planets\Earth\ViewFinderPanoramas\dem3_{MapPosition(lat0, lon0)}_{MapPosition(lat1, lon1)}.tif")))
            {
                tiffWriter.BigTiff = true;
                theBitmap          = theBitmap.Convert((p) =>
                {
                    return((short)(((p >> 8) & 0xff) | ((p << 8) & 0xff00)));
                });
                tiffWriter.WriteImageFile(theBitmap);
            }

            foreach (var reader in readers)
            {
                reader?.Dispose();
            }
        }
Exemple #2
0
        public EnumerableBitmap <T> LoadBitmap(int lat0, int lon0, int lat1, int lon1)
        {
            int dlat = lat0 - lat1;
            int dlon = lon1 - lon0;

            var latBitmaps = new List <IBitmap <T> >();

            for (int lat = lat0; lat >= lat1; lat--)
            {
                var lonBitmaps = new List <IBitmap <T> >();
                for (int lon = lon0; lon <= lon1; lon++)
                {
                    var bitmap = LoadMapGranulate(lat, lon);
                    lonBitmaps.Add(bitmap);
                }
                var lonBitmap = BitmapTools.Concatenate(lonBitmaps.ToArray());

                latBitmaps.Add(lonBitmap);
            }

            return(BitmapTools.Append(latBitmaps.ToArray()));
        }
        public void Join()
        {
            var tiffReaders  = _inputFiles.Select(p => new TiffReader(File.OpenRead(p))).ToArray();
            var inputBitmaps = tiffReaders.Select(r => r.ReadImageFile <short>()).ToArray();

            var b1 = BitmapTools.Concatenate(inputBitmaps[0], inputBitmaps[1], inputBitmaps[2], inputBitmaps[3], inputBitmaps[4], inputBitmaps[5]);
            var b2 = BitmapTools.Concatenate(inputBitmaps[6], inputBitmaps[7], inputBitmaps[8], inputBitmaps[9], inputBitmaps[10], inputBitmaps[11]);
            var b3 = BitmapTools.Concatenate(inputBitmaps[12], inputBitmaps[13], inputBitmaps[14], inputBitmaps[15], inputBitmaps[16], inputBitmaps[17]);
            var b4 = BitmapTools.Concatenate(inputBitmaps[18], inputBitmaps[19], inputBitmaps[20], inputBitmaps[21], inputBitmaps[22], inputBitmaps[23]);

            var b = BitmapTools.Append(b1, b2, b3, b4);

            using (var tiffWriter = new TiffWriter(File.Create($@"Datasets\Planets\Earth\ViewFinderPanoramas\dem15.tif")))
            {
                tiffWriter.BigTiff = true;
//                var bitmap = _topElevationBitmap.Convert((p) => { return (ushort)(p - short.MinValue); });
                tiffWriter.WriteImageFile(b);
            }

            foreach (var reader in tiffReaders)
            {
                reader.Dispose();
            }
        }