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;
009import org.openstreetmap.josm.tools.Utils;
010
011/**
012 * Simple Lat/Lon (pseudo-)projection.
013 */
014public class LonLat implements Proj {
015
016    private double a;
017
018    @Override
019    public String getName() {
020        return tr("Lat/lon (Geodetic)");
021    }
022
023    @Override
024    public String getProj4Id() {
025        return "lonlat";
026    }
027
028    @Override
029    public void initialize(ProjParameters params) throws ProjectionConfigurationException {
030        CheckParameterUtil.ensureParameterNotNull(params, "params");
031        CheckParameterUtil.ensureParameterNotNull(params.ellps, "params.ellps");
032        a = params.ellps.a;
033    }
034
035    @Override
036    public double[] project(double latRad, double lonRad) {
037        return new double[] {Utils.toDegrees(lonRad) / a, Utils.toDegrees(latRad) / a};
038    }
039
040    @Override
041    public double[] invproject(double east, double north) {
042        return new double[] {Utils.toRadians(north * a), Utils.toRadians(east * a)};
043    }
044
045    @Override
046    public Bounds getAlgorithmBounds() {
047        return new Bounds(-90, -180, 90, 180, false);
048    }
049
050    @Override
051    public boolean isGeographic() {
052        return true;
053    }
054}