Conversions for the Global Area Reference System (GARS)
More...
#include <GARS.hpp>
|
enum | {
lonorig_ = -180,
latorig_ = -90,
baselon_ = 10,
baselat_ = 24,
lonlen_ = 3,
latlen_ = 2,
baselen_ = lonlen_ + latlen_,
mult1_ = 2,
mult2_ = 2,
mult3_ = 3,
m_ = mult1_ * mult2_ * mult3_,
maxprec_ = 2,
maxlen_ = baselen_ + maxprec_
} |
|
typedef Math::real | real |
|
|
static const char *const | digits_ = "0123456789" |
|
static const char *const | letters_ = "ABCDEFGHJKLMNPQRSTUVWXYZ" |
|
Conversions for the Global Area Reference System (GARS)
The Global Area Reference System is described in
It provides a compact string representation of a geographic area (expressed as latitude and longitude). The classes Georef and Geohash implement similar compact representations.
Example of use:
#include <iostream>
#include <iomanip>
#include <exception>
#include <string>
try {
{
double lat = 57.64911,
lon = 10.40744;
string gars;
for (int prec = 0; prec <= 2; ++prec) {
cout << prec << " " << gars << "\n";
}
}
{
string gars = "381NH45";
cout << fixed;
int prec;
cout << prec <<
" " <<
lat <<
" " <<
lon <<
"\n";
}
}
}
catch (
const exception&
e) {
cerr <<
"Caught exception: " <<
e.what() <<
"\n";
return 1;
}
}
Definition at line 38 of file GARS.hpp.
◆ real
◆ anonymous enum
Enumerator |
---|
lonorig_ | |
latorig_ | |
baselon_ | |
baselat_ | |
lonlen_ | |
latlen_ | |
baselen_ | |
mult1_ | |
mult2_ | |
mult3_ | |
m_ | |
maxprec_ | |
maxlen_ | |
Definition at line 43 of file GARS.hpp.
◆ GARS()
GeographicLib::GARS::GARS |
( |
| ) |
|
|
private |
◆ Forward()
void GeographicLib::GARS::Forward |
( |
real |
lat, |
|
|
real |
lon, |
|
|
int |
prec, |
|
|
std::string & |
gars |
|
) |
| |
|
static |
Convert from geographic coordinates to GARS.
- Parameters
-
[in] | lat | latitude of point (degrees). |
[in] | lon | longitude of point (degrees). |
[in] | prec | the precision of the resulting GARS. |
[out] | gars | the GARS string. |
- Exceptions
-
GeographicErr | if lat is not in [−90°, 90°]. |
std::bad_alloc | if memory for gars can't be allocated. |
prec specifies the precision of gars as follows:
- prec = 0 (min), 30' precision, e.g., 006AG;
- prec = 1, 15' precision, e.g., 006AG3;
- prec = 2 (max), 5' precision, e.g., 006AG39.
If lat or lon is NaN, then gars is set to "INVALID".
Definition at line 20 of file src/GARS.cpp.
◆ Precision()
static int GeographicLib::GARS::Precision |
( |
real |
res | ) |
|
|
inlinestatic |
The GARS precision required to meet a given geographic resolution.
- Parameters
-
[in] | res | the minimum of resolution in latitude and longitude (degrees). |
- Returns
- GARS precision.
The returned length is in the range [0, 2].
Definition at line 127 of file GARS.hpp.
◆ Resolution()
The angular resolution of a GARS.
- Parameters
-
[in] | prec | the precision of the GARS. |
- Returns
- the latitude-longitude resolution (degrees).
Internally, prec is first put in the range [0, 2].
Definition at line 113 of file GARS.hpp.
◆ Reverse()
void GeographicLib::GARS::Reverse |
( |
const std::string & |
gars, |
|
|
real & |
lat, |
|
|
real & |
lon, |
|
|
int & |
prec, |
|
|
bool |
centerp = true |
|
) |
| |
|
static |
Convert from GARS to geographic coordinates.
- Parameters
-
[in] | gars | the GARS. |
[out] | lat | latitude of point (degrees). |
[out] | lon | longitude of point (degrees). |
[out] | prec | the precision of gars. |
[in] | centerp | if true (the default) return the center of the gars, otherwise return the south-west corner. |
- Exceptions
-
The case of the letters in gars is ignored. prec is in the range [0, 2] and gives the precision of gars as follows:
- prec = 0 (min), 30' precision, e.g., 006AG;
- prec = 1, 15' precision, e.g., 006AG3;
- prec = 2 (max), 5' precision, e.g., 006AG39.
If the first 3 characters of gars are "INV", then lat and lon are set to NaN and prec is unchanged.
Definition at line 57 of file src/GARS.cpp.
◆ digits_
const char *const GeographicLib::GARS::digits_ = "0123456789" |
|
staticprivate |
◆ letters_
const char *const GeographicLib::GARS::letters_ = "ABCDEFGHJKLMNPQRSTUVWXYZ" |
|
staticprivate |
The documentation for this class was generated from the following files:
Array< double, 1, 3 > e(1./3., 0.5, 2.)
int main(int argc, char **argv)