/** * Gets the UTM projection parameters for the transverse mercator transformation. * * @param zoneIndex the zone index in the range 0 to {@link #MAX_UTM_ZONE} - 1. * @param south whether or not the projection is defined for the southern hemispere * * @return the UTM projection parameters */ public static double[] getProjectionParams(int zoneIndex, boolean south) { return new double[]{Ellipsoid.WGS_84.getSemiMajor(), // semi_major Ellipsoid.WGS_84.getSemiMinor(), // semi_minor 0.0, // latitude_of_origin (not used) getCentralMeridian(zoneIndex), // central_meridian 0.9996, // scale_factor 500000.0, // false_easting south ? 10000000.0 : 0.0 // false_northing }; }
/** * Alters the underlying map transformation by changing the values of the transform parameters named * "semi_major" and "semi_minor" (if any) to the ones of the supplied ellipsoid. * * @param ellipsoid the ellipsoid */ public void alterMapTransform(Ellipsoid ellipsoid) { final MapTransform oldTransform = getMapTransform(); final Parameter[] parameters = oldTransform.getDescriptor().getParameters(); final double[] parameterValues = oldTransform.getParameterValues(); boolean altered = false; for (int i = 0; i < parameters.length; i++) { if ("semi_minor".equals(parameters[i].getName())) { parameterValues[i] = ellipsoid.getSemiMinor(); altered = true; } else if ("semi_major".equals(parameters[i].getName())) { parameterValues[i] = ellipsoid.getSemiMajor(); altered = true; } } if (altered) { final MapTransform newTransform = oldTransform.getDescriptor().createTransform(parameterValues); setMapTransform(newTransform); } }
public void testForwardTransform() { double[] params = new double[]{Ellipsoid.WGS_84.getSemiMajor(), Ellipsoid.WGS_84.getSemiMinor(), 0.0, 0.0, 1.0, 0.0, 0.0}; MapTransformDescriptor desc = new TransverseMercatorDescriptor(); MapTransform trans = desc.createTransform(params); GeoPos geoPt = new GeoPos(); Point2D ptRet = null; for (int n = 0; n < _srcCoords.length; n++) { geoPt.lat = (float) _srcCoords[n][1]; geoPt.lon = (float) _srcCoords[n][0]; ptRet = trans.forward(geoPt, ptRet); assertEquals(_targCoords[n][0], ptRet.getX(), _metricDelta); assertEquals(_targCoords[n][1], ptRet.getY(), _metricDelta); } }
public void testForwarAndInverseTransform() { // values for this test are from Frank Fell! double[] params = new double[]{Ellipsoid.WGS_84.getSemiMajor(), Ellipsoid.WGS_84.getSemiMinor(), 0.0, 9.0, 0.9996, 500000.0, 0.0}; MapTransform transform = MapTransformFactory.createTransform("Transverse_Mercator", params); float lat = 53.786666666f, lon = 11.87305555f; GeoPos geoPos = new GeoPos(lat, lon); Point2D mapPoint = transform.forward(geoPos, null); assertEquals(689265.13, mapPoint.getX(), _metricDelta); assertEquals(5963616.5, mapPoint.getY(), _metricDelta); GeoPos testPos = transform.inverse(mapPoint, null); assertEquals(lon, testPos.getLon(), _geodeticDelta); assertEquals(lat, testPos.getLat(), _geodeticDelta); }
ellipsoidAttrib, String.valueOf(ellipsoid.getSemiMajor())); printLine(indent, DimapProductConstants.TAG_ELLIPSOID_MIN_AXIS, ellipsoidAttrib, String.valueOf(ellipsoid.getSemiMinor())); println(ellipsoidParametersTags[1]); --indent;
public void testX() { final TransverseMercatorDescriptor tmd = new TransverseMercatorDescriptor(); final MapProjection mp = new MapProjection("bibo", tmd.createTransform(null), "meter"); assertEquals(Ellipsoid.WGS_84.getSemiMajor(), mp.getMapTransform().getParameterValues()[0], 1e-5); assertEquals(Ellipsoid.WGS_84.getSemiMinor(), mp.getMapTransform().getParameterValues()[1], 1e-5); mp.alterMapTransform(Ellipsoid.BESSEL); assertEquals(Ellipsoid.BESSEL.getSemiMajor(), mp.getMapTransform().getParameterValues()[0], 1e-5); assertEquals(Ellipsoid.BESSEL.getSemiMinor(), mp.getMapTransform().getParameterValues()[1], 1e-5); }
final String ellipsoidName = ellipsoid.getName(); final double semiMajor = ellipsoid.getSemiMajor(); final double semiMinor = ellipsoid.getSemiMinor(); final String typeID = descriptor.getTypeID(); final Parameter[] parameters = descriptor.getParameters();
assertEquals(expEllipsoid.getName(), actualEllipsoid.getName()); assertEquals(expEllipsoid.getSemiMajor(), actualEllipsoid.getSemiMajor(), 1.0e-10); assertEquals(expEllipsoid.getSemiMinor(), actualEllipsoid.getSemiMinor(), 1.0e-10);
assertEquals(_ellipsoidName, actualEllipsoid.getName()); assertEquals(_semiMajor, actualEllipsoid.getSemiMajor(), 1.0e-10); assertEquals(_semiMinor, actualEllipsoid.getSemiMinor(), 1.0e-10);
public void testCartographicMapTransformParameterSettings() { double[] params = new double[]{Ellipsoid.WGS_84.getSemiMajor(), Ellipsoid.WGS_84.getSemiMinor(), 1.0, 2.0, 3.0, 4.0, 5.0}; MapTransform mt = MapTransformFactory.createTransform("Transverse_Mercator", params); assertTrue(mt instanceof CartographicMapTransform); CartographicMapTransform amt = (CartographicMapTransform) mt; assertEquals(2.0, amt.getCentralMeridian(), 1e-10); assertEquals(4.0, amt.getFalseEasting(), 1e-10); assertEquals(5.0, amt.getFalseNorthing(), 1e-10); assertEquals(1.0 * Ellipsoid.WGS_84.getSemiMajor(), amt.getSemiMajor(), 1e-10); assertEquals(1.0 / Ellipsoid.WGS_84.getSemiMajor(), amt.getInverseSemiMajor(), 1e-10); } }
final double[] parameterValues = StereographicDescriptor.PARAMETER_DEFAULT_VALUES; parameterValues[0] = Ellipsoid.GRS_80.getSemiMajor(); parameterValues[1] = Ellipsoid.GRS_80.getSemiMinor(); final GeoPos psReferencePoint = leaderFile.getPSReferencePoint(); final GeoPos psProjectionOrigin = leaderFile.getPSProjectionOrigin();
assertEquals(_ellipsoidName, actualEllipsoid.getName()); assertEquals(_semiMajor, actualEllipsoid.getSemiMajor(), 1.0e-10); assertEquals(_semiMinor, actualEllipsoid.getSemiMinor(), 1.0e-10);
final double[] parameterValues = StereographicDescriptor.PARAMETER_DEFAULT_VALUES; parameterValues[0] = Ellipsoid.GRS_80.getSemiMajor(); parameterValues[1] = Ellipsoid.GRS_80.getSemiMinor(); final GeoPos psReferencePoint = leaderFile.getPSReferencePoint(); final GeoPos psProjectionOrigin = leaderFile.getPSProjectionOrigin();
" <Ellipsoid_Parameters>" + LS + " <ELLIPSOID_MAJ_AXIS unit=\"M\">" + ellipsoid.getSemiMajor() + "</ELLIPSOID_MAJ_AXIS>" + LS + " <ELLIPSOID_MIN_AXIS unit=\"M\">" + ellipsoid.getSemiMinor() + "</ELLIPSOID_MIN_AXIS>" + LS + " </Ellipsoid_Parameters>" + LS + " </Ellipsoid>" + LS +
" <Ellipsoid_Parameters>" + LS + " <ELLIPSOID_MAJ_AXIS unit=\"M\">" + _datum.getEllipsoid().getSemiMajor() + "</ELLIPSOID_MAJ_AXIS>" + LS + " <ELLIPSOID_MIN_AXIS unit=\"M\">" + _datum.getEllipsoid().getSemiMinor() + "</ELLIPSOID_MIN_AXIS>" + LS + " </Ellipsoid_Parameters>" + LS + " </Ellipsoid>" + LS +
private void assertEqual(final FXYGeoCoding expectedGeoCoding, final FXYGeoCoding actualGeoCoding) { assertEquals(expectedGeoCoding.getDatum().getName(), actualGeoCoding.getDatum().getName()); assertEquals(expectedGeoCoding.getDatum().getEllipsoid().getName(), actualGeoCoding.getDatum().getEllipsoid().getName()); assertEquals(expectedGeoCoding.getDatum().getEllipsoid().getSemiMajor(), actualGeoCoding.getDatum().getEllipsoid().getSemiMajor(), 1.0e-6); assertEquals(expectedGeoCoding.getDatum().getEllipsoid().getSemiMinor(), actualGeoCoding.getDatum().getEllipsoid().getSemiMinor(), 1.0e-6); assertEquals(expectedGeoCoding.getLatFunction().getOrder(), actualGeoCoding.getLatFunction().getOrder()); assertTrue(ArrayUtils.equalArrays(expectedGeoCoding.getLatFunction().getCoefficients(), actualGeoCoding.getLatFunction().getCoefficients(), 1.0e-6)); assertEquals(expectedGeoCoding.getLonFunction().getOrder(), actualGeoCoding.getLonFunction().getOrder()); assertTrue(ArrayUtils.equalArrays(expectedGeoCoding.getLonFunction().getCoefficients(), actualGeoCoding.getLonFunction().getCoefficients(), 1.0e-6)); assertEquals(expectedGeoCoding.getPixelXFunction().getOrder(), actualGeoCoding.getPixelXFunction().getOrder()); assertTrue(ArrayUtils.equalArrays(expectedGeoCoding.getPixelXFunction().getCoefficients(), actualGeoCoding.getPixelXFunction().getCoefficients(), 1.0e-6)); assertEquals(expectedGeoCoding.getPixelYFunction().getOrder(), actualGeoCoding.getPixelYFunction().getOrder()); assertTrue(ArrayUtils.equalArrays(expectedGeoCoding.getPixelYFunction().getCoefficients(), actualGeoCoding.getPixelYFunction().getCoefficients(), 1.0e-6)); assertEquals(expectedGeoCoding.getPixelOffsetX(), actualGeoCoding.getPixelOffsetX(), 1.0e-6); assertEquals(expectedGeoCoding.getPixelOffsetY(), actualGeoCoding.getPixelOffsetY(), 1.0e-6); assertEquals(expectedGeoCoding.getPixelSizeX(), actualGeoCoding.getPixelSizeX(), 1.0e-6); assertEquals(expectedGeoCoding.getPixelSizeY(), actualGeoCoding.getPixelSizeY(), 1.0e-6); }
" <Ellipsoid_Parameters>" + LS + " <ELLIPSOID_MAJ_AXIS unit=\"M\">" + datum.getEllipsoid().getSemiMajor() + "</ELLIPSOID_MAJ_AXIS>" + LS + " <ELLIPSOID_MIN_AXIS unit=\"M\">" + datum.getEllipsoid().getSemiMinor() + "</ELLIPSOID_MIN_AXIS>" + LS + " </Ellipsoid_Parameters>" + LS + " </Ellipsoid>" + LS +