/** * Helper method to test transform from a source to a target point. Coordinate points are (x,y) * or (long, lat) */ private static void doTransform( DirectPosition source, DirectPosition target, MathTransform transform, final double[] tolerance) throws TransformException { DirectPosition calculated; calculated = transform.transform(source, null); assertPositionEquals(target, calculated, tolerance); // The inverse target = source; source = calculated; calculated = transform.inverse().transform(source, null); assertPositionEquals(target, calculated, TOL_DEG); }
/** * Helper method to test transform from a source to a target point. Coordinate points are (x,y) * or (long, lat) */ private static void doTransform( DirectPosition source, DirectPosition target, MathTransform transform) throws TransformException { doTransform(source, target, transform, TOL_M); }
/** Some tests for the Equidistant Cylindrical projection. */ @Test public void testEquidistantCylindrical() throws FactoryException, TransformException { /////////////////////////////////////// // Equidistant_Cylindrical tests // /////////////////////////////////////// if (VERBOSE) { printParameters("Equidistant_Cylindrical"); } MathTransform transform; ParameterValueGroup params; // approx bristol UK params = mtFactory.getDefaultParameters("Equidistant_Cylindrical"); params.parameter("semi_major").setValue(6378137); params.parameter("semi_minor").setValue(6378137); params.parameter("central_meridian").setValue(0.000); params.parameter("standard_parallel_1").setValue(0.000); params.parameter("false_easting").setValue(0.0); params.parameter("false_northing").setValue(0.0); transform = mtFactory.createParameterizedTransform(params); if (VERBOSE) { // System.out.println(transform); } doTransform( new DirectPosition2D(-2.5, 51.37), new DirectPosition2D(-278298.73, 5718482.24), transform); }
/** Some tests for the Oblique Mercator Projection. */ @Test public void testObliqueMercator() throws FactoryException, TransformException { if (VERBOSE) { printParameters("Oblique Mercator"); } MathTransform transform; ParameterValueGroup params; params = mtFactory.getDefaultParameters("Oblique Mercator"); setObliqueMercatorParameter(params); transform = mtFactory.createParameterizedTransform(params); assertEquals(transform.getClass(), ObliqueMercator.class); assertEquals(transform, new ObliqueMercator(params)); ParameterDescriptorGroup descriptor = ((MapProjection) transform).getParameterDescriptors(); assertTrue(AbstractIdentifiedObject.nameMatches(descriptor, "Oblique Mercator")); assertFalse(AbstractIdentifiedObject.nameMatches(descriptor, "Hotine Oblique Mercator")); final MathTransform standard = transform; params = mtFactory.getDefaultParameters("Hotine Oblique Mercator"); setObliqueMercatorParameter(params); transform = mtFactory.createParameterizedTransform(params); assertEquals(transform.getClass(), HotineObliqueMercator.class); assertEquals(transform, new HotineObliqueMercator(params)); descriptor = ((MapProjection) transform).getParameterDescriptors(); assertFalse(AbstractIdentifiedObject.nameMatches(descriptor, "Oblique Mercator")); assertTrue(AbstractIdentifiedObject.nameMatches(descriptor, "Hotine Oblique Mercator")); assertFalse(transform.equals(standard)); }
/** Some tests for Krovak Projection. */ @Test public void testKrovak() throws FactoryException, TransformException { /////////////////////////////////////// // Krovak tests // /////////////////////////////////////// if (VERBOSE) { printParameters("Krovak"); } MathTransform transform; ParameterValueGroup params; params = mtFactory.getDefaultParameters("Krovak"); params.parameter("semi_major").setValue(6377397.155); params.parameter("semi_minor").setValue(6356078.963); params.parameter("latitude_of_center").setValue(49.5); params.parameter("longitude_of_center").setValue(42.5 - 17.66666666666667); params.parameter("azimuth").setValue(30.28813972222222); params.parameter("pseudo_standard_parallel_1").setValue(78.5); params.parameter("scale_factor").setValue(0.9999); transform = mtFactory.createParameterizedTransform(params); if (VERBOSE) { // System.out.println(transform); } doTransform( new DirectPosition2D(14.370530947, 50.071153856), new DirectPosition2D(-746742.6075, -1044389.4516), transform); }
printParameters("Polar_Stereographic"); doTransform( new DirectPosition2D(-121.33955, 39.1012523), // 121°20'22.38"W 39°6'4.508"N new DirectPosition2D(-2529570, -5341800), doTransform( new DirectPosition2D(10, -85), new DirectPosition2D(94393.99, 535334.89), transform); doTransform( new DirectPosition2D(-75, -80), new DirectPosition2D(-1052066.625, 281900.375), transform, tolerance); doTransform( new DirectPosition2D(-75, -70), new DirectPosition2D(-2119718.750, 567976.875), transform, tolerance); doTransform( new DirectPosition2D(-75, -60), new DirectPosition2D(-3219560.250, 862678.563),
printParameters("Mercator_1SP"); doTransform( new DirectPosition2D(120.0, -3.0), new DirectPosition2D(5009726.58, 569150.82), doTransform( new DirectPosition2D(-75.0, 35.0), new DirectPosition2D(1.8325957, 0.6528366), doTransform( new DirectPosition2D(-123.1, 49.2166666666), new DirectPosition2D(-13688089.02443480, 6304639.84599441), doTransform( new DirectPosition2D(4.999999999999999, 26.996561536844165), new DirectPosition2D(173029.94823812644, 2448819.342941506), printParameters("Mercator_2SP"); doTransform( new DirectPosition2D(53.0, 53.0), new DirectPosition2D(165704.29, 5171848.07), doTransform( new DirectPosition2D(-123.1, 49.2166666666), new DirectPosition2D(2663494.1734, 2152319.9230),
printParameters("Lambert_Conformal_Conic_1SP"); doTransform( new DirectPosition2D(-76.943683333, 17.932166666), new DirectPosition2D(255966.58, 142493.51), doTransform( new DirectPosition2D(151.283333333, -33.916666666), new DirectPosition2D(4232963.1816, 2287639.9866), printParameters("Lambert_Conformal_Conic_2SP"); doTransform( new DirectPosition2D(-96.0, 28.5), new DirectPosition2D(903277.7965, 77650.94219), doTransform( new DirectPosition2D(139.733333333, 35.6833333333), new DirectPosition2D(-6789805.6471, 7107623.6859), doTransform( new DirectPosition2D(18.45, -33.9166666666), new DirectPosition2D(1803288.3324, 1616657.7846), printParameters("Lambert_Conformal_Conic_2SP_Belgium"); doTransform( new DirectPosition2D(5.807370277, 50.6795725), new DirectPosition2D(251763.20, 153034.13),