private static void includeTransformedPoint( GeneralEnvelope envelope, MathTransform mt, GeneralDirectPosition workPoint, double x, double y) throws TransformException { workPoint.setOrdinate(0, x); workPoint.setOrdinate(1, y); mt.transform(workPoint, workPoint); envelope.add(workPoint); }
private static GeneralDirectPosition getProjectionCenterLonLat( CoordinateReferenceSystem crs, GeneralDirectPosition centerPt) { // set defaults centerPt.setOrdinate(0, 0); centerPt.setOrdinate(1, 0); MapProjection projection = getMapProjection(crs); if (projection == null) { return centerPt; } for (GeneralParameterValue gpv : projection.getParameterValues().values()) { // for safety if (!(gpv instanceof ParameterValue)) { continue; } ParameterValue pv = (ParameterValue) gpv; ReferenceIdentifier pvName = pv.getDescriptor().getName(); if (MapProjection.AbstractProvider.LATITUDE_OF_ORIGIN.getName().equals(pvName)) { centerPt.setOrdinate(1, pv.doubleValue()); } else if (MapProjection.AbstractProvider.LATITUDE_OF_CENTRE.getName().equals(pvName)) { centerPt.setOrdinate(1, pv.doubleValue()); } else if (MapProjection.AbstractProvider.LONGITUDE_OF_CENTRE .getName() .equals(pvName)) { centerPt.setOrdinate(0, pv.doubleValue()); } else if (MapProjection.AbstractProvider.CENTRAL_MERIDIAN.getName().equals(pvName)) { centerPt.setOrdinate(0, pv.doubleValue()); } } return centerPt; }
lowerCorner.setOrdinate(i, envelope.getLowerCorner().getOrdinate(i)); upperCorner.setOrdinate(i, envelope.getUpperCorner().getOrdinate(i));
lowerCorner.setOrdinate(i, envelope.getLowerCorner().getOrdinate(i)); upperCorner.setOrdinate(i, envelope.getUpperCorner().getOrdinate(i));
@Test public void toDirectPosition() { Coordinate c = new Coordinate(40, 40); DirectPosition wrapper = JTS.toDirectPosition(c, DefaultGeographicCRS.WGS84); GeneralDirectPosition expected = new GeneralDirectPosition(DefaultGeographicCRS.WGS84); expected.setOrdinate(0, 40); expected.setOrdinate(1, 40); assertEquals(expected, wrapper); }
if (targetPt != null) { for (int i = envelope.getDimension(); --i >= 0; ) { targetPt.setOrdinate(i, e.getMedian(i)); sourcePt.setOrdinate(i, envelope.getMinimum(i)); switch (n % 5) { case 0: sourcePt.setOrdinate(i, envelope.getMinimum(i)); n /= 5; break; case 1: sourcePt.setOrdinate(i, envelope.getMaximum(i)); continue loop; case 2: sourcePt.setOrdinate( i, (envelope.getMinimum(i) + envelope.getMedian(i)) / 2); continue loop; case 3: sourcePt.setOrdinate( i, (envelope.getMedian(i) + envelope.getMaximum(i)) / 2); continue loop; case 4: sourcePt.setOrdinate(i, envelope.getMedian(i)); continue loop; default:
/** * Transform the provided 3D direct position into 2D (Ellipsoidal height is ignored when * converting from {@link DefaultGeographicCRS#WGS84_3D} to {@link DefaultGeographicCRS#WGS84}). * * @param srcPosition Source 3D position * @param transformToWGS84_3D From source CRS to To WGS84_3D * @param transformFromWGS84 From WGS84 to target CRS * @return Position in target CRS as calculated by transform2 * @throws TransformException */ private static DirectPosition transformTo2D( GeneralDirectPosition srcPosition, MathTransform transformToWGS84_3D, MathTransform transformFromWGS84) throws TransformException { if (Double.isNaN(srcPosition.getOrdinate(2))) { srcPosition.setOrdinate( 2, 0.0); // lazy add 3rd ordinate if not provided to prevent failure } DirectPosition world3D = transformToWGS84_3D.transform(srcPosition, null); DirectPosition world2D = new GeneralDirectPosition(DefaultGeographicCRS.WGS84); world2D.setOrdinate(0, world3D.getOrdinate(0)); world2D.setOrdinate(1, world3D.getOrdinate(1)); DirectPosition targetPosition = transformFromWGS84.transform(world2D, null); return targetPosition; }
/** * Test case using example from EPSG Guidance Note number 7 part 2 (May 2005), section 2.4.3.1. */ @Test public void testTranslation() throws FactoryException, TransformException { final String classification = "Geocentric translations (geog2d domain)"; final MathTransformFactory factory = ReferencingFactoryFinder.getMathTransformFactory(null); final ParameterValueGroup param = factory.getDefaultParameters(classification); param.parameter("dx").setValue(84.87); param.parameter("dy").setValue(96.49); param.parameter("dz").setValue(116.95); final MathTransform test = factory.createParameterizedTransform(param); final GeneralDirectPosition position = new GeneralDirectPosition(3); position.setOrdinate(0, 3771793.97); position.setOrdinate(1, 140253.34); position.setOrdinate(2, 5124304.35); assertSame(position, test.transform(position, position)); assertEquals(3771878.84, position.getOrdinate(0), 1E-5); assertEquals(140349.83, position.getOrdinate(1), 1E-5); assertEquals(5124421.30, position.getOrdinate(2), 1E-5); }
/** * Test case using example from EPSG Guidance Note number 7 part 2 (May 2005), section * 2.4.3.2.1. */ @Test public void testSevenParam() throws FactoryException, TransformException { final String classification = "Position Vector transformation (geog2d domain)"; final MathTransformFactory factory = ReferencingFactoryFinder.getMathTransformFactory(null); final ParameterValueGroup param = factory.getDefaultParameters(classification); param.parameter("dx").setValue(0.000); param.parameter("dy").setValue(0.000); param.parameter("dz").setValue(4.5); param.parameter("ex").setValue(0.000); param.parameter("ey").setValue(0.000); param.parameter("ez").setValue(0.554); param.parameter("ppm").setValue(0.219); final MathTransform test = factory.createParameterizedTransform(param); final GeneralDirectPosition position = new GeneralDirectPosition(3); position.setOrdinate(0, 3657660.66); position.setOrdinate(1, 255768.55); position.setOrdinate(2, 5201382.11); assertSame(position, test.transform(position, position)); assertEquals(3657660.78, position.getOrdinate(0), 1E-2); assertEquals(255778.43, position.getOrdinate(1), 1E-5); assertEquals(5201387.75, position.getOrdinate(2), 1E-2); }
/** * Test case using example from EPSG Guidance Note number 7 part 2 (May 2005), section * 2.4.3.2.2. */ @Test public void testFrameRotation() throws FactoryException, TransformException { final String classification = "Coordinate Frame rotation (geog2d domain)"; final MathTransformFactory factory = ReferencingFactoryFinder.getMathTransformFactory(null); final ParameterValueGroup param = factory.getDefaultParameters(classification); param.parameter("dx").setValue(0.000); param.parameter("dy").setValue(0.000); param.parameter("dz").setValue(4.5); param.parameter("ex").setValue(0.000); param.parameter("ey").setValue(0.000); param.parameter("ez").setValue(-0.554); param.parameter("ppm").setValue(0.219); final MathTransform test = factory.createParameterizedTransform(param); final GeneralDirectPosition position = new GeneralDirectPosition(3); position.setOrdinate(0, 3657660.66); position.setOrdinate(1, 255768.55); position.setOrdinate(2, 5201382.11); assertSame(position, test.transform(position, position)); assertEquals(3657660.78, position.getOrdinate(0), 1E-2); assertEquals(255778.43, position.getOrdinate(1), 1E-5); assertEquals(5201387.75, position.getOrdinate(2), 1E-2); }
position.setOrdinate(0, 4.00); // Longitude position.setOrdinate(1, 55.00); // Latitude position.setOrdinate(2, -191.61); // Height
/** * Suggest a sample value for the given format, or {@code null} if this * method has no suggestion. * * @param format The format. * @return A sample value for the specified format, or {@code null} if none. */ private static Object suggestSampleValue(final Format format) { if (format instanceof NumberFormat) { return new Double(39.3); // Could be any random value. } if (format instanceof DateFormat) { return new Date(); // Could be any random value. } if (format instanceof AngleFormat) { return new Angle(39.3); // Could be any random value. } if (format instanceof CoordinateFormat) { final int dimension = ((CoordinateFormat) format) .getCoordinateReferenceSystem().getCoordinateSystem().getDimension(); final GeneralDirectPosition point = new GeneralDirectPosition(dimension); for (int i=0; i<dimension; i++) { point.setOrdinate(i, (i&1)==0 ? 39.3 : 27.9); // Could be any random value. } return point; } return null; }
|| targetProjection instanceof LambertAzimuthalEqualArea) { centerPt.setOrdinate(0, rollLongitude(centerPt.getOrdinate(0) - 90)); expandEnvelopeOnExtremePoints( centerPt, transformed, geoToTarget, geoEnvelope); centerPt.setOrdinate(0, rollLongitude(centerPt.getOrdinate(0) - 90)); expandEnvelopeOnExtremePoints( centerPt, transformed, geoToTarget, geoEnvelope); centerPt.setOrdinate(0, rollLongitude(centerPt.getOrdinate(0) - 90)); expandEnvelopeOnExtremePoints( centerPt, transformed, geoToTarget, geoEnvelope);