assertNotNull(cv); assertNotNull(cv.getGrid()); assertNotNull(cv.getGrid().getGridRange()); assertNotNull(cv.getCRS()); assertNotNull(cv.getGrid().getGridToCRS()); assertEquals(cv.getGrid().getGridRange().getLow(0), 0);
MathTransform crsToGrid = meta.getGrid().getGridToCRS().inverse(); GeneralEnvelope requestedGrid = CRS.transform(crsToGrid, requestedEnvelope); double[] spans = new double[requestedGrid.getDimension()];
range = coverage.getGridGeometry().getGridRange(); if (range==null || range.getDimension()<=dimension) { return null;
.getGridGeometry().getGridToCoordinateSystem(); boolean lonFirst = (XAffineTransform.getSwapXY(gridToWorld) != -1); final int geometryWidth = gc.getGridGeometry().getGridRange() .getLength(0); final int geometryHeight = gc.getGridGeometry().getGridRange() .getLength(1);
.getCoordinateReferenceSystem()); final AffineTransform gridToWorld = (AffineTransform) gc .getGridGeometry().getGridToCoordinateSystem(); boolean lonFirst = (XAffineTransform.getSwapXY(gridToWorld) != -1);
final AffineTransform gridToWorld = (AffineTransform) gc.getGridGeometry().getGridToCRS(); final boolean lonFirst = (XAffineTransform.getSwapXY(gridToWorld) != -1);
final GridEnvelope gridEnvelope = gridCoverage.getGridGeometry().getGridRange();
final CoordinateSystem cs = crs.getCoordinateSystem(); final AffineTransform gridToWorld = (AffineTransform) gc .getGridGeometry().getGridToCoordinateSystem(); final boolean lonFirst = (XAffineTransform.getSwapXY(gridToWorld) != -1);
final int dimensions = geometry.getGridRange().getDimension(); String lower = ""; String upper = ""; for (int i = 0; i < dimensions; i++) { lower = lower + geometry.getGridRange().getLow(i) + " "; upper = upper + geometry.getGridRange().getHigh(i) + " "; writer.write("<axisName>" + cs.getAxis(i).getName().getCode() + "</axisName>\n"); if (geometry.getGridToCRS() instanceof AffineTransform) { AffineTransform aTX = (AffineTransform) geometry.getGridToCRS(); writer.write("<geoTransform>"); writer.write("<scaleX>" + aTX.getScaleX() + "</scaleX>\n");
public NetCDFCRSWriter(NetcdfFileWriter writer, GridCoverage2D sampleGranule) { this.writer = writer; this.sampleGranule = sampleGranule; GridGeometry gridGeometry = sampleGranule.getGridGeometry(); transform = gridGeometry.getGridToCRS(); crs = sampleGranule.getCoordinateReferenceSystem(); netcdfCrsType = NetCDFCoordinateReferenceSystemType.parseCRS(crs); }
@Test public void testRotated() throws Exception { final String layerId = getLayerId(MockData.ROTATED_CAD); // do the request Map<String, Object> raw = baseMap(); raw.put("identifier", layerId); raw.put("format", "image/geotiff"); raw.put( "BoundingBox", "7.7634301664746515,45.14713380418506,7.764350661575157,45.14763319238466,EPSG:4326"); GridCoverage[] coverages = executeGetCoverageKvp(raw); // System.out.println(coverages[0]); // check the envelope Envelope envelope = coverages[0].getEnvelope(); // System.out.println(envelope); CoordinateReferenceSystem targetCRS = CRS.decode("urn:x-ogc:def:crs:EPSG:3003"); assertEquals(targetCRS, envelope.getCoordinateReferenceSystem()); // check we did not get a massive raster out GridEnvelope range = coverages[0].getGridGeometry().getGridRange(); assertEquals(482, range.getSpan(0)); assertEquals(447, range.getSpan(1)); }
/** * Creates a new grid geometry with the same values than the given grid geometry. This is a copy * constructor useful when the instance must be a {@code GeneralGridGeometry}. * * @param other The other grid geometry to copy. * @since 2.5 */ public GeneralGridGeometry(final GridGeometry other) { if (other instanceof GeneralGridGeometry) { // Uses this path when possible in order to accept null values. final GeneralGridGeometry general = (GeneralGridGeometry) other; gridRange = general.gridRange; // Do not clone; we assume it is safe to share. gridToCRS = general.gridToCRS; cornerToCRS = general.cornerToCRS; envelope = general.envelope; } else { gridRange = other.getGridRange(); gridToCRS = other.getGridToCRS(); if (gridRange != null && gridToCRS != null) { envelope = new GeneralEnvelope(gridRange, PixelInCell.CELL_CENTER, gridToCRS, null); } else { envelope = null; } } }
public static DirectPosition worldToGridPos(GridCoverage2D srcCoverage, DirectPosition realPos) throws TransformException { GridGeometry gg2D = srcCoverage.getGridGeometry(); MathTransform gridToCRS = gg2D.getGridToCRS(); MathTransform crsToGrid = gridToCRS.inverse(); DirectPosition gridPos = new DirectPosition2D(); crsToGrid.transform(realPos, gridPos); return gridPos; }
GridEnvelope range = coverages[0].getGridGeometry().getGridRange(); assertEquals(360, range.getSpan(0)); assertEquals(499, range.getSpan(1));
gridToCRS = gridGeometry.getGridToCRS(); } else { gridToCRS = GridGeometry2D.wrap(gridGeometry).getGridToCRS2D(); if (reducedCRS == sourceCRS) { reduced = source.getEnvelope(); gridToCRS = gridGeometry.getGridToCRS(); } else { reduced = CoverageUtilities.getEnvelope2D(source); gridRange = gridGeometry.getGridRange(); gridGeometry = new GridGeometry2D(gridRange, target);
final AffineTransform gridToWorld = (AffineTransform) gc.getGridGeometry().getGridToCRS(); final boolean lonFirst = (XAffineTransform.getSwapXY(gridToWorld) != -1);
final GridEnvelope e = resampledCoverage.getGridGeometry().getGridRange(); boolean resize = false;
/** * Creates a new grid geometry with the same values than the given grid geometry. This * is a copy constructor useful when the instance must be a {@code GeneralGridGeometry}. * * @param other The other grid geometry to copy. * * @since 2.5 */ public GeneralGridGeometry(final GridGeometry other) { if (other instanceof GeneralGridGeometry) { // Uses this path when possible in order to accept null values. final GeneralGridGeometry general = (GeneralGridGeometry) other; gridRange = general.gridRange; // Do not clone; we assume it is safe to share. gridToCRS = general.gridToCRS; cornerToCRS = general.cornerToCRS; envelope = general.envelope; } else { gridRange = other.getGridRange(); gridToCRS = other.getGridToCRS(); if (gridRange!=null && gridToCRS!=null) { envelope = new GeneralEnvelope(gridRange, PixelInCell.CELL_CENTER, gridToCRS, null); } else { envelope = null; } } }
GridEnvelope2D guessGridLimits() { try { String coverageName = coverage.getModelObject(); Catalog catalog = GeoServerApplication.get().getCatalog(); CoverageInfo ci = catalog.getCoverageByName(coverageName); ReferencedEnvelope boundsNative = getCoverage.bounds.transform(ci.getCRS(), true); MathTransform w2g = ci.getGrid().getGridToCRS().inverse(); Envelope ge = JTS.transform(boundsNative, w2g); GridEnvelope2D grid = new GridEnvelope2D(new Rectangle(0, 0, (int) ge.getWidth(), (int) ge.getHeight())); return grid; } catch(Exception e) { LOGGER.log(Level.SEVERE, "Failed to guess native grid", e); error("Failed to guess native grid: " + e.getMessage()); return null; } }
@Test public void testTinyRasterBboxContained() throws Exception { CoverageInfo coverageInfo = addRasterToMap(MockData.TASMANIA_DEM); Envelope env = coverageInfo.boundingBox(); Coordinate center = env.centre(); GridEnvelope range = coverageInfo.getGrid().getGridRange(); double offset = (env.getMaxX() - env.getMinX()) / range.getSpan(0) / 10.0; Rectangle imageBounds = produceMap( center.x + offset, center.x + 2 * offset, center.y + offset, center.y + 2 * offset); assertNotBlank("testTinyRasterBboxContained", this.image); assertEquals("Mosaic", this.op.getOperationName()); Rectangle roiBounds = getRoiBounds(); assertTrue( "Expected " + imageBounds + " to contain " + roiBounds, imageBounds.contains(roiBounds)); }