Loading...
Searching...
No Matches
osmium::geom Namespace Reference

Everything related to geometry handling. More...

## Namespaces

namespace | haversine
| Functions to calculate arc distance on Earth using the haversine formula.

## Classes

struct | Coordinates
class | GeometryFactory
class | IdentityProjection
class | MercatorProjection
struct | Tile

## Typedefs

template<typename TProjection = IdentityProjection>
using | GeoJSONFactory = GeometryFactory< osmium::geom::detail::GeoJSONFactoryImpl, TProjection >
template<typename TProjection = IdentityProjection>
using | OGRFactory = GeometryFactory< osmium::geom::detail::OGRFactoryImpl, TProjection >
template<typename TWriter , typename TProjection = IdentityProjection>
using | RapidGeoJSONFactory = GeometryFactory< detail::RapidGeoJSONFactoryImpl< TWriter >, TProjection >
template<typename TProjection = IdentityProjection>
using | WKBFactory = GeometryFactory< osmium::geom::detail::WKBFactoryImpl, TProjection >
template<typename TProjection = IdentityProjection>
using | WKTFactory = GeometryFactory< osmium::geom::detail::WKTFactoryImpl, TProjection >

## Enumerations

enum class | use_nodes : bool { unique = true , all = false }
enum class | direction : bool { backward = true , forward = false }
enum class | wkb_type : bool { wkb = false , ewkb = true }
enum class | out_type : bool { binary = false , hex = true }
enum class | wkt_type : bool { wkt = false , ewkt = true }

## Functions

bool | operator== (const Coordinates &lhs, const Coordinates &rhs) noexcept
bool | operator!= (const Coordinates &lhs, const Coordinates &rhs) noexcept
template<typename TChar , typename TTraits >
std::basic_ostream< TChar, TTraits > & | operator<< (std::basic_ostream< TChar, TTraits > &out, const Coordinates &c)
Coordinates | lonlat_to_mercator (const Coordinates &c)
Coordinates | mercator_to_lonlat (const Coordinates &c)
bool | contains (const osmium::Box &lhs, const osmium::Box &rhs) noexcept
bool | overlaps (const osmium::Box &lhs, const osmium::Box &rhs) noexcept
constexpr uint32_t | num_tiles_in_zoom (uint32_t zoom) noexcept
constexpr double | tile_extent_in_zoom (uint32_t zoom) noexcept
constexpr uint32_t | mercx_to_tilex (uint32_t zoom, double x) noexcept
constexpr uint32_t | mercy_to_tiley (uint32_t zoom, double y) noexcept
bool | operator== (const Tile &lhs, const Tile &rhs) noexcept
| Tiles are equal if all their attributes are equal.
bool | operator!= (const Tile &lhs, const Tile &rhs) noexcept
bool | operator< (const Tile &lhs, const Tile &rhs) noexcept
constexpr double | deg_to_rad (double degree) noexcept
| Convert angle from degrees to radians.
constexpr double | rad_to_deg (double radians) noexcept
| Convert angle from radians to degrees.

## Variables

constexpr double | MERCATOR_MAX_LAT = 85.0511288
constexpr double | PI = 3.14159265358979323846

## Detailed Description

Everything related to geometry handling.

## Typedef Documentation

## GeoJSONFactory

template<typename TProjection = IdentityProjection>

using osmium::geom::GeoJSONFactory = typedef GeometryFactory<osmium::geom::detail::GeoJSONFactoryImpl, TProjection>

## OGRFactory

template<typename TProjection = IdentityProjection>

using osmium::geom::OGRFactory = typedef GeometryFactory<osmium::geom::detail::OGRFactoryImpl, TProjection>

## RapidGeoJSONFactory

template<typename TWriter , typename TProjection = IdentityProjection>

using osmium::geom::RapidGeoJSONFactory = typedef GeometryFactory<detail::RapidGeoJSONFactoryImpl<TWriter>, TProjection>

## WKBFactory

template<typename TProjection = IdentityProjection>

using osmium::geom::WKBFactory = typedef GeometryFactory<osmium::geom::detail::WKBFactoryImpl, TProjection>

## WKTFactory

template<typename TProjection = IdentityProjection>

using osmium::geom::WKTFactory = typedef GeometryFactory<osmium::geom::detail::WKTFactoryImpl, TProjection>

## Enumeration Type Documentation

## direction

enum class osmium::geom::direction : bool

strong

Which direction the linestring created from a way should have.

Enumerator
backward | Linestring has reverse direction.
forward | Linestring has same direction as way.

## out_type

enum class osmium::geom::out_type : bool

strong

Enumerator
binary |
hex |

## use_nodes

enum class osmium::geom::use_nodes : bool

strong

Which nodes of a way to use for a linestring.

Enumerator
unique | Remove consecutive nodes with same location.
all | Use all nodes.

## wkb_type

enum class osmium::geom::wkb_type : bool

strong

Enumerator
wkb |
ewkb |

## wkt_type

enum class osmium::geom::wkt_type : bool

strong

Enumerator
wkt |
ewkt |

## Function Documentation

## contains()

bool osmium::geom::contains | ( | const osmium::Box & | lhs,
|  | const osmium::Box & | rhs
| ) |  |

inline noexcept

Check whether one geometry contains another.

## deg_to_rad()

constexpr double osmium::geom::deg_to_rad | ( | double | degree | ) |

constexpr noexcept

Convert angle from degrees to radians.

## lonlat_to_mercator()

Coordinates osmium::geom::lonlat_to_mercator | ( | const Coordinates & | c | ) |

inline

Convert the coordinates from WGS84 lon/lat to web mercator.

Precondition
  c.valid()
  Coordinates must be in valid range, longitude between -180 and +180 degree, latitude between -MERCATOR_MAX_LAT and MERCATOR_MAX_LAT.

## mercator_to_lonlat()

Coordinates osmium::geom::mercator_to_lonlat | ( | const Coordinates & | c | ) |

inline

Convert the coordinates from web mercator to WGS84 lon/lat.

Precondition
  c.valid()
  Coordinates must be in valid range (longitude and latidude between -/+20037508.34).

## mercx_to_tilex()

constexpr uint32_t osmium::geom::mercx_to_tilex | ( | uint32_t | zoom,
|  | double | x
| ) |  |

constexpr noexcept

Get the tile x number from an x coordinate in web mercator projection in the given zoom level. Tiles are numbered from left to right.

## mercy_to_tiley()

constexpr uint32_t osmium::geom::mercy_to_tiley | ( | uint32_t | zoom,
|  | double | y
| ) |  |

constexpr noexcept

Get the tile y number from an y coordinate in web mercator projection in the given zoom level. Tiles are numbered from top to bottom.

## num_tiles_in_zoom()

constexpr uint32_t osmium::geom::num_tiles_in_zoom | ( | uint32_t | zoom | ) |

constexpr noexcept

Returns the number of tiles (in each direction) for the given zoom level.

## operator!=() [1/2]

bool osmium::geom::operator!= | ( | const Coordinates & | lhs,
|  | const Coordinates & | rhs
| ) |  |

inline noexcept

## operator!=() [2/2]

bool osmium::geom::operator!= | ( | const Tile & | lhs,
|  | const Tile & | rhs
| ) |  |

inline noexcept

## operator<()

bool osmium::geom::operator< | ( | const Tile & | lhs,
|  | const Tile & | rhs
| ) |  |

inline noexcept

This defines an arbitrary order on tiles for use in std::map etc.

## operator<<()

template<typename TChar , typename TTraits >

std::basic_ostream< TChar, TTraits > & osmium::geom::operator<< | ( | std::basic_ostream< TChar, TTraits > & | out,
|  | const Coordinates & | c
| ) |  |

inline

## operator==() [1/2]

bool osmium::geom::operator== | ( | const Coordinates & | lhs,
|  | const Coordinates & | rhs
| ) |  |

inline noexcept

Check whether two Coordinates are equal. Invalid coordinates are equal to other invalid coordinates but not equal to any valid coordinates.

Because this is comparing floating point values, it might not give the right result if the coordinates have been the result of some calculation that introduced rounding errors.

## operator==() [2/2]

bool osmium::geom::operator== | ( | const Tile & | lhs,
|  | const Tile & | rhs
| ) |  |

inline noexcept

Tiles are equal if all their attributes are equal.

## overlaps()

bool osmium::geom::overlaps | ( | const osmium::Box & | lhs,
|  | const osmium::Box & | rhs
| ) |  |

inline noexcept

Check whether one geometry overlaps another.

## rad_to_deg()

constexpr double osmium::geom::rad_to_deg | ( | double | radians | ) |

constexpr noexcept

Convert angle from radians to degrees.

## tile_extent_in_zoom()

constexpr double osmium::geom::tile_extent_in_zoom | ( | uint32_t | zoom | ) |

constexpr noexcept

Returns the width or height of a tile in web mercator coordinates for the given zoom level.

## Variable Documentation

## MERCATOR_MAX_LAT

constexpr double osmium::geom::MERCATOR_MAX_LAT = 85.0511288

constexpr

The maximum latitude that can be projected with the Web Mercator (EPSG:3857) projection.

## PI

constexpr double osmium::geom::PI = 3.14159265358979323846

constexpr