diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2017-07-13 14:00:47 +0200 |
|---|---|---|
| committer | Kristian Evers <kristianevers@gmail.com> | 2017-07-13 14:00:47 +0200 |
| commit | 40bc7c0bb8b422774be37fa7af0f80877bb52696 (patch) | |
| tree | 2ef2c44e2f03b53985e2c6943628261b664d5e1b /src | |
| parent | 94210f99b79b486c39a18a450f89ea2faffd361c (diff) | |
| download | PROJ-40bc7c0bb8b422774be37fa7af0f80877bb52696.tar.gz PROJ-40bc7c0bb8b422774be37fa7af0f80877bb52696.zip | |
Add proj_dmstor() and proj_rtodms() to proj.h API. Resolves #172.
Diffstat (limited to 'src')
| -rw-r--r-- | src/PJ_cart.c | 15 | ||||
| -rw-r--r-- | src/pj_obs_api.c | 8 | ||||
| -rw-r--r-- | src/proj.def | 4 | ||||
| -rw-r--r-- | src/proj.h | 3 |
4 files changed, 29 insertions, 1 deletions
diff --git a/src/PJ_cart.c b/src/PJ_cart.c index 1109b01b..a40ebdaf 100644 --- a/src/PJ_cart.c +++ b/src/PJ_cart.c @@ -242,6 +242,7 @@ int pj_cart_selftest (void) { char *args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; char *arg = {" +proj=utm +zone=32 +ellps=GRS80"}; char *arg_def; + char buf[40]; /* An utm projection on the GRS80 ellipsoid */ P = proj_create (0, arg); @@ -490,6 +491,20 @@ int pj_cart_selftest (void) { } proj_destroy(P); + /* test proj_rtodms() and proj_dmstor() */ + if (strcmp("180dN", proj_rtodms(buf, M_PI, 'N', 'S'))) + return 70; + + if (proj_dmstor(&buf[0], NULL) != M_PI) + return 71; + + if (strcmp("114d35'29.612\"S", proj_rtodms(buf, -2.0, 'N', 'S'))) + return 72; + + /* we can't expect perfect numerical accuracy so testing with a tolerance */ + if (fabs(-2.0 - proj_dmstor(&buf[0], NULL)) > 1e-7) + return 73; + return 0; } diff --git a/src/pj_obs_api.c b/src/pj_obs_api.c index 4fac1dac..05fe58f0 100644 --- a/src/pj_obs_api.c +++ b/src/pj_obs_api.c @@ -529,3 +529,11 @@ double proj_todeg (double angle_in_radians) { return PJ_TODEG (angle_in_radians) int proj_has_inverse(PJ *P) { return (P->inv != 0 || P->inv3d != 0 || P->invobs != 0); } + +double proj_dmstor(const char *is, char **rs) { + return dmstor(is, rs); +} + +char* proj_rtodms(char *s, double r, int pos, int neg) { + return rtodms(s, r, pos, neg); +} diff --git a/src/proj.def b/src/proj.def index abb17765..5a762291 100644 --- a/src/proj.def +++ b/src/proj.def @@ -133,5 +133,7 @@ EXPORTS proj_torad @123 proj_todeg @124 proj_has_inverse @125 + proj_rtodms @126 + proj_dmstor @127 - pj_find_file @126 + pj_find_file @128 @@ -353,6 +353,9 @@ double proj_todeg (double angle_in_radians); /* Check if a projection has an inverse mapping */ int proj_has_inverse(PJ *P); +double proj_dmstor(const char *is, char **rs); +char* proj_rtodms(char *s, double r, int pos, int neg); + #ifdef __cplusplus } |
