Class Utils

Object
Utils

public class Utils extends Object
Sparse utilities for the various mosaic classes. I use them to extract complex code from other places.
Author:
Simone Giannecchini, GeoSolutions S.A.S.
  • Field Details

    • FF

      public static final FilterFactory FF
    • DEFAULT_RANGE_READER

      public static final String DEFAULT_RANGE_READER
      See Also:
    • EXCLUDE_MOSAIC

      public static final Hints.Key EXCLUDE_MOSAIC
    • EXCLUDE_MOSAIC_HINTS

      public static final Hints EXCLUDE_MOSAIC_HINTS
      Hints to use for avoiding to search for the imagemosaic format
    • CHECK_AUXILIARY_METADATA

      public static final Hints.Key CHECK_AUXILIARY_METADATA
    • COG_SETTINGS

      public static final Hints.Key COG_SETTINGS
    • AUXILIARY_FILES_PATH

      public static final Hints.Key AUXILIARY_FILES_PATH
    • AUXILIARY_DATASTORE_PATH

      public static final Hints.Key AUXILIARY_DATASTORE_PATH
    • PARENT_DIR

      public static final Hints.Key PARENT_DIR
    • MOSAIC_READER

      public static final Hints.Key MOSAIC_READER
    • RANGE_SPLITTER_CHAR

      public static final String RANGE_SPLITTER_CHAR
      See Also:
    • PAM_DATASET

      @Deprecated public static final String PAM_DATASET
      Deprecated.
      See Also:
    • DATASTORE_PROPERTIES

      public static final String DATASTORE_PROPERTIES
      See Also:
    • PROPERTIES_SEPARATOR

      public static final String PROPERTIES_SEPARATOR
      See Also:
    • LOG_EXCLUDES

      public static final Set<String> LOG_EXCLUDES
    • RGB_TO_GRAY_MATRIX

      public static final double[][] RGB_TO_GRAY_MATRIX
      RGB to GRAY coefficients (for Luminance computation)
    • HETEROGENEOUS_LOCAL_REPROJECT

      public static boolean HETEROGENEOUS_LOCAL_REPROJECT
      Enables local reprojection for heterogeneous mosaics, in other words, when a coverage has heterogeneous crs granules, marks the reader as a reprojecting one, and the renderer will delegate target reprojection to it. (intentionally marked as non-final to help testing)
    • SAMPLE_IMAGE_ALLOWLIST_KEY

      public static final String SAMPLE_IMAGE_ALLOWLIST_KEY
      System property org.geotools.gce.imagemosaic.sampleimage.allowlist used to validate sample image deserialization.
      See Also:
    • DEFAULT_WILCARD

      public static final String DEFAULT_WILCARD
      Default wildcard for creating mosaics.
      See Also:
    • DEFAULT_PATH_BEHAVIOR

      public static final boolean DEFAULT_PATH_BEHAVIOR
      Default path behavior with respect to absolute paths.
      See Also:
    • DEFAULT_PRIORITY

      public static final int DEFAULT_PRIORITY
      Default priority for the underlying Thread.
      See Also:
    • DEFAULT_LOCATION_ATTRIBUTE

      public static final String DEFAULT_LOCATION_ATTRIBUTE
      Default location attribute name.
      See Also:
    • DEFAULT_INDEX_NAME

      public static final String DEFAULT_INDEX_NAME
      See Also:
    • SHAPE_SPI

      public static final DataStoreFactorySpi SHAPE_SPI
    • DEFAULT_RECURSION_BEHAVIOR

      public static final boolean DEFAULT_RECURSION_BEHAVIOR
      See Also:
    • DEFAULT_COLLECT_RAT

      public static final boolean DEFAULT_COLLECT_RAT
      See Also:
    • DEFAULT_FOOTPRINT_MANAGEMENT

      public static final boolean DEFAULT_FOOTPRINT_MANAGEMENT
      See Also:
    • DEFAULT_CONFIGURATION_CACHING

      public static final boolean DEFAULT_CONFIGURATION_CACHING
      See Also:
    • DEFAULT_COLOR_EXPANSION_BEHAVIOR

      public static final boolean DEFAULT_COLOR_EXPANSION_BEHAVIOR
      See Also:
    • UTC_TIME_ZONE

      public static final TimeZone UTC_TIME_ZONE
    • SAMPLE_IMAGE_NAME_LEGACY

      public static final String SAMPLE_IMAGE_NAME_LEGACY
      See Also:
    • SAMPLE_IMAGE_NAME

      public static final String SAMPLE_IMAGE_NAME
      See Also:
    • PAM_DATASET_NAME

      public static final String PAM_DATASET_NAME
      See Also:
    • BBOX

      public static final String BBOX
      See Also:
    • TIME_DOMAIN

      public static final String TIME_DOMAIN
      See Also:
    • ELEVATION_DOMAIN

      public static final String ELEVATION_DOMAIN
      See Also:
    • CRS_DOMAIN

      public static final String CRS_DOMAIN
      See Also:
    • RESOLUTION_DOMAIN

      public static final String RESOLUTION_DOMAIN
      See Also:
    • RESOLUTION_X_DOMAIN

      public static final String RESOLUTION_X_DOMAIN
      See Also:
    • RESOLUTION_Y_DOMAIN

      public static final String RESOLUTION_Y_DOMAIN
      See Also:
    • ADDITIONAL_DOMAIN

      public static final String ADDITIONAL_DOMAIN
      See Also:
    • OBJECT_FACTORY

      public static ObjectFactory OBJECT_FACTORY
  • Constructor Details

    • Utils

      public Utils()
  • Method Details

    • isSupportedCRS

      public static boolean isSupportedCRS(GridCoverage2DReader reader, CoordinateReferenceSystem crs) throws FactoryException, IOException
      Check if the provided reader is a MultiCRS Reader and it can support the specified crs.
      Throws:
      FactoryException
      IOException
    • getAttribute

      public static Object getAttribute(SimpleFeature feature, String attribute)
    • resetSampleImageAllowlist

      protected static Pattern resetSampleImageAllowlist()
    • getMessageFromException

      public static String getMessageFromException(Exception exception)
    • parseEnvelope

      public static ReferencedEnvelope parseEnvelope(String bboxString)
      Parses a bbox in the form of MIX,MINY MAXX,MAXY
      Parameters:
      bboxString - the string to parse the bbox from
      Returns:
      a ReferencedEnvelope with the parse bbox or null
    • excludeFilters

      public static IOFileFilter excludeFilters(IOFileFilter inputFilter, IOFileFilter... filters)
    • checkFileReadable

      public static boolean checkFileReadable(File file)
      Checks that a File is a real file, exists and is readable.
      Parameters:
      file - the File instance to check. Must not be null.
      Returns:
      true in case the file is a real file, exists and is readable; false otherwise.
    • getFileInfo

      public static String getFileInfo(File file)
      Creates a human readable message that describe the provided File object in terms of its properties.

      Useful for creating meaningful log messages.

      Parameters:
      file - the File object to create a descriptive message for
      Returns:
      a String containing a descriptive message about the provided File.
    • checkDirectory

      public static String checkDirectory(String testingDirectory, boolean writable) throws IllegalArgumentException
      Throws:
      IllegalArgumentException
    • createDataStoreParamsFromPropertiesFile

      public static Map<String,Serializable> createDataStoreParamsFromPropertiesFile(URL datastoreProperties) throws IOException
      Throws:
      IOException
    • storeSampleImage

      public static void storeSampleImage(File sampleImageFile, SampleModel defaultSM, ColorModel defaultCM) throws IOException
      Store a sample image from which we can derive the default SM and CM
      Parameters:
      sampleImageFile - where we should store the image
      defaultSM - the SampleModel for the sample image.
      defaultCM - the ColorModel for the sample image.
      Throws:
      IOException - in case something bad occurs during writing.
    • loadSampleImage

      public static RenderedImage loadSampleImage(File sampleImageFile)
      Load a sample image from which we can take the sample model and color model to be used to fill holes in responses.

      Format of sample image is limited and may be customized using SAMPLE_IMAGE_ALLOWLIST_KEY system property org.geotools.gce.imagemosaic.sampleimage.allowlist.

      Parameters:
      sampleImageFile - the path to sample image.
      Returns:
      a sample image from which we can take the sample model and color model to be used to fill holes in responses.
    • createDataStoreParamsFromPropertiesFile

      public static Map<String,Serializable> createDataStoreParamsFromPropertiesFile(Properties properties, DataStoreFactorySpi spi) throws IOException
      Throws:
      IOException
    • filterDataStoreParams

      public static Map<String,Serializable> filterDataStoreParams(Properties properties, DataStoreFactorySpi spi) throws IOException
      Throws:
      IOException
    • getIndexerProperty

      public static String getIndexerProperty(String locationPath, String propertyName)
    • getHistogram

      public static Histogram getHistogram(String file)
      Setup a Histogram object by deserializing a file representing a serialized Histogram.
      Returns:
      the deserialized histogram.
    • getImageLayoutHint

      public static ImageLayout getImageLayoutHint(RenderingHints renderHints)
    • getTileCacheHint

      public static TileCache getTileCacheHint(RenderingHints renderHints)
    • getBorderExtenderHint

      public static BorderExtender getBorderExtenderHint(RenderingHints renderHints)
    • getTileSchedulerHint

      public static TileScheduler getTileSchedulerHint(RenderingHints renderHints)
    • getHintIfAvailable

      public static Object getHintIfAvailable(RenderingHints hints, RenderingHints.Key key)
    • setupJAIHints

      public static Hints setupJAIHints(RenderingHints inputHints)
    • createRange

      public static Range<? extends Number> createRange(Object firstValue, Object secondValue)
      Create a Range of numbers from a couple of values.
    • minimalIndexCheck

      public static boolean minimalIndexCheck(Object source)
      Simple minimal check which checks whether and indexer file exists
    • homogeneousCheck

      public static boolean homogeneousCheck(int numberOfLevels, double[][] resolutionLevels, double[][] compareLevels)
      Check whether 2 resolution levels sets are homogeneous (within a tolerance)
    • unmarshal

      public static Indexer unmarshal(File indexerFile) throws JAXBException
      Unmarshal the file and return and Indexer object.
      Throws:
      JAXBException
    • marshal

      public static void marshal(Indexer indexer, File indexerFile) throws JAXBException
      Marshals the Indexer object to the specified file
      Throws:
      JAXBException
    • checkColorModels

      public static boolean checkColorModels(ColorModel defaultCM, byte[][] defaultPalette, ColorModel actualCM)
      This method checks the ColorModel of the current image with the one of the first image in order to check if they are compatible or not in order to perform a mosaic operation.

      It is worth to point out that we also check if, in case we have two index color model image, we also try to suggest whether or not we should do a color expansion.

      Returns:
      a boolean asking to skip this feature.
    • isH2Store

      public static boolean isH2Store(DataStoreFactorySpi spi)
    • fixH2DatabaseLocation

      public static void fixH2DatabaseLocation(Map<String,Serializable> params, String parentLocation) throws MalformedURLException
      Throws:
      MalformedURLException
    • fixGeoPkgParameters

      public static void fixGeoPkgParameters(Map<String,Serializable> params, String parentLocation) throws MalformedURLException
      Throws:
      MalformedURLException
    • isOracleStore

      public static boolean isOracleStore(DataStoreFactorySpi spi)
      Checks if the provided factory spi builds a Oracle store
    • isPostgisStore

      public static boolean isPostgisStore(DataStoreFactorySpi spi)
      Checks if the provided factory spi builds a Postgis store
    • isSQLServerStore

      public static boolean isSQLServerStore(DataStoreFactorySpi spi)
      Checks if the provided factory spi builds a SQLServer store
    • isGeoPkgStore

      public static boolean isGeoPkgStore(DataStoreFactorySpi spi)
    • mergePamDatasets

      public static PAMDataset mergePamDatasets(PAMDataset[] pamDatasets)
      Merge statistics across datasets.
    • getCleanupFilter

      public static IOFileFilter getCleanupFilter()
    • fixH2MVCCParam

      public static void fixH2MVCCParam(Map<String,Serializable> params)
    • fixPostgisDBCreationParams

      public static void fixPostgisDBCreationParams(Map<String,Serializable> datastoreParams)
    • getReaderSpiFromStream

      public static ImageReaderSpi getReaderSpiFromStream(ImageReaderSpi suggestedSPI, ImageInputStream inStream) throws IOException
      Throws:
      IOException
    • getInputStreamSPIFromURL

      public static ImageInputStreamSpi getInputStreamSPIFromURL(URL granuleUrl) throws IOException
      Throws:
      IOException
    • extractPalette

      public static byte[][] extractPalette(IndexColorModel indexColorModel)
      Extract the palette from an IndexColorModel.
    • isValidMosaicSchema

      public static boolean isValidMosaicSchema(SimpleFeatureType schema, String locationAttributeName)
      Returns true if the type is usable as a mosaic index
    • reprojectEnvelope

      public static ReferencedEnvelope reprojectEnvelope(ReferencedEnvelope sourceEnvelope, CoordinateReferenceSystem targetCRS, ReferencedEnvelope targetReferenceEnvelope) throws FactoryException, TransformException
      Throws:
      FactoryException
      TransformException
    • reprojectEnvelopeToGeometry

      public static Geometry reprojectEnvelopeToGeometry(ReferencedEnvelope sourceEnvelope, CoordinateReferenceSystem targetCRS, ReferencedEnvelope targetReferenceEnvelope) throws FactoryException, TransformException
      Reprojects an envelope using the ProjectionHandler machinery. The output can be a multipolygon in case of wrapping, which might or might not be what you want, act accordingly
      Throws:
      FactoryException
      TransformException
    • getFile

      public static File getFile(String strValue, File rootFolder) throws IOException
      Returns the File associated to the rootFolder if not absolute
      Throws:
      IOException
    • decimate

      public static Geometry decimate(Geometry geometry)
      Decimate a geometry (reducing the number of vertices) for incoming buffering
    • roiIntersect

      public static ROI roiIntersect(ROI roi, ROIGeometry roiGeometry, RenderingHints hints)
      Intersects a ROI with a ROI geometry, with fallback on GeometrySnapper if a TopologyException occurs