@Override public String toString() { StringBuffer sb = new StringBuffer( 200 ); double[] orig = getOrigin(); sb.append( "{location=" ).append( location ).append( "," ); sb.append( "orig_0=" ).append( orig[0] ).append( "," ); sb.append( "orig_1=" ).append( orig[1] ).append( "," ); sb.append( "xRes=" ).append( getResolutionX() ).append( "," ); sb.append( "yRes=" ).append( getResolutionY() ).append( "," ); sb.append( "xRpt=" ).append( getRotationX() ).append( "," ); sb.append( "yRot=" ).append( getRotationY() ).append( "}" ); return sb.toString(); }
/** * Returns a list with the highest resolution of every level. The list is sorted ascending (from highest to lowest * resolution). * * @return a list of all resolutions */ public List<Double> getResolutions() { List<Double> res = new ArrayList<Double>( resolutions.size() ); for ( AbstractRaster level : resolutions ) { RasterGeoReference renv = level.getRasterReference(); res.add( min( abs( renv.getResolutionX() ), abs( renv.getResolutionY() ) ) ); } return res; }
/** * Returns the best-fitting raster for a given resolution. * * This method tries to return the optimal raster for the requested resolution. It returns the next best resolution * (lower resolution value) if available, otherwise it returns the next raster with a higher resolution value. * * @param res * resolution in world units per pixel * @return raster for resolution or <code>null</code> if no rasters were defined */ public AbstractRaster getRaster( double res ) { Iterator<AbstractRaster> iter = resolutions.iterator(); AbstractRaster prevRaster = null; if ( iter.hasNext() ) { prevRaster = iter.next(); boolean found = false; while ( !found && iter.hasNext() ) { AbstractRaster curRaster = iter.next(); if ( curRaster.getRasterReference().getResolutionX() > res ) { found = true; } else { prevRaster = curRaster; } } } return prevRaster; }
private void writeMetaInfoFile( File file, RasterGeoReference env, int columns, int rows ) throws IOException { System.out.print( "\n Writing meta info file (raster envelope, etc)..." ); PrintWriter writer = new PrintWriter( new FileWriter( file ) ); // begins with standard world file entries writer.println( env.getResolutionX() ); writer.println( env.getRotationY() ); writer.println( env.getRotationX() ); writer.println( env.getResolutionY() ); double[] origin = env.getOrigin(); writer.println( origin[0] ); writer.println( origin[1] ); // now infos on grid writer.println( rows ); writer.println( columns ); writer.println( tileWidth ); writer.println( tileHeight ); writer.close(); LOG.info( "done." ); }
/** * writes a RasterReference into a world file. * * @param renv * the envelope * @param writer * to write the worldfile to. * @throws IOException */ public static void writeWorldFile( RasterGeoReference renv, PrintWriter writer ) throws IOException { writer.println( renv.getResolutionX() ); writer.println( renv.getRotationY() ); writer.println( renv.getRotationX() ); writer.println( renv.getResolutionY() ); // worldfiles are centered. double[] orig = renv.getOrigin( OriginLocation.CENTER ); writer.println( orig[0] ); writer.println( orig[1] ); } }
/** * Instantiate an AbstractRaster with given envelope and raster envelope. * * @param envelope * The envelope of the raster. * @param rasterReference * The raster reference of the underlying raster. */ protected AbstractRaster( Envelope envelope, RasterGeoReference rasterReference ) { super( envelope ); this.rasterReference = rasterReference; SampleResolution res = new SampleResolution( new double[] { rasterReference.getResolutionX(), rasterReference.getResolutionY() } ); this.resolutionInfo = new ResolutionInfo( res ); }
out.writeObject( rasterDataInfo ); out.writeObject( rasterGeoReference.getOriginLocation() ); out.writeDouble( rasterGeoReference.getResolutionX() ); out.writeDouble( rasterGeoReference.getResolutionY() ); out.writeDouble( rasterGeoReference.getRotationX() );
/** * Read a texture from a file and load it using the raster api. * * @param raster * the raster api raster. * */ public RasterAPITextureTileProvider( AbstractRaster raster ) { fac = new GeometryFactory(); this.raster = raster; BandType[] bandInfo = this.raster.getRasterDataInfo().bandInfo; hasAlpha = bandInfo.length == 4; for ( int i = 0; !hasAlpha && i < bandInfo.length; ++i ) { if ( bandInfo[i] == BandType.ALPHA ) { this.hasAlpha = true; } } // GriddedBlobTileContainer.create( file, options ) this.res = raster.getRasterReference().getResolutionX(); }
/** * The model pixel scale tag holds following values.<code> * <ul> * <li>Tag = 33550</li> * <li>Type = DOUBLE (IEEE Double precision)</li> * <li> N = 3 (3 dimensional)</li> * <li> x, y, z resolution</li> * </ul> * </code> * * * @param geoRef * the geo reference to get the values from. * @return the tiff field containing the scale */ private static TIFFField createModelPixelScaleTag( RasterGeoReference geoRef ) { TIFFTag tag = GEO_TAG_SET.getTag( GeoTIFFTagSet.TAG_MODEL_PIXEL_SCALE ); return new TIFFField( tag, TIFFTag.TIFF_DOUBLE, 3, new double[] { geoRef.getResolutionX(), geoRef.getResolutionY(), 0 } ); }
if ( geoRef1.location != geoRef2.location ) { double[] orig = geoRef2.getOrigin( geoRef1.location ); geoRef2Copy = new RasterGeoReference( geoRef1.location, geoRef2.getResolutionX(), geoRef2.getResolutionY(), geoRef2.getRotationX(), geoRef2.getRotationY(), orig[0], orig[1], geoRef2.crs ); double[] origin2 = geoRef2Copy.getOrigin(); double res1x = geoRef1.getResolutionX(); double res1y = geoRef1.getResolutionY(); double res2x = geoRef2Copy.getResolutionX(); double res2y = geoRef2Copy.getResolutionY();
/** * Returns new RasterGeoReference with the origin set to the given target location. Other values are taken from this * instance. * * @param targetLocation * of the new reference * @return new RasterGeoReference or this if the target location is <code>null</code> or equals this one. */ public RasterGeoReference createRelocatedReference( OriginLocation targetLocation ) { if ( targetLocation == null || location == targetLocation ) { return this; } double[] newOrigin = getOrigin( targetLocation ); return new RasterGeoReference( targetLocation, this.getResolutionX(), this.getResolutionY(), this.getRotationX(), this.getRotationY(), newOrigin[0], newOrigin[1], this.crs ); }
/** * * @param id * @param level * @param raster */ public MyTile( int id, int level, SimpleRaster raster ) { super( id, level, raster.getEnvelope(), null, null, (float) raster.getRasterReference().getResolutionX(), (float) raster.getRasterReference().getResolutionY(), raster.getRasterReference().getOriginLocation() ); this.raster = raster; }
RasterData shadeData = RasterDataFactory.createRasterData( cols - 2, rows - 2, DataType.BYTE, false ); RasterGeoReference ref = raster.getRasterReference(); double resx = cols * ref.getResolutionX() / ( cols - 2 ); double resy = rows * ref.getResolutionY() / ( rows - 2 ); ref = new RasterGeoReference( ref.getOriginLocation(), resx, resy, ref.getOrigin()[0], ref.getOrigin()[1] );
writer.write( "cellsize " + rasterReference.getResolutionX() + newLine ); writer.write( "nodata_value " + simpleRaster.getRasterDataInfo().getFloatNoDataForBand( 0 ) + newLine );
sampleSizeX = rRef.getResolutionX(); sampleSizeY = rRef.getResolutionY(); this.geoReference = new RasterGeoReference( OriginLocation.CENTER, rRef.getResolutionX(), rRef.getResolutionY(), rRef.getRotationX(), rRef.getRotationY(), 0, raster.getEnvelope().getSpan1(), raster.getCoordinateSystem() );
@Override public void setSubRaster( double x, double y, AbstractRaster source ) { RasterGeoReference srcREnv = source.getRasterReference(); RasterGeoReference dstREnv = new RasterGeoReference( srcREnv.getOriginLocation(), srcREnv.getResolutionX(), srcREnv.getResolutionY(), x, y ); Envelope dstEnv = dstREnv.getEnvelope( source.getColumns(), source.getRows(), source.getCoordinateSystem() ); RasterData srcData = source.getAsSimpleRaster().getRasterData(); SimpleRaster movedRaster = new SimpleRaster( srcData, dstEnv, dstREnv, metadata ); setSubRaster( dstEnv, movedRaster ); }
/** * Creates a new {@link GriddedTileContainer} instances. * * @param infoFile * containing the relevant information. * */ protected GriddedTileContainer( GridMetaInfoFile infoFile ) { this.rdi = infoFile.getDataInfo(); this.envelope = infoFile.getEnvelope( OriginLocation.OUTER ); this.envelopeWidth = envelope.getMax().get0() - envelope.getMin().get0(); this.envelopeHeight = envelope.getMax().get1() - envelope.getMin().get1(); // this.envelopeWidth = envelope.getSpan0(); // this.envelopeHeight = envelope.getSpan1(); this.rows = infoFile.rows(); this.columns = infoFile.columns(); this.tileSamplesX = infoFile.getTileRasterWidth(); this.tileSamplesY = infoFile.getTileRasterHeight(); this.tileWidth = envelopeWidth / columns; this.tileHeight = envelopeHeight / rows; this.rasterReference = infoFile.getGeoReference(); LOG.debug( "envelope: " + envelope ); LOG.debug( "raster reference: " + rasterReference ); SampleResolution sr = new SampleResolution( new double[] { rasterReference.getResolutionX(), rasterReference.getResolutionY() } ); this.resolutionInfo = new ResolutionInfo( sr ); }
return new RasterGeoReference( tLoc, this.getResolutionX(), this.getResolutionY(), this.getRotationX(), this.getRotationY(), worldCoordinate[0], worldCoordinate[1], this.crs );