|
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.