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}