1 #ifndef OSMIUM_GEOM_MERCATOR_PROJECTION_HPP
2 #define OSMIUM_GEOM_MERCATOR_PROJECTION_HPP
49 constexpr
double earth_radius_for_epsg3857 = 6378137.0;
51 constexpr
inline double lon_to_x(
double lon) {
52 return earth_radius_for_epsg3857 *
deg_to_rad(lon);
55 inline double lat_to_y(
double lat) {
59 constexpr
inline double x_to_lon(
double x) {
60 return rad_to_deg(x) / earth_radius_for_epsg3857;
63 inline double y_to_lat(
double y) {
76 return Coordinates(detail::lon_to_x(c.
x), detail::lat_to_y(c.
y));
80 return Coordinates(detail::x_to_lon(c.
x), detail::y_to_lat(c.
y));
92 return Coordinates {detail::lon_to_x(location.
lon()), detail::lat_to_y(location.
lat())};
95 int epsg() const noexcept {
100 return "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs";
109 #endif // OSMIUM_GEOM_MERCATOR_PROJECTION_HPP
Coordinates operator()(osmium::Location location) const
Definition: mercator_projection.hpp:91
double y
Definition: coordinates.hpp:50
Coordinates mercator_to_lonlat(const Coordinates &c)
Definition: mercator_projection.hpp:79
std::string proj_string() const
Definition: mercator_projection.hpp:99
double lat() const
Definition: location.hpp:205
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
constexpr double deg_to_rad(double degree) noexcept
Convert angle from degrees to radians.
Definition: util.hpp:62
Definition: coordinates.hpp:47
Coordinates lonlat_to_mercator(const Coordinates &c)
Definition: mercator_projection.hpp:75
constexpr double MERCATOR_MAX_LAT
Definition: mercator_projection.hpp:73
Definition: location.hpp:79
Definition: mercator_projection.hpp:87
double lon() const
Definition: location.hpp:186
double x
Definition: coordinates.hpp:49
int epsg() const noexcept
Definition: mercator_projection.hpp:95
constexpr double PI
Definition: util.hpp:59
constexpr double rad_to_deg(double radians) noexcept
Convert angle from radians to degrees.
Definition: util.hpp:67