//========================================================================= public static iTile LoadOrCreate(string a_filename, int a_stripStartPercent, int a_stripWidthPercent, int a_bandStartPercent, int a_bandWidthPercent) { // read the source file header into a temp tile var elevTile = LoadSourceHeader(a_filename); if (elevTile != null) { // we found the source file, so set params for the subtile we are interested in elevTile.MakeSubTile(a_stripStartPercent, a_stripWidthPercent, a_bandStartPercent, a_bandWidthPercent); Console.WriteLine("Loading {0}...", elevTile.TileFile); // now load the subtile, if it exists elevTile = Deserialize(elevTile.TileFile); if (elevTile == null) { // desrialisation failed so start from scratch elevTile = new iTileMaker(); // read the header using (var reader = elevTile.ReadSourceHeader(a_filename)) { // remake the subtile params again elevTile.MakeSubTile(a_stripStartPercent, a_stripWidthPercent, a_bandStartPercent, a_bandWidthPercent); Console.WriteLine("Creating {0}...", elevTile.TileFile); // read the data from the source elevTile.LoadSourceData(reader); } // write the data out elevTile.Serialize(); } Console.WriteLine("Done!"); elevTile.TraceTile(); } return(elevTile); }
//========================================================================= public static iTile Create(string a_filename, int a_stripStartPercent, int a_stripWidthPercent, int a_bandStartPercent, int a_bandWidthPercent) { // create a tilemaker and load the data var tileMaker = new iTileMaker(); using (var reader = tileMaker.ReadSourceHeader(a_filename)) { tileMaker.MakeSubTile(a_stripStartPercent, a_stripWidthPercent, a_bandStartPercent, a_bandWidthPercent); tileMaker.LoadSourceData(reader); } // create a fresh tile from the maker base and serialize it var createdTile = new iTile(tileMaker); createdTile.Serialize(); return(createdTile); }
//========================================================================= /// <summary> /// Loads the header from an ascii source file into a temporary tile /// </summary> /// <param name="a_filename">the name of the source file (.asc)</param> /// <returns>a tile with only the header filled out</returns> private static iTileMaker LoadSourceHeader(string a_filename) { iTileMaker returnTile = null; var elevTile = new iTileMaker(); try { using (var streamReader = elevTile.ReadSourceHeader(a_filename)) { if (streamReader != null) { returnTile = elevTile; } } } catch (Exception) { } return(returnTile); }