001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.projection.proj;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import org.openstreetmap.josm.data.Bounds;
007import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
008import org.openstreetmap.josm.tools.CheckParameterUtil;
009
010/**
011 * Simple Lat/Lon (pseudo-)projection.
012 */
013public class LonLat implements Proj {
014
015    private double a;
016
017    @Override
018    public String getName() {
019        return tr("Lat/lon (Geodetic)");
020    }
021
022    @Override
023    public String getProj4Id() {
024        return "lonlat";
025    }
026
027    @Override
028    public void initialize(ProjParameters params) throws ProjectionConfigurationException {
029        CheckParameterUtil.ensureParameterNotNull(params, "params");
030        CheckParameterUtil.ensureParameterNotNull(params.ellps, "params.ellps");
031        a = params.ellps.a;
032    }
033
034    @Override
035    public double[] project(double latRad, double lonRad) {
036        return new double[] {Math.toDegrees(lonRad) / a, Math.toDegrees(latRad) / a};
037    }
038
039    @Override
040    public double[] invproject(double east, double north) {
041        return new double[] {Math.toRadians(north * a), Math.toRadians(east * a)};
042    }
043
044    @Override
045    public Bounds getAlgorithmBounds() {
046        return new Bounds(-90, -180, 90, 180, false);
047    }
048
049    @Override
050    public boolean isGeographic() {
051        return true;
052    }
053}