diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-12-04 23:52:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-04 23:52:23 +0100 |
| commit | f3c51143b5b434829a841d93ae57b6583c2a2ff1 (patch) | |
| tree | 906f9344db18f62cc2c3316555f75766c6ff1c92 /src/apps/cs2cs.cpp | |
| parent | fe2c5e04d5e395d01e8628361ac957f5a7e466bb (diff) | |
| parent | 18ab7ef2e357e0c01464848a6911e754ebca471f (diff) | |
| download | PROJ-f3c51143b5b434829a841d93ae57b6583c2a2ff1.tar.gz PROJ-f3c51143b5b434829a841d93ae57b6583c2a2ff1.zip | |
Merge pull request #2477 from rouault/fix_2442
cs2cs / proj_create_crs_to_crs_from_pj(): add a --authority switch to control where coordinate operations are looked for (fixes #2442)
Diffstat (limited to 'src/apps/cs2cs.cpp')
| -rw-r--r-- | src/apps/cs2cs.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/apps/cs2cs.cpp b/src/apps/cs2cs.cpp index dd65baf4..409a5ef3 100644 --- a/src/apps/cs2cs.cpp +++ b/src/apps/cs2cs.cpp @@ -77,6 +77,7 @@ static const char *oterr = "*\t*"; /* output line for unprojectable input */ static const char *usage = "%s\nusage: %s [-dDeEfIlrstvwW [args]]\n" " [[--area name_or_code] | [--bbox west_long,south_lat,east_long,north_lat]]\n" + " [--authority {name}]\n" " [+opt[=arg] ...] [+to +opt[=arg] ...] [file ...]\n"; static double (*informat)(const char *, @@ -372,6 +373,7 @@ int main(int argc, char **argv) { ExtentPtr bboxFilter; std::string area; + const char* authority = nullptr; /* process run line arguments */ while (--argc > 0) { /* collect run line arguments */ @@ -410,6 +412,15 @@ int main(int argc, char **argv) { std::exit(1); } } + else if (strcmp(*argv, "--authority") == 0 ) { + ++argv; + --argc; + if( argc == 0 ) { + emess(1, "missing argument for --authority"); + std::exit(1); + } + authority = *argv; + } else if (**argv == '-') { for (arg = *argv;;) { switch (*++arg) { @@ -761,8 +772,15 @@ int main(int argc, char **argv) { } } + std::string authorityOption; /* keep this variable in this outer scope ! */ + const char* options[2] = { nullptr, nullptr }; + if( authority ) { + authorityOption = "AUTHORITY="; + authorityOption += authority; + options[0] = authorityOption.data(); + } transformation = proj_create_crs_to_crs_from_pj(nullptr, src, dst, - pj_area, nullptr); + pj_area, options); proj_destroy(src); proj_destroy(dst); |
