protected DataRaster[] doRead(Object source, AVList params) throws java.io.IOException { java.nio.ByteBuffer byteBuffer = this.readElevations(source); // If the parameter list is null, or doesn't already have all the necessary metadata, then we // copy the parameter // list and attempt to populate the copy with any missing metadata. if (this.validateMetadata(source, params) != null) { // Copy the parameter list to insulate changes from the caller. params = (params != null) ? params.copy() : new AVListImpl(); params.setValue(AVKey.FILE_SIZE, byteBuffer.capacity()); this.readWorldFiles(source, params); } int width = (Integer) params.getValue(AVKey.WIDTH); int height = (Integer) params.getValue(AVKey.HEIGHT); Sector sector = (Sector) params.getValue(AVKey.SECTOR); // Translate the property PIXEL_TYPE to the property DATA_TYPE. if (params.getValue(AVKey.DATA_TYPE) == null) params.setValue(AVKey.DATA_TYPE, params.getValue(AVKey.PIXEL_TYPE)); ByteBufferRaster raster = new ByteBufferRaster(width, height, sector, byteBuffer, params); // This code expects the string "gov.nasa.worldwind.avkey.MissingDataValue", which now // corresponds to the // key MISSING_DATA_REPLACEMENT. Double missingDataValue = (Double) params.getValue(AVKey.MISSING_DATA_REPLACEMENT); if (missingDataValue != null) raster.setTransparentValue(missingDataValue); return new DataRaster[] {raster}; }
private void convertFeetToMeters(ByteBufferRaster raster) { if (null == raster) { return; } int width = raster.getWidth(); int height = raster.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { raster.setDoubleAtPosition( y, x, raster.getDoubleAtPosition(y, x) / WWMath.METERS_TO_FEET); } } }