/** * Get the minimum and the maximum data value of the previously read Array, * skipping missing values as defined by isMissingData(double val). * * @param a Array to get min/max values * @return both min and max value. */ public MAMath.MinMax getMinMaxSkipMissingData(Array a) { return MAMath.getMinMaxSkipMissingData(a, this); }
/** * Get the minimum and the maximum data value of the previously read Array, * skipping missing values as defined by isMissingData(double val). * * @param a Array to get min/max values * @return both min and max value. */ public MAMath.MinMax getMinMaxSkipMissingData(Array a) { return MAMath.getMinMaxSkipMissingData(a, this); }
/** * Get the minimum and the maximum data value of the previously read Array, * skipping missing values as defined by isMissingData(double val). * * @param a Array to get min/max values * @return both min and max value. */ public MAMath.MinMax getMinMaxSkipMissingData(Array a) { return MAMath.getMinMaxSkipMissingData(a, this); }
/** * Get the minimum and the maximum data value of the previously read Array, * skipping missing values as defined by isMissingData(double val). * * @param a Array to get min/max values * @return both min and max value. */ public MAMath.MinMax getMinMaxSkipMissingData(Array a) { return MAMath.getMinMaxSkipMissingData(a, this); }
MAMath.MinMax minmax = getMinMaxSkipMissingData(a, missingValue);
MAMath.MinMax minmax = getMinMaxSkipMissingData(a, missingValue);
MAMath.MinMax minmax = getMinMaxSkipMissingData(a, missingValue);
private static DataBuffer makeDataBuffer( Array ma, IsMissingEvaluator missEval) { if (ma instanceof ArrayByte) return makeByteDataBuffer( (ArrayByte) ma); MAMath.MinMax minmax = MAMath.getMinMaxSkipMissingData(ma, missEval); double diff = (minmax.max - minmax.min); boolean hasMissing = (missEval != null) && missEval.hasMissing(); int n = hasMissing ? 254 : 255; double scale = (diff > 0.0) ? n / diff : 1.0; IndexIterator ii = ma.getIndexIterator(); int h = ma.getShape()[0]; int w = ma.getShape()[1]; byte[] byteData = new byte[h*w]; for (int i = 0; i < byteData.length; i++) { double val = ii.getDoubleNext(); if (missEval != null && missEval.isMissing(val)) { byteData[i] = (byte) 255; // missing } else { double sval = ((val - minmax.min) * scale); byteData[i] = (byte) (sval); // < 128.0 ? sval : sval - 255.0); } } return new DataBufferByte(byteData, byteData.length); }
MAMath.MinMax dataMinMax = MAMath.getMinMaxSkipMissingData(data, array); if (greyScale) { ArrayByte result = replaceMissingValuesAndScale(array, data, dataMinMax);