86 typedef enum GEO_DISTANCES {
102 Coords(
const std::string& in_coordinatesystem,
const std::string& in_parameters=
"");
103 Coords(
const std::string& in_coordinatesystem,
const std::string& in_parameters, std::string coord_spec);
104 Coords(
const double& in_lat_ref,
const double& in_long_ref);
112 void moveByXY(
const double& x_displacement,
const double& y_displacement);
113 void moveByBearing(
const double& i_bearing,
const double& i_distance);
122 double getLon()
const {
return longitude;}
128 void getProj(std::string& proj_type, std::string& proj_args)
const;
136 void setLatLon(
const double in_latitude,
const double in_longitude,
const double in_altitude,
const bool in_update=
true);
137 void setLatLon(
const std::string& in_coordinates,
const double in_altitude,
const bool in_update=
true);
138 void setXY(
const double in_easting,
const double in_northing,
const double in_altitude,
const bool in_update=
true);
139 void setPoint(
const double in_x_or_lat,
const double in_y_or_lon,
const double in_altitude);
140 void setPoint(
const double in_x_or_lat,
const double in_y_or_lon,
const double in_altitude,
const int epsg);
141 void setGridIndex(
const int in_grid_i,
const int in_grid_j,
const int in_grid_k,
const bool setValid=
false);
142 void setAltitude(
const double in_altitude,
const bool in_update=
true);
143 void setProj(
const std::string& in_coordinatesystem,
const std::string& in_parameters=
"");
144 void setLocalRef(
const double in_ref_latitude,
const double in_ref_longitude);
149 void check(
const std::string& pre_msg=
"");
156 void convert_to_WGS84(
double i_easting,
double i_northing,
double& o_latitude,
double& o_longitude)
const;
157 void convert_from_WGS84(
double i_latitude,
double i_longitude,
double& o_easting,
double& o_northing)
const;
159 void WGS84_to_local(
double lat_in,
double long_in,
double& east_out,
double& north_out)
const;
160 void local_to_WGS84(
double east_in,
double north_in,
double& lat_out,
double& long_out)
const;
161 void WGS84_to_NULL(
double lat_in,
double long_in,
double& east_out,
double& north_out)
const;
162 void NULL_to_WGS84(
double east_in,
double north_in,
double& lat_out,
double& long_out)
const;
165 void distance(
const Coords& destination,
double& o_distance,
double& o_bearing)
const;
168 void clearCoordinates();
169 void setDefaultValues();
172 double ref_latitude, ref_longitude;
174 double latitude, longitude;
175 double easting, northing;
176 int grid_i, grid_j, grid_k;
179 std::string coordsystem, coordparam;
A class to handle geographic coordinate systems. This class offers an easy way to transparently conve...
Definition: Coords.h:83
int getGridI() const
Definition: Coords.h:124
geo_distances
Keywords for selecting the algorithm for computing geodesic distances.
Definition: Coords.h:86
@ GEO_VINCENTY
Vincenty ellispoid formula (See T. Vincenty, "Closed formulas for the direct and reverse geodetic pro...
Definition: Coords.h:88
@ GEO_COSINE
Spherical law of cosine (See http://www.movable-type.co.uk/scripts/latlong.html)
Definition: Coords.h:87
const std::string toString(const FORMATS &type=DEBUG) const
Print the content of the Coords object (useful for debugging) The Coords is bound by "<Coords>" and "...
Definition: Coords.cc:223
static const std::set< int > latlon_epsgs
Definition: Coords.h:183
void setLocalRef(const double in_ref_latitude, const double in_ref_longitude)
Set the local projection reference coordinates This projection will be used for converting between la...
Definition: Coords.cc:671
void moveByBearing(const double &i_bearing, const double &i_distance)
Definition: Coords.cc:149
void setProj(const std::string &in_coordinatesystem, const std::string &in_parameters="")
Set projection to use This projection will be used for converting between lat/lon and East/North (see...
Definition: Coords.cc:627
Coords & operator=(const Coords &)
Assignement operator.
Definition: Coords.cc:112
int getGridJ() const
Definition: Coords.h:125
void setGridIndex(const int in_grid_i, const int in_grid_j, const int in_grid_k, const bool setValid=false)
Set grid indices This index represent the position in a cartesian grid. It can not be automatically m...
Definition: Coords.cc:595
bool indexIsValid() const
Returns true if the (i,j,k) index are valid.
Definition: Coords.h:127
double getLon() const
Definition: Coords.h:122
double distance(const Coords &destination) const
Calculate the distance between two points.
Definition: Coords.cc:755
short int getEPSG() const
returns the epsg code of the current projection
Definition: Coords.cc:806
friend std::istream & operator>>(std::istream &is, Coords &coord)
Definition: Coords.cc:291
FORMATS
Keywords for selecting the toString formats.
Definition: Coords.h:92
@ DEBUG
As much information as possible, useful for debugging.
Definition: Coords.h:93
@ FULL
Provide all the usually necessary information.
Definition: Coords.h:94
@ CARTESIAN
Compact representation only containing the X/Y and I/J coordinates.
Definition: Coords.h:97
@ XY
Simplified cartesian, only easting/northing.
Definition: Coords.h:96
@ LATLON
Simplified, lat/lon only.
Definition: Coords.h:95
double getAltitude() const
Definition: Coords.h:123
void setXY(const double in_easting, const double in_northing, const double in_altitude, const bool in_update=true)
Set easting and northing The automatic update of the latitude/longitude can be turned off so that bot...
Definition: Coords.cc:529
bool isNodata() const
move the point by the specified distance (in m) along easting and northing
Definition: Coords.cc:132
void setPoint(const double in_x_or_lat, const double in_y_or_lon, const double in_altitude)
Set coordinates based on the previously defined EPSG code If the EPSG code is 4326 (which represents ...
Definition: Coords.cc:551
bool operator==(const Coords &) const
Operator that tests for equality.
Definition: Coords.cc:75
friend std::ostream & operator<<(std::ostream &os, const Coords &coord)
Definition: Coords.cc:267
void moveByXY(const double &x_displacement, const double &y_displacement)
move the point by the specified bearing and distance (in m)
Definition: Coords.cc:144
void setDistances(const geo_distances in_algo)
Set the algorithm to use to compute distances Various algorithm exist that offer various precision/co...
Definition: Coords.cc:700
void getProj(std::string &proj_type, std::string &proj_args) const
Returns the projection parameters.
Definition: Coords.cc:463
bool isSameProj(const Coords &target) const
Check if two Coords object are using the same projection.
Definition: Coords.cc:766
void check(const std::string &pre_msg="")
Check consistency of coordinates When both latitude/longitude and easting/northing are given,...
Definition: Coords.cc:716
double getNorthing() const
Definition: Coords.h:120
void setEPSG(const int &epsg)
set the current projection to a given EPSG-defined projection
Definition: Coords.cc:815
void setAltitude(const double in_altitude, const bool in_update=true)
Set altitude at a given value. If the i,j,k indices were set, reset them to inodata,...
Definition: Coords.cc:613
void copyProj(const Coords &source, const bool i_update=true)
Copy the projection parameters of another Coords object.
Definition: Coords.cc:779
double getLat() const
Definition: Coords.h:121
static Coords merge(const Coords &coord1, const Coords &coord2)
Simple merge strategy. If some fields of the first argument are empty, they will be filled by the mat...
Definition: Coords.cc:174
bool operator!=(const Coords &) const
Operator that tests for inequality.
Definition: Coords.cc:108
double getEasting() const
Definition: Coords.h:119
int getGridK() const
Definition: Coords.h:126
Coords()
Default constructor This constructor builds a dummy object that performs no conversions but can be us...
Definition: Coords.cc:321
void setLatLon(const double in_latitude, const double in_longitude, const double in_altitude, const bool in_update=true)
Set latitude and longitude The automatic update of the easting/northing can be turned off so that bot...
Definition: Coords.cc:499