aboutsummaryrefslogtreecommitdiff
path: root/src/apps/cs2cs.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-12-04 23:52:23 +0100
committerGitHub <noreply@github.com>2020-12-04 23:52:23 +0100
commitf3c51143b5b434829a841d93ae57b6583c2a2ff1 (patch)
tree906f9344db18f62cc2c3316555f75766c6ff1c92 /src/apps/cs2cs.cpp
parentfe2c5e04d5e395d01e8628361ac957f5a7e466bb (diff)
parent18ab7ef2e357e0c01464848a6911e754ebca471f (diff)
downloadPROJ-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.cpp20
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);