/** * Transcode a NetCDF data type into a java2D DataBuffer type. * * @param type the {@link DataType} to transcode. * @param unsigned if the original data is unsigned or not * @return an int representing the correct DataBuffer type. */ public static int transcodeNetCDFDataType(final DataType type, final boolean unsigned) { if (DataType.BOOLEAN.equals(type) || DataType.BYTE.equals(type)) { return DataBuffer.TYPE_BYTE; } if (DataType.CHAR.equals(type)) { return DataBuffer.TYPE_USHORT; } if (DataType.SHORT.equals(type)) { return unsigned ? DataBuffer.TYPE_USHORT : DataBuffer.TYPE_SHORT; } if (DataType.INT.equals(type)) { return DataBuffer.TYPE_INT; } if (DataType.FLOAT.equals(type)) { return DataBuffer.TYPE_FLOAT; } if (DataType.LONG.equals(type) || DataType.DOUBLE.equals(type)) { return DataBuffer.TYPE_DOUBLE; } return DataBuffer.TYPE_UNDEFINED; }
/** * Check whether the Y axis need to be flipped. Note that the method is synchronized since it * access the underlying Variable * * @param axis * @return * @throws IOException */ private synchronized boolean needFlipYAxis(CoordinateAxis axis) throws IOException { boolean flipYAxis = false; try { Array yAxisStart = axis.read(new Section().appendRange(2)); float y1 = yAxisStart.getFloat(0); float y2 = yAxisStart.getFloat(1); if (y2 > y1) { flipYAxis = true; } } catch (InvalidRangeException e) { throw new RuntimeException(e); } return flipYAxis; }
return new ArrayFloat.D7( dimensions[0], dimensions[1], dimensions[6]); } else if (varDataType == DataType.DOUBLE) { return new ArrayDouble.D7( dimensions[0], dimensions[1], dimensions[6]); } else if (varDataType == DataType.BYTE) { return new ArrayByte.D7( dimensions[0], dimensions[1], dimensions[6]); } else if (varDataType == DataType.SHORT) { return new ArrayShort.D7( dimensions[0], dimensions[1], dimensions[6]); } else if (varDataType == DataType.INT) { return new ArrayInt.D7( dimensions[0], dimensions[1], return new ArrayFloat.D6(
ranges.add(new Range(0, 0, 1)); first = slice2DIndex.getNIndex(i); if (first != -1) { ranges.add(new Range(first, first, 1)); int length = srcRegion.height; int stride = strideY; ranges.add(new Range(first, first + length - 1, stride)); ranges.add(new Range(first, first + length - 1, stride)); } catch (InvalidRangeException e) { throw netcdfFailure(e); final Section section = new Section(ranges); Range range = new Range(sourceBand, sourceBand, 1); section.setRange(0, range); } catch (InvalidRangeException exception) { throw netcdfFailure(exception); final IndexIterator it = array.getIndexIterator(); for (int y = ymax; --y >= ymin; ) { for (int x = xmin; x < xmax; x++) { raster.setSample(x, y, dstBand, it.getDoubleNext()); break;
@Override public byte getScalarByte(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarByte(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarByte( m.getName()); }
@Override public long[] getJavaArrayLong(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getJavaArrayLong(recnum, m); StructureData sd = getStructureData(recnum); return sd.getJavaArrayLong( m.getName()); }
@Override public Array getArray(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getArray(recnum, m); StructureData sd = getStructureData(recnum); return sd.getArray( m.getName()); }
@Override public int getScalarInt(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarInt(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarInt( m.getName()); }
@Override public float getScalarFloat(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarFloat(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarFloat( m.getName()); }
@Override public String getScalarString(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarString(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarString( m.getName()); }
@Override public double[] getJavaArrayDouble(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getJavaArrayDouble(recnum, m); StructureData sd = getStructureData(recnum); return sd.getJavaArrayDouble( m.getName()); }
@Override public short[] getJavaArrayShort(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getJavaArrayShort(recnum, m); StructureData sd = getStructureData(recnum); return sd.getJavaArrayShort( m.getName()); }
@Override public char getScalarChar(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarChar(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarChar( m.getName()); }
@Override public ArraySequence getArraySequence(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getArraySequence(recnum, m); StructureData sd = getStructureData(recnum); return sd.getArraySequence( m.getName()); } }
@Override public String[] getJavaArrayString(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getJavaArrayString(recnum, m); StructureData sd = getStructureData(recnum); return sd.getJavaArrayString( m.getName()); }
/** * Transcode a NetCDF Number into a proper Number instance. * * @param type the {@link DataType} to transcode. * @return the proper number instance */ public static Number transcodeNumber(final DataType type, Number value) { if (DataType.DOUBLE.equals(type)) { return Double.valueOf(value.doubleValue()); } else if (DataType.FLOAT.equals(type)) { return Float.valueOf(value.floatValue()); } else if (DataType.LONG.equals(type)) { return Long.valueOf(value.longValue()); } else if (DataType.INT.equals(type)) { return Integer.valueOf(value.intValue()); } else if (DataType.SHORT.equals(type)) { return Short.valueOf(value.shortValue()); } else if (DataType.BYTE.equals(type)) { return Byte.valueOf(value.byteValue()); } throw new IllegalArgumentException( "Unsupported type or value: type = " + type.toString() + " value = " + value); }
@Override public byte getScalarByte(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarByte(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarByte( m.getName()); }
@Override public long[] getJavaArrayLong(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getJavaArrayLong(recnum, m); StructureData sd = getStructureData(recnum); return sd.getJavaArrayLong( m.getName()); }