def transform_to(target_datum)
      return self if datum == target_datum
      if helmert = Osgb::Helmert[:"#{self.datum}_to_#{target_datum}"]
        cartesian_coordinates = Osgb::Ellipsoid[self.datum].polar_to_cartesian(@lat.to_radians,@lng.to_radians)
        transformed = helmert.transform(*cartesian_coordinates)
        phi, lambda = Osgb::Ellipsoid[target_datum].cartesian_to_polar(*transformed)
        self.class.new(phi.to_degrees, lambda.to_degrees, target_datum, precision)
      else
        raise Osgb::TransformationError, "Missing helmert transformation for #{self.datum} to #{target_datum}"
      end
    end
def transform_to(target_datum)
      return self if datum == target_datum
      if helmert = Osgb::Helmert[:"#{self.datum}_to_#{target_datum}"]
        cartesian_coordinates = Osgb::Ellipsoid[self.datum].polar_to_cartesian(@lat.to_radians,@lng.to_radians)
        transformed = helmert.transform(*cartesian_coordinates)
        phi, lambda = Osgb::Ellipsoid[target_datum].cartesian_to_polar(*transformed)
        self.class.new(phi.to_degrees, lambda.to_degrees, target_datum, precision)
      else
        raise Osgb::TransformationError, "Missing helmert transformation for #{self.datum} to #{target_datum}"
      end
    end
Remaps the point onto another datum. If you're turning OS grid references into GPS coordinates you
 have to remap from OSGB36 to WGS84:

    point = "SD28687846".to_latlng.transform_to(:wgs84)

 or more concisely:

    point = "SD28687846".to_wgs84