public static Dataset closeDataSet(final Dataset dataSet) { if (dataSet != null) { try { dataSet.delete(); } catch (final Throwable e) { } } return null; }
/** * Fetches metadata from the given GDAL dataset. */ GridGeometry(final Dataset ds) throws IOException { if (ds == null) { throw new IOException("DataSet is closed."); } xSize = ds.getRasterXSize(); ySize = ds.getRasterYSize(); numBands = ds.getRasterCount(); final double[] gt = ds.GetGeoTransform(); gridToCRS = new AffineTransform(gt[1], gt[4], gt[2], gt[5], gt[0], gt[3]); crs = CRS.create(ds.GetProjection()); }
private byte[][] readBands( Dataset dataset ) { int numBands = dataset.getRasterCount(); byte[][] bands = new byte[numBands][width * height]; for ( int i = 0; i < numBands; i++ ) { Band band = dataset.GetRasterBand( i + 1 ); byte[] bandBytes = bands[i]; band.ReadRaster( 0, 0, width, height, width, height, GDT_Byte, bandBytes, 0, 0 ); } return bands; }
Dimension size(Dataset dataset) { return new Dimension(dataset.getRasterXSize(), dataset.getRasterYSize()); }
int imageWidth = gdalDataset.getRasterXSize(); int imageHeight = gdalDataset.getRasterYSize(); String productName = inputFile.getFileName().toString(); String productType = "GDAL"; product.setFileLocation(inputFile.toFile()); int bandCount = gdalDataset.getRasterCount(); org.gdal.gdal.Band gdalBand = gdalDataset.GetRasterBand(bandIndex + 1); int gdalDataType = gdalBand.getDataType(); BufferTypeDescriptor dataBufferType = bufferTypes.get(gdalDataType); if (gdalconst.CE_Failure != gdalDataset.BuildOverviews("NEAREST", new int[] { 2, 4, 8, 16 })) { gdalBand = gdalDataset.GetRasterBand(bandIndex + 1); } else { logger.fine("Multiple levels not supported"); throw ex; } finally { gdalDataset.delete();
setWidth(dataset.getRasterXSize()); setHeight(dataset.getRasterYSize()); rband = dataset.GetRasterBand(1); rband.GetBlockSize(xBlockSize, yBlockSize); final int numBands = dataset.getRasterCount(); setNumBands(numBands); if (numBands <= 0) pBand = dataset.GetRasterBand(band + 1); buf_type = pBand.getDataType(); banks[band] = band;
private Envelope readEnvelope() throws UnknownCRSException, IOException { double[] geoTransform = dataset.GetGeoTransform(); int rasterXSize = dataset.getRasterXSize(); int rasterYSize = dataset.getRasterYSize(); double pixelResX = geoTransform[1]; double pixelResY = geoTransform[5]; double minX = geoTransform[0]; double maxX = minX + pixelResX * rasterXSize; double minY = geoTransform[3]; double maxY = minY + pixelResY * rasterYSize; if ( minX > maxX ) { double tmp = maxX; maxX = minX; minX = tmp; } if ( minY > maxY ) { double tmp = maxY; maxY = minY; minY = tmp; } Point min = new DefaultPoint( null, crs, null, new double[] { minX, minY } ); Point max = new DefaultPoint( null, crs, null, new double[] { maxX, maxY } ); return new DefaultEnvelope( null, crs, null, min, max ); }
private static MetadataElement buildMetadataElement(Dataset gdalProduct) { Driver hDriver = gdalProduct.GetDriver(); int imageWidth = gdalProduct.getRasterXSize(); int imageHeight = gdalProduct.getRasterYSize(); MetadataElement metadataElement = new MetadataElement("Image info"); metadataElement.setAttributeString("driver", hDriver.getShortName()); gdalProduct.GetGeoTransform(adfGeoTransform); double originX = adfGeoTransform[0]; double originY = adfGeoTransform[3]; Hashtable<?, ?> dict = gdalProduct.GetMetadata_Dict(""); Enumeration keys = dict.keys(); while (keys.hasMoreElements()) {
private static GeoCoding buildGeoCoding(Dataset gdalProduct) { String wellKnownText = gdalProduct.GetProjectionRef(); if (!StringUtils.isNullOrEmpty(wellKnownText)) { int imageWidth = gdalProduct.getRasterXSize(); int imageHeight = gdalProduct.getRasterYSize(); double[] adfGeoTransform = new double[6]; gdalProduct.GetGeoTransform(adfGeoTransform); double originX = adfGeoTransform[0]; double originY = adfGeoTransform[3]; double pixelSizeX = adfGeoTransform[1]; double pixelSizeY = (adfGeoTransform[5] > 0) ? adfGeoTransform[5] : -adfGeoTransform[5]; try { CoordinateReferenceSystem crs = CRS.parseWKT(wellKnownText); return new CrsGeoCoding(crs, imageWidth, imageHeight, originX, originY, pixelSizeX, pixelSizeY); } catch (Exception ex) { logger.log(Level.SEVERE, ex.getMessage(), ex); } } return null; }
private Dataset createMemDataset( Envelope nativeBbox, String nativeProjection, byte[][] composedRegion ) { Driver vrtDriver = gdal.GetDriverByName( "MEM" ); Dataset dataset = vrtDriver.Create( "/tmp/whatever", width, height, composedRegion.length ); dataset.SetProjection( nativeProjection ); dataset.SetGeoTransform( getGeoTransform( nativeBbox, width, height ) ); for ( int i = 1; i <= dataset.getRasterCount(); i++ ) { Band band = dataset.GetRasterBand( i ); if ( band.WriteRaster( 0, 0, width, height, width, height, GDT_Byte, composedRegion[i - 1] ) != CE_None ) { throw new RuntimeException( "Error writing composed raster." ); } } return dataset; }
dataset.SetGeoTransform(geoTransformation); dataset.SetProjection(projection); final Band band = dataset.GetRasterBand(i + 1); final int colorInterpretation = imageMetadata .getColorInterpretations(i); final String key = keysIt.next(); final String value = (String) metadataMap.get(key); dataset.SetMetadataItem(key, value, domain);
String sourceWkt = dataset.GetProjection(); String destinationWkt = gdalImageReadParam.getDestinationWkt(); SpatialReference sourceReference = new SpatialReference(sourceWkt); dataset = gdal.AutoCreateWarpedVRT( dataset, dataset.GetProjection(), destinationWkt, gdalImageReadParam.getResampleAlgorithm().getGDALResampleAlgorithm(), width = warpedDataset.getRasterXSize(); height = warpedDataset.getRasterYSize();
public Dataset extractRegionAsDataset( Envelope region, int pixelsX, int pixelsY, boolean withAlpha ) throws IOException { byte[][] buffer = extractRegionAsByteArray( region, pixelsX, pixelsY, withAlpha ); Driver vrtDriver = gdal.GetDriverByName( "MEM" ); Dataset ds = vrtDriver.Create( "/tmp/whatever", pixelsX, pixelsY, buffer.length ); ds.SetProjection( dataset.GetProjection() ); int i = 1; for ( byte[] bytes : buffer ) { Band band = ds.GetRasterBand( i ); if ( band.WriteRaster( 0, 0, pixelsX, pixelsY, pixelsX, pixelsY, GDT_Byte, bytes ) != CE_None ) { throw new RuntimeException( "Error writing raster band." ); } i++; } return ds; }
setImageResource(imageResource); final Dataset dataset = getDataset(); final Band band = dataset.GetRasterBand(1); for (int i = 0; i < band.GetOverviewCount(); i++) { final Band overview = band.GetOverview(i); final String projection = dataset.GetProjection(); final double[] geoTransform = dataset.GetGeoTransform(); if (projection != null) { final CoordinateSystem esriCoordinateSystem = EsriCoordinateSystems.getCoordinateSystem(projection);
final double x = boundingBox.getMinX(); final double width = boundingBox.getWidth(); final int imageWidth = dataset.getRasterXSize(); final double y = boundingBox.getMaxY(); final double height = boundingBox.getHeight(); final int imageHeight = dataset.getRasterYSize(); final double[] transform = new double[] { x, width / imageWidth, 0, y, 0, -height / imageHeight }; dataset.SetGeoTransform(transform);
/** * Set georeferencing information from an input <code>Dataset</code> * * @param dataset * a <code>Dataset</code> from where to retrieve all * georeferencing information available */ private void setGeoreferencingInfo(final Dataset dataset) { // Setting CRS's related information final double[] geoT = new double[6]; dataset.GetGeoTransform(geoT); setGeoTransformation(geoT); setProjection(dataset.GetProjection()); setGcpProjection(dataset.GetGCPProjection()); setGcpNumber(dataset.GetGCPCount()); }
private Dataset reproject( Dataset src, String dstCrsWkt ) { Driver vrtDriver = gdal.GetDriverByName( "MEM" ); Dataset region = vrtDriver.Create( "/tmp/whatever", width, height, src.getRasterCount() ); region.SetProjection( dstCrsWkt ); region.SetGeoTransform( getGeoTransform( bbox, width, height ) ); gdal.ReprojectImage( src, region ); return region; }
try { SpatialMetadata envelopeAndCrs = getEnvelopeAndCrs( gdalDataset, cfg.getStorageCRS() ); Band band = gdalDataset.GetRasterBand( 1 ); Band overview = band; int overviewCount = band.GetOverviewCount(); throw new ResourceInitException( "Could not create tile matrix set. Reason: " + e.getLocalizedMessage(), e ); } finally { gdalDataset.delete();
private byte[][] readRegion( Dataset dataset, int regionMinX, int regionMinY, int regionPixelsX, int regionPixelsY, int targetWidth, int targetHeight, int numBands ) throws IOException { byte[][] bands = new byte[numBands][targetWidth * targetHeight]; if ( targetWidth * targetHeight > 0 ) { for ( int i = 0; i < numBands; i++ ) { Band band = dataset.GetRasterBand( i + 1 ); byte[] bandBytes = bands[i]; if ( band.ReadRaster( regionMinX, regionMinY, regionPixelsX, regionPixelsY, targetWidth, targetHeight, GDT_Byte, bandBytes, 0, 0 ) != CE_None ) { LOG.error( "GDAL ReadRaster failed: " + regionMinX + "," + regionMinY + "," + regionPixelsX + "," + regionPixelsY + "," + targetWidth + "," + targetHeight + "," + bandBytes.length + "," + datasetPixelsX + "," + datasetPixelsY ); return bands; } } } return bands; }
public double[] GetGeoTransform() { double adfGeoTransform[] = new double[6]; GetGeoTransform(adfGeoTransform); return adfGeoTransform; }