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}