OpenCPN Partial API docs
|
Implement georef.h – georef utilities. More...
#include <vector>
#include <utility>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <algorithm>
#include <wx/debug.h>
#include "model/georef.h"
#include "model/cutil.h"
Go to the source code of this file.
Macros | |
#define | NAN (*(double *)&lNaN) |
#define | TOL 1e-10 |
#define | CONV 1e-10 |
#define | N_ITER 10 |
#define | I_ITER 20 |
#define | ITOL 1.e-12 |
#define | DTOL 1e-12 |
#define | HALFPI 1.5707963267948966 |
#define | SPI 3.14159265359 |
#define | TWOPI 6.2831853071795864769 |
#define | ONEPI 3.14159265358979323846 |
#define | MERI_TOL 1e-9 |
#define | _LMDIF |
#define | BUG 0 |
#define | LM_MACHEP 1.2e-16 |
#define | LM_DWARF 1.0e-38 |
#define | LM_SQRT_DWARF 3.834e-20 |
#define | LM_SQRT_GIANT 1.304e19 |
#define | MIN(a, b) (((a) <= (b)) ? (a) : (b)) |
#define | MAX(a, b) (((a) >= (b)) ? (a) : (b)) |
#define | SQR(x) (x) * (x) |
Functions | |
void | datumParams (short datum, double *a, double *es) |
int | GetDatumIndex (const char *str) |
void | toDMS (double a, char *bufp, int bufplen) |
double | fromDMS (char *dms) |
void | todmm (int flag, double a, char *bufp, int bufplen) |
void | toDMM (double a, char *bufp, int bufplen) |
void | toSM (double lat, double lon, double lat0, double lon0, double *x, double *y) |
double | toSMcache_y30 (double lat0) |
void | toSMcache (double lat, double lon, double y30, double lon0, double *x, double *y) |
void | fromSM (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | fromSMR (double x, double y, double lat0, double lon0, double axis_meters, double *lat, double *lon) |
void | toSM_ECC (double lat, double lon, double lat0, double lon0, double *x, double *y) |
void | fromSM_ECC (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | toPOLY (double lat, double lon, double lat0, double lon0, double *x, double *y) |
void | fromPOLY (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | toTM (float lat, float lon, float lat0, float lon0, double *x, double *y) |
void | fromTM (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | cache_phi0 (double lat0, double *sin_phi0, double *cos_phi0) |
void | toORTHO (double lat, double lon, double sin_phi0, double cos_phi0, double lon0, double *x, double *y) |
void | fromORTHO (double x, double y, double lat0, double lon0, double *lat, double *lon) |
double | toPOLARcache_e (double lat0) |
void | toPOLAR (double lat, double lon, double e, double lat0, double lon0, double *x, double *y) |
void | fromPOLAR (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | toSTEREO (double lat, double lon, double sin_phi0, double cos_phi0, double lon0, double *x, double *y) |
void | fromSTEREO (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | toGNO (double lat, double lon, double sin_phi0, double cos_phi0, double lon0, double *x, double *y) |
void | fromGNO (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | toEQUIRECT (double lat, double lon, double lat0, double lon0, double *x, double *y) |
void | fromEQUIRECT (double x, double y, double lat0, double lon0, double *lat, double *lon) |
void | MolodenskyTransform (double lat, double lon, double *to_lat, double *to_lon, int from_datum_index, int to_datum_index) |
double | adjlon (double lon) |
void | ll_gc_ll (double lat, double lon, double brg, double dist, double *dlat, double *dlon) |
void | ll_gc_ll_reverse (double lat1, double lon1, double lat2, double lon2, double *bearing, double *dist) |
void | PositionBearingDistanceMercator (double lat, double lon, double brg, double dist, double *dlat, double *dlon) |
double | DistLoxodrome (double slat, double slon, double dlat, double dlon) |
double | DistGreatCircle (double slat, double slon, double dlat, double dlon) |
void | DistanceBearingMercator (double lat1, double lon1, double lat0, double lon0, double *brg, double *dist) |
double | my_fit_function (double tx, double ty, int n_par, double *p) |
================================================================================= Customized section for openCPN georeferencing | |
int | Georef_Calculate_Coefficients_Onedir (int n_points, int n_par, double *tx, double *ty, double *y, double *p, double hintp0, double hintp1, double hintp2) |
int | Georef_Calculate_Coefficients (struct GeoRef *cp, int nlin_lon) |
int | Georef_Calculate_Coefficients_Proj (struct GeoRef *cp) |
void | lm_evaluate_default (double *par, int m_dat, double *fvec, void *data, int *info) |
void | lm_print_default (int n_par, double *par, int m_dat, double *fvec, void *data, int iflag, int iter, int nfev) |
void | lm_initialize_control (lm_control_type *control) |
================================================================================= | |
void | lm_minimize (int m_dat, int n_par, double *par, lm_evaluate_ftype *evaluate, lm_print_ftype *printout, void *data, lm_control_type *control) |
void | lm_qrfac (int m, int n, double *a, int pivot, int *ipvt, double *rdiag, double *acnorm, double *wa) |
void | lm_qrsolv (int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double *x, double *sdiag, double *wa) |
void | lm_lmpar (int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double delta, double *par, double *x, double *sdiag, double *wa1, double *wa2) |
void | lm_lmdif (int m, int n, double *x, double *fvec, double ftol, double xtol, double gtol, int maxfev, double epsfcn, double *diag, int mode, double factor, int *info, int *nfev, double *fjac, int *ipvt, double *qtf, double *wa1, double *wa2, double *wa3, double *wa4, lm_evaluate_ftype *evaluate, lm_print_ftype *printout, void *data) |
double | lm_enorm (int n, double *x) |
double | lat_gc_crosses_meridian (double lat1, double lon1, double lat2, double lon2, double lon) |
double | lat_rl_crosses_meridian (double lat1, double lon1, double lat2, double lon2, double lon) |
Variables | |
struct DATUM const | gDatum [] |
struct ELLIPSOID const | gEllipsoid [] |
short | nDatums = sizeof(gDatum) / sizeof(struct DATUM) |
const char * | lm_infmsg [] |
const char * | lm_shortmsg [] |
Implement georef.h – georef utilities.
Parts of this file were adapted from source code found in John F. Waers (jfwae.nosp@m.rs@c.nosp@m.sn.ne.nosp@m.t) public domain program MacGPS45
Definition in file georef.cpp.
#define _LMDIF |
Definition at line 1459 of file georef.cpp.
#define BUG 0 |
Definition at line 1804 of file georef.cpp.
#define CONV 1e-10 |
Definition at line 496 of file georef.cpp.
#define DTOL 1e-12 |
Definition at line 987 of file georef.cpp.
#define HALFPI 1.5707963267948966 |
Definition at line 989 of file georef.cpp.
#define I_ITER 20 |
Definition at line 498 of file georef.cpp.
#define ITOL 1.e-12 |
Definition at line 499 of file georef.cpp.
#define LM_DWARF 1.0e-38 |
Definition at line 1814 of file georef.cpp.
#define LM_MACHEP 1.2e-16 |
Definition at line 1813 of file georef.cpp.
#define LM_SQRT_DWARF 3.834e-20 |
Definition at line 1821 of file georef.cpp.
#define LM_SQRT_GIANT 1.304e19 |
Definition at line 1822 of file georef.cpp.
#define MAX | ( | a, | |
b | |||
) | (((a) >= (b)) ? (a) : (b)) |
Definition at line 1833 of file georef.cpp.
#define MERI_TOL 1e-9 |
Definition at line 993 of file georef.cpp.
#define MIN | ( | a, | |
b | |||
) | (((a) <= (b)) ? (a) : (b)) |
Definition at line 1832 of file georef.cpp.
#define N_ITER 10 |
Definition at line 497 of file georef.cpp.
#define NAN (*(double *)&lNaN) |
Definition at line 46 of file georef.cpp.
#define ONEPI 3.14159265358979323846 |
Definition at line 992 of file georef.cpp.
#define SPI 3.14159265359 |
Definition at line 990 of file georef.cpp.
#define SQR | ( | x | ) | (x) * (x) |
Definition at line 1834 of file georef.cpp.
#define TOL 1e-10 |
Definition at line 495 of file georef.cpp.
#define TWOPI 6.2831853071795864769 |
Definition at line 991 of file georef.cpp.
double adjlon | ( | double | lon | ) |
Definition at line 995 of file georef.cpp.
void cache_phi0 | ( | double | lat0, |
double * | sin_phi0, | ||
double * | cos_phi0 | ||
) |
Definition at line 683 of file georef.cpp.
void datumParams | ( | short | datum, |
double * | a, | ||
double * | es | ||
) |
Definition at line 232 of file georef.cpp.
void DistanceBearingMercator | ( | double | lat1, |
double | lon1, | ||
double | lat0, | ||
double | lon0, | ||
double * | brg, | ||
double * | dist | ||
) |
Definition at line 1392 of file georef.cpp.
double DistGreatCircle | ( | double | slat, |
double | slon, | ||
double | dlat, | ||
double | dlon | ||
) |
Definition at line 1291 of file georef.cpp.
double DistLoxodrome | ( | double | slat, |
double | slon, | ||
double | dlat, | ||
double | dlon | ||
) |
Definition at line 1263 of file georef.cpp.
double fromDMS | ( | char * | dms | ) |
Definition at line 304 of file georef.cpp.
void fromEQUIRECT | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 880 of file georef.cpp.
void fromGNO | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 855 of file georef.cpp.
void fromORTHO | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 716 of file georef.cpp.
void fromPOLAR | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 765 of file georef.cpp.
void fromPOLY | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 529 of file georef.cpp.
void fromSM | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 402 of file georef.cpp.
void fromSM_ECC | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 463 of file georef.cpp.
void fromSMR | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double | axis_meters, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 426 of file georef.cpp.
void fromSTEREO | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 824 of file georef.cpp.
void fromTM | ( | double | x, |
double | y, | ||
double | lat0, | ||
double | lon0, | ||
double * | lat, | ||
double * | lon | ||
) |
Definition at line 628 of file georef.cpp.
int Georef_Calculate_Coefficients | ( | struct GeoRef * | cp, |
int | nlin_lon | ||
) |
Definition at line 1531 of file georef.cpp.
int Georef_Calculate_Coefficients_Onedir | ( | int | n_points, |
int | n_par, | ||
double * | tx, | ||
double * | ty, | ||
double * | y, | ||
double * | p, | ||
double | hintp0, | ||
double | hintp1, | ||
double | hintp2 | ||
) |
Definition at line 1483 of file georef.cpp.
int Georef_Calculate_Coefficients_Proj | ( | struct GeoRef * | cp | ) |
Definition at line 1606 of file georef.cpp.
int GetDatumIndex | ( | const char * | str | ) |
Definition at line 276 of file georef.cpp.
double lat_gc_crosses_meridian | ( | double | lat1, |
double | lon1, | ||
double | lat2, | ||
double | lon2, | ||
double | lon | ||
) |
Definition at line 2854 of file georef.cpp.
double lat_rl_crosses_meridian | ( | double | lat1, |
double | lon1, | ||
double | lat2, | ||
double | lon2, | ||
double | lon | ||
) |
Definition at line 2872 of file georef.cpp.
void ll_gc_ll | ( | double | lat, |
double | lon, | ||
double | brg, | ||
double | dist, | ||
double * | dlat, | ||
double * | dlon | ||
) |
Definition at line 1012 of file georef.cpp.
void ll_gc_ll_reverse | ( | double | lat1, |
double | lon1, | ||
double | lat2, | ||
double | lon2, | ||
double * | bearing, | ||
double * | dist | ||
) |
Definition at line 1151 of file georef.cpp.
double lm_enorm | ( | int | n, |
double * | x | ||
) |
Definition at line 2788 of file georef.cpp.
void lm_evaluate_default | ( | double * | par, |
int | m_dat, | ||
double * | fvec, | ||
void * | data, | ||
int * | info | ||
) |
Definition at line 1667 of file georef.cpp.
void lm_initialize_control | ( | lm_control_type * | control | ) |
=================================================================================
Definition at line 1743 of file georef.cpp.
void lm_lmdif | ( | int | m, |
int | n, | ||
double * | x, | ||
double * | fvec, | ||
double | ftol, | ||
double | xtol, | ||
double | gtol, | ||
int | maxfev, | ||
double | epsfcn, | ||
double * | diag, | ||
int | mode, | ||
double | factor, | ||
int * | info, | ||
int * | nfev, | ||
double * | fjac, | ||
int * | ipvt, | ||
double * | qtf, | ||
double * | wa1, | ||
double * | wa2, | ||
double * | wa3, | ||
double * | wa4, | ||
lm_evaluate_ftype * | evaluate, | ||
lm_print_ftype * | printout, | ||
void * | data | ||
) |
Definition at line 1838 of file georef.cpp.
void lm_lmpar | ( | int | n, |
double * | r, | ||
int | ldr, | ||
int * | ipvt, | ||
double * | diag, | ||
double * | qtb, | ||
double | delta, | ||
double * | par, | ||
double * | x, | ||
double * | sdiag, | ||
double * | wa1, | ||
double * | wa2 | ||
) |
Definition at line 2284 of file georef.cpp.
void lm_minimize | ( | int | m_dat, |
int | n_par, | ||
double * | par, | ||
lm_evaluate_ftype * | evaluate, | ||
lm_print_ftype * | printout, | ||
void * | data, | ||
lm_control_type * | control | ||
) |
Definition at line 1752 of file georef.cpp.
void lm_print_default | ( | int | n_par, |
double * | par, | ||
int | m_dat, | ||
double * | fvec, | ||
void * | data, | ||
int | iflag, | ||
int | iter, | ||
int | nfev | ||
) |
Definition at line 1696 of file georef.cpp.
void lm_qrfac | ( | int | m, |
int | n, | ||
double * | a, | ||
int | pivot, | ||
int * | ipvt, | ||
double * | rdiag, | ||
double * | acnorm, | ||
double * | wa | ||
) |
Definition at line 2491 of file georef.cpp.
void lm_qrsolv | ( | int | n, |
double * | r, | ||
int | ldr, | ||
int * | ipvt, | ||
double * | diag, | ||
double * | qtb, | ||
double * | x, | ||
double * | sdiag, | ||
double * | wa | ||
) |
Definition at line 2628 of file georef.cpp.
void MolodenskyTransform | ( | double | lat, |
double | lon, | ||
double * | to_lat, | ||
double * | to_lon, | ||
int | from_datum_index, | ||
int | to_datum_index | ||
) |
Definition at line 906 of file georef.cpp.
double my_fit_function | ( | double | tx, |
double | ty, | ||
int | n_par, | ||
double * | p | ||
) |
================================================================================= Customized section for openCPN georeferencing
Definition at line 1464 of file georef.cpp.
void PositionBearingDistanceMercator | ( | double | lat, |
double | lon, | ||
double | brg, | ||
double | dist, | ||
double * | dlat, | ||
double * | dlon | ||
) |
Definition at line 1258 of file georef.cpp.
void toDMM | ( | double | a, |
char * | bufp, | ||
int | bufplen | ||
) |
Definition at line 341 of file georef.cpp.
void todmm | ( | int | flag, |
double | a, | ||
char * | bufp, | ||
int | bufplen | ||
) |
Definition at line 322 of file georef.cpp.
void toDMS | ( | double | a, |
char * | bufp, | ||
int | bufplen | ||
) |
Definition at line 291 of file georef.cpp.
void toEQUIRECT | ( | double | lat, |
double | lon, | ||
double | lat0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 868 of file georef.cpp.
void toGNO | ( | double | lat, |
double | lon, | ||
double | sin_phi0, | ||
double | cos_phi0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 839 of file georef.cpp.
void toORTHO | ( | double | lat, |
double | lon, | ||
double | sin_phi0, | ||
double | cos_phi0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 689 of file georef.cpp.
void toPOLAR | ( | double | lat, |
double | lon, | ||
double | e, | ||
double | lat0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 747 of file georef.cpp.
double toPOLARcache_e | ( | double | lat0 | ) |
Definition at line 742 of file georef.cpp.
void toPOLY | ( | double | lat, |
double | lon, | ||
double | lat0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 501 of file georef.cpp.
void toSM | ( | double | lat, |
double | lon, | ||
double | lat0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 351 of file georef.cpp.
void toSM_ECC | ( | double | lat, |
double | lon, | ||
double | lat0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 437 of file georef.cpp.
void toSMcache | ( | double | lat, |
double | lon, | ||
double | y30, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 381 of file georef.cpp.
double toSMcache_y30 | ( | double | lat0 | ) |
Definition at line 374 of file georef.cpp.
void toSTEREO | ( | double | lat, |
double | lon, | ||
double | sin_phi0, | ||
double | cos_phi0, | ||
double | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 812 of file georef.cpp.
void toTM | ( | float | lat, |
float | lon, | ||
float | lat0, | ||
float | lon0, | ||
double * | x, | ||
double * | y | ||
) |
Definition at line 575 of file georef.cpp.
struct DATUM const gDatum[] |
Definition at line 65 of file georef.cpp.
struct ELLIPSOID const gEllipsoid[] |
Definition at line 199 of file georef.cpp.
const char* lm_infmsg[] |
Definition at line 1784 of file georef.cpp.
const char* lm_shortmsg[] |
Definition at line 1797 of file georef.cpp.
short nDatums = sizeof(gDatum) / sizeof(struct DATUM) |
Definition at line 228 of file georef.cpp.