private static Heightmap ReadHeader(StreamReader reader) { var result = new Heightmap(); result.Columns = int.Parse(ReadHeader(reader, "ncols")); result.Rows = int.Parse(ReadHeader(reader, "nrows")); ReadHeader(reader, "xllcorner"); ReadHeader(reader, "yllcorner"); result.CellSize = ParseFloat(ReadHeader(reader, "cellsize")); result.NoDataValue = ParseFloat(ReadHeader(reader, "NODATA_value")); result.Data = new NDArray <float>(new Shape(result.Rows, result.Columns)); return(result); }
public static Func <float, Gray16> FullRange16(Heightmap heightmap) { var min = heightmap.Data.min <float>(); var max = heightmap.Data.max <float>(); if (min == max) { return(v => new Gray16()); } var delta = max - min; return(v => { v -= min; v /= delta; v *= 65535; return new Gray16((ushort)v); }); }