@Override public ServiceInfo getInfo() { if (serviceInfo == null) { serviceInfo = new DefaultServiceInfo(); serviceInfo.setTitle(rasterInfo.getRasterTable()); serviceInfo.setDescription(rasterInfo.toString()); Set<String> keywords = new HashSet<String>(); keywords.add("ArcSDE"); serviceInfo.setKeywords(keywords); } return serviceInfo; }
public ArcSDEGridCoverage2DReaderJAI( final ArcSDERasterFormat parent, final RasterReaderFactory rasterReaderFactory, final RasterDatasetInfo rasterInfo, final Hints hints) throws IOException { // check it's a supported format { final int bitsPerSample = rasterInfo.getBand(0, 0).getCellType().getBitsPerSample(); if (rasterInfo.getNumBands() > 1 && (bitsPerSample == 1 || bitsPerSample == 4)) { throw new IllegalArgumentException( bitsPerSample + "-bit rasters with more than one band are not supported"); } } this.parent = parent; this.rasterReaderFactory = rasterReaderFactory; this.rasterInfo = rasterInfo; super.hints = hints; super.coverageFactory = CoverageFactoryFinder.getGridCoverageFactory(this.hints); super.crs = rasterInfo.getCoverageCrs(); super.originalEnvelope = rasterInfo.getOriginalEnvelope(PixelInCell.CELL_CENTER); GridEnvelope gridRange = rasterInfo.getOriginalGridRange(); // super.originalGridRange = new GeneralGridRange(gridRange.toRectangle()); super.originalGridRange = gridRange; super.coverageName = rasterInfo.getRasterTable(); final int numLevels = rasterInfo.getNumPyramidLevels(0); // level 0 is not an overview, but the raster itself super.numOverviews = numLevels - 1; // /// // // setting the higher resolution avalaible for this coverage // // /// highestRes = super.getResolution( originalEnvelope, new Rectangle( originalGridRange.getLow(0), originalGridRange.getLow(1), originalGridRange.getSpan(0), originalGridRange.getSpan(1)), crs); // // // // get information for the successive images // // // // REVISIT may the different rasters in the raster dataset have different pyramid levels? I // guess so if (numOverviews > 0) { overViewResolutions = new double[numOverviews][2]; for (int pyramidLevel = 1; pyramidLevel <= numOverviews; pyramidLevel++) { GridEnvelope levelGridRange = rasterInfo.getGridRange(0, pyramidLevel); GeneralEnvelope levelEnvelope = rasterInfo.getGridEnvelope(0, pyramidLevel); Rectangle2D levelGridRangeRect = new Rectangle2D.Double( levelGridRange.getLow(0), levelGridRange.getLow(1), levelGridRange.getSpan(0), levelGridRange.getSpan(1)); overViewResolutions[pyramidLevel - 1] = super.getResolution(levelEnvelope, levelGridRangeRect, crs); } } else { overViewResolutions = null; } }