Revision: 6589 http://sourceforge.net/p/jump-pilot/code/6589 Author: ma15569 Date: 2020-10-08 15:08:04 +0000 (Thu, 08 Oct 2020) Log Message: ----------- Added Raster to bypass java hip space on building a double array of cell values if cols*rows is big (large rasters)
Modified Paths: -------------- core/trunk/src/org/openjump/core/rasterimage/sextante/rasterWrappers/GridExtent.java Modified: core/trunk/src/org/openjump/core/rasterimage/sextante/rasterWrappers/GridExtent.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/sextante/rasterWrappers/GridExtent.java 2020-10-08 10:39:29 UTC (rev 6588) +++ core/trunk/src/org/openjump/core/rasterimage/sextante/rasterWrappers/GridExtent.java 2020-10-08 15:08:04 UTC (rev 6589) @@ -20,7 +20,11 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.awt.image.DataBuffer; +import java.awt.image.WritableRaster; +import javax.media.jai.RasterFactory; + import org.openjump.core.rasterimage.sextante.ISextanteLayer; import org.openjump.core.rasterimage.sextante.ISextanteRasterLayer; @@ -44,6 +48,9 @@ int m_iNX; int m_iNY; Envelope m_Envelope; + //Added Raster to bypass java hip space on building a double array of cell values + //if cols*rows is big (large rasters) + WritableRaster m_Raster; public GridExtent(){} @@ -118,6 +125,49 @@ } /** + * Method to build a GridExtent with a defined Raster + * + * @param double cellSize along X + * @param double cellSize along Y + * @param Envelope envelope + * @param double nodata value + */ + + public void setValuesAndRaster(double cellSizeX, double cellSizeY, Envelope envelope, double nodata) { + m_dCellSizeX = cellSizeX; + m_dCellSizeY = cellSizeY; + m_dXMin = Math.min(envelope.getMinX(), envelope.getMaxX()); + m_dXMax = Math.max(envelope.getMinX(), envelope.getMaxX()); + m_dYMin = Math.min(envelope.getMinY(), envelope.getMaxY()); + m_dYMax = Math.max(envelope.getMinY(), envelope.getMaxY()); + recalculateNXAndNY(); + m_iNX = this.getNX(); + m_iNY = this.getNY(); + m_Raster = RasterFactory.createBandedRaster( + DataBuffer.TYPE_FLOAT, m_iNX , m_iNY , 1, null); + for (int i = 0; i < m_iNX; i++) { + for (int j = 0; j < m_iNY; j++) { + m_Raster.setSample(i, j, 0, nodata); + } + } + } + + + + + public WritableRaster getRaster() { + return m_Raster; + } + + /** + * Returns the extension of Grid as com.vividsolutions.jts.geom.Envelope + * @return Envelope + */ + public Envelope getEnvelope() { + return new Envelope(m_dXMin,m_dXMax,m_dYMin, m_dYMax ); + } + + /** * Returns the number of columns in the extent * @return the number of columns */ @@ -136,16 +186,8 @@ return m_iNY; } - - /** - * Returns the extension of Grid as com.vividsolutions.jts.geom.Envelope - * @return Envelope - */ + - public Envelope getEnvelope() { - return m_Envelope; - } - private void recalculateNXAndNY(){ m_iNY = (int) Math.floor((m_dYMax - m_dYMin) / m_dCellSizeY); _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel