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(); } }
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(); } }