001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.projection.datum;
003
004 import org.openstreetmap.josm.data.coor.LatLon;
005 import org.openstreetmap.josm.data.projection.Ellipsoid;
006
007 /**
008 * Datum based of NTV2 grid shift file.
009 */
010 public class NTV2Datum extends AbstractDatum {
011
012 protected NTV2GridShiftFileWrapper nadgrids;
013
014 public NTV2Datum(String name, String proj4Id, Ellipsoid ellps, NTV2GridShiftFileWrapper nadgrids) {
015 super(name, proj4Id, ellps);
016 this.nadgrids = nadgrids;
017 }
018
019 @Override
020 public LatLon toWGS84(LatLon ll) {
021 NTV2GridShift gs = new NTV2GridShift(ll);
022 nadgrids.getShiftFile().gridShiftForward(gs);
023 return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
024 }
025
026 @Override
027 public LatLon fromWGS84(LatLon ll) {
028 NTV2GridShift gs = new NTV2GridShift(ll);
029 nadgrids.getShiftFile().gridShiftReverse(gs);
030 return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
031 }
032 }