public EllipsoidalCoordinateSystem2D(EllipsoidalAxis first, EllipsoidalAxis second) { super(first, second); checkAxes(); }
@Override public CoordinateSystem<? extends G2D> extend(CoordinateSystemAxis axis) { if (axis instanceof EllipsoidalHeightCSAXis) { return new EllipsoidalCoordinateSystem3D((EllipsoidalAxis) getAxis(0), (EllipsoidalAxis) getAxis(1), (EllipsoidalHeightCSAXis) axis); } if (axis instanceof MeasureStraightLineAxis) { return new EllipsoidalCoordinateSystem2DM((EllipsoidalAxis) getAxis(0), (EllipsoidalAxis) getAxis(1), (MeasureStraightLineAxis) axis); } if (axis instanceof VerticalStraightLineAxis) { return new EllipsoidalCoordinateSystem3D((EllipsoidalAxis) getAxis(0), (EllipsoidalAxis) getAxis(1), (VerticalStraightLineAxis) axis); } throw new UnsupportedOperationException(); }
private void checkAxes() { List<Integer> order = getAxisNormalOrder(); if (!order.containsAll(REQUIRED_AXIS_NORMAL_ORDER)) { throw new IllegalArgumentException("Require order 0 and 1 axes"); } }
/** * Creates a generic geographic coordinate reference system using the specified units of length for coordinates. * <p/> * A generic system is one without a precisely defined datum or ellipsoid. * * @param * @param unit the unit to use for the planar coordinates. * @return a {@code CoordinateReferenceSystem} */ public static GeographicCoordinateReferenceSystem mkGeographic(CrsId srid, AngularUnit unit) { return new Geographic2DCoordinateReferenceSystem(srid, "Generic 2D Geographic", new EllipsoidalCoordinateSystem2D(new GeodeticLatitudeCSAxis("Lat", unit), new GeodeticLongitudeCSAxis ("Lon", unit))); }
@Override public CoordinateSystem<? extends G2D> merge(OneDimensionCoordinateSystem<?> coordinateSystem) { CoordinateSystemAxis axis = coordinateSystem.getAxis(); return extend(axis); }
/** * Implementation to decode a Geographic CRS. * * @return The <code>GeographicCoordinateReferenceSystem</code> that is decoded from the WKT. */ private Geographic2DCoordinateReferenceSystem decodeGeographicCrs() { String crsName = decodeName(); matchesElementSeparator(); Datum datum = decodeDatum(); matchesElementSeparator(); PrimeMeridian primem = decodePrimem(); matchesElementSeparator(); Unit unit = decodeUnit(false); CoordinateSystemAxis[] twinAxes = decodeOptionalAxes(2, unit, Geographic2DCoordinateReferenceSystem.class); CrsId cr = decodeOptionalAuthority(srid); matchesCloseList(); Geographic2DCoordinateReferenceSystem system = new Geographic2DCoordinateReferenceSystem(cr, crsName, new EllipsoidalCoordinateSystem2D((EllipsoidalAxis) twinAxes[0], (EllipsoidalAxis) twinAxes[1])); system.setDatum(datum); system.setPrimeMeridian(primem); return system; }