DirectPosition upperCorner = envelope.getUpperCorner(); double[] eastNorth = upperCorner.getCoordinate();
@Test @Ignore public void testEnvelopeTransformClipping() throws Exception { final CoordinateReferenceSystem source = WGS84; final CoordinateReferenceSystem target; target = CRS.parseWKT( "GEOGCS[\"GCS_North_American_1983\"," + "DATUM[\"North_American_Datum_1983\", " + "SPHEROID[\"GRS_1980\", 6378137.0, 298.257222101]], " + "PRIMEM[\"Greenwich\", 0.0], " + "UNIT[\"degree\", 0.017453292519943295], " + "AXIS[\"Longitude\", EAST], " + "AXIS[\"Latitude\", NORTH]]"); // bounds from geotiff GeneralEnvelope geotiff = new GeneralEnvelope(source); geotiff.add(new DirectPosition2D(source, -179.9, -90.0)); geotiff.add(new DirectPosition2D(source, 180.0, 89.9)); Envelope transformed = CRS.transform(geotiff, target); assertNotNull(transformed); assertTrue("clipped y", transformed.getUpperCorner().getOrdinate(1) > 88.0); assertTrue("clipped y", transformed.getLowerCorner().getOrdinate(1) < -88.0); assertTrue("clipped x", transformed.getUpperCorner().getOrdinate(0) > 170.0); assertTrue("clipped x", transformed.getLowerCorner().getOrdinate(0) < -170.0); }
/** * Compares coordinates between the envelope and another envelope Test OK * * @param env * @return boolean */ public boolean equals(Envelope env) { return (this.getUpperCorner().equals(env.getUpperCorner()) && this .getLowerCorner().equals(env.getLowerCorner())); }
/** * Constructs a two-dimensional envelope defined by an other {@link Envelope}. * * @param envelope the envelope to copy (can not be {@code null}). * @throws MismatchedDimensionException if the given envelope is not two-dimensional. */ public Envelope2D(final Envelope envelope) throws MismatchedDimensionException { this(envelope.getCoordinateReferenceSystem(), envelope.getLowerCorner(), envelope.getUpperCorner()); }
/** * Constructs a two-dimensional envelope defined by an other {@link Envelope}. * * @param envelope the envelope to copy (can not be {@code null}). * @throws MismatchedDimensionException if the given envelope is not two-dimensional. */ public Envelope2D(final Envelope envelope) throws MismatchedDimensionException { this(envelope.getCoordinateReferenceSystem(), envelope.getLowerCorner(), envelope.getUpperCorner()); }
@Test public void testMBTilesMetaData() throws Exception { try (MBTilesFile file = new MBTilesFile(dbfile); ) { MBTilesMetadata metadata2 = file.loadMetaData(); assertEquals("osm2vectortiles", metadata2.getName()); assertEquals("Extract from http://osm2vectortiles.org", metadata2.getDescription()); assertEquals("2.0", metadata2.getVersion()); metadata2.getBounds().getLowerCorner().getCoordinate(); double delta = 0.0001; assertEquals(-180.0, metadata2.getBounds().getLowerCorner().getOrdinate(0), delta); assertEquals(180.0, metadata2.getBounds().getUpperCorner().getOrdinate(0), delta); assertEquals(-85.0511, metadata2.getBounds().getLowerCorner().getOrdinate(1), delta); assertEquals(85.0511, metadata2.getBounds().getUpperCorner().getOrdinate(1), delta); assertEquals( CRS.decode("EPSG:4326", true), metadata2.getBounds().getCoordinateReferenceSystem()); assertEquals(t_format.PBF, metadata2.getFormat()); assertEquals(t_type.BASE_LAYER, metadata2.getType()); assertEquals(0, metadata2.getMinZoom()); assertEquals(5, metadata2.getMaxZoom()); } }
/** * Constructor * * @param env */ public EnvelopeImpl(Envelope env) { pMin = (DirectPosition) env.getLowerCorner().clone(); pMax = (DirectPosition) env.getUpperCorner().clone(); }
/** * Returns {@code true} if at least one ordinate in the given envelope * is {@link Double#NaN}. This is used for assertions only. */ static boolean hasNaN(final Envelope envelope) { return hasNaN(envelope.getLowerCorner()) || hasNaN(envelope.getUpperCorner()); }
/** * Returns {@code true} if at least one ordinate in the given envelope * is {@link Double#NaN}. This is used for assertions only. */ static boolean hasNaN(final Envelope envelope) { return hasNaN(envelope.getLowerCorner()) || hasNaN(envelope.getUpperCorner()); }
public BoundingBoxType(final Envelope envelope) { if (envelope != null) { for (Double d : envelope.getLowerCorner().getCoordinate()) { this.lowerCorner.add(d); } for (Double d : envelope.getUpperCorner().getCoordinate()) { this.upperCorner.add(d); } final CoordinateReferenceSystem crss = envelope.getCoordinateReferenceSystem(); if (crss != null) { try { crs = org.apache.sis.referencing.IdentifiedObjects.lookupURN(crss,null); } catch (FactoryException ex) { LOGGER.log(Level.SEVERE, "Factory exception while creating OWS BoundingBox from opengis one", ex); } } this.dimensions = envelope.getDimension(); } }
public BoundingBoxType(final Envelope envelope) { if (envelope != null) { for (Double d : envelope.getLowerCorner().getCoordinate()) { this.lowerCorner.add(d); } for (Double d : envelope.getUpperCorner().getCoordinate()) { this.upperCorner.add(d); } final CoordinateReferenceSystem crss = envelope.getCoordinateReferenceSystem(); if (crss != null) { try { crs = org.apache.sis.referencing.IdentifiedObjects.lookupURN(crss,null); } catch (FactoryException ex) { LOGGER.log(Level.SEVERE, "Factory exception while creating OWS BoundingBox from opengis one", ex); } } this.dimensions = envelope.getDimension(); } }
/** * Constructs a new envelope with the same data than the specified envelope. * This is a copy constructor. * * @param envelope the envelope to copy. * @throws IllegalArgumentException if an ordinate value in the lower corner is greater than * the corresponding ordinate value in the upper corner. */ public SimpleEnvelope(final Envelope envelope) { crs = envelope.getCoordinateReferenceSystem(); ordinates = new double[envelope.getDimension() * 2]; setCorners(ordinates, envelope.getLowerCorner(), envelope.getUpperCorner()); }
/** * Unions an envelope with an another envelope * * @param env */ public void expand(Envelope env) { this.expand(env.getLowerCorner().getCoordinates()); this.expand(env.getUpperCorner().getCoordinates()); }
/** * Verifies whether another envelope intersects with this envelope * * @param other * @return TRUE, if envelopes intersect; FALSE, if they dont intersect */ public boolean intersects(Envelope other) { return AlgoRectangleND.intersects(this.pMin.getCoordinates(), this.pMax .getCoordinates(), other.getLowerCorner().getCoordinates(), other.getUpperCorner().getCoordinates()); }
DirectPosition top1 = envelope1.getUpperCorner(); DirectPosition bot1 = envelope1.getLowerCorner(); DirectPosition top2 = envelope2.getUpperCorner(); DirectPosition bot2 = envelope2.getLowerCorner(); CoordinateReferenceSystem crs = top1.getCoordinateReferenceSystem();
/** * Constructs a new envelope with the same data than the specified envelope. * * @param envelope the envelope to copy. */ public ArrayEnvelope(final Envelope envelope) { ensureNonNull("envelope", envelope); crs = envelope.getCoordinateReferenceSystem(); final int dimension = envelope.getDimension(); ordinates = new double[dimension * 2]; final DirectPosition lowerCorner = envelope.getLowerCorner(); final DirectPosition upperCorner = envelope.getUpperCorner(); for (int i=0; i<dimension; i++) { ordinates[i] = lowerCorner.getOrdinate(i); ordinates[i+dimension] = upperCorner.getOrdinate(i); } verifyRanges(crs, ordinates); }
/** * Constructs a new envelope with the same data than the specified envelope. * * @param envelope the envelope to copy. */ public ArrayEnvelope(final Envelope envelope) { ensureNonNull("envelope", envelope); crs = envelope.getCoordinateReferenceSystem(); final int dimension = envelope.getDimension(); ordinates = new double[dimension * 2]; final DirectPosition lowerCorner = envelope.getLowerCorner(); final DirectPosition upperCorner = envelope.getUpperCorner(); for (int i=0; i<dimension; i++) { ordinates[i] = lowerCorner.getOrdinate(i); ordinates[i+dimension] = upperCorner.getOrdinate(i); } verifyRanges(crs, ordinates); }
crs = env.getCoordinateReferenceSystem(); bbox.setLowerCorner(Arrays.asList(env.getLowerCorner().getCoordinate())); bbox.setUpperCorner(Arrays.asList(env.getUpperCorner().getCoordinate())); } else { throw new WPSException("Failed to convert from " + object
/** * Converts an {@code Envelope} to a "minx, miny, maxx, maxy" array. * @param envelope * @param unit * @return */ public static double[] getBBox(final Envelope envelope, final Unit unit) { final double[] returnable = new double[4]; final DirectPosition lowerCorner = envelope.getLowerCorner(); final DirectPosition upperCorner = envelope.getUpperCorner(); final CoordinateSystem cs = getCRS(envelope).getCoordinateSystem(); final int xIndex = getDirectedAxisIndex(cs, AxisDirection.EAST); final Unit xUnit = getDirectedAxisUnit(cs, AxisDirection.EAST); final int yIndex = getDirectedAxisIndex(cs, AxisDirection.NORTH); final Unit yUnit = getDirectedAxisUnit(cs, AxisDirection.NORTH); //edited to use javax.measure.unit.Convertor UnitConverter xConverter = xUnit.getConverterTo(unit); UnitConverter yConverter = yUnit.getConverterTo(unit); returnable[0] = xConverter.convert(lowerCorner.getOrdinate(xIndex)); returnable[1] = yConverter.convert(lowerCorner.getOrdinate(yIndex)); returnable[2] = xConverter.convert(upperCorner.getOrdinate(xIndex)); returnable[3] = yConverter.convert(upperCorner.getOrdinate(yIndex)); return returnable; }
/** * Converts an {@code Envelope} to a "minx, miny, maxx, maxy" array. * @param envelope * @param unit * @return */ public static double[] getBBox(final Envelope envelope, final Unit unit) { final double[] returnable = new double[4]; final DirectPosition lowerCorner = envelope.getLowerCorner(); final DirectPosition upperCorner = envelope.getUpperCorner(); final CoordinateSystem cs = getCRS(envelope).getCoordinateSystem(); final int xIndex = getDirectedAxisIndex(cs, AxisDirection.EAST); final Unit xUnit = getDirectedAxisUnit(cs, AxisDirection.EAST); final int yIndex = getDirectedAxisIndex(cs, AxisDirection.NORTH); final Unit yUnit = getDirectedAxisUnit(cs, AxisDirection.NORTH); //edited to use javax.units.Convertor Converter xConverter = xUnit.getConverterTo(unit); Converter yConverter = yUnit.getConverterTo(unit); returnable[0] = xConverter.convert(lowerCorner.getOrdinate(xIndex)); returnable[1] = yConverter.convert(lowerCorner.getOrdinate(yIndex)); returnable[2] = xConverter.convert(upperCorner.getOrdinate(xIndex)); returnable[3] = yConverter.convert(upperCorner.getOrdinate(yIndex)); return returnable; }