aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/apply_gridshift.cpp9
-rw-r--r--src/iso19111/io.cpp10
2 files changed, 15 insertions, 4 deletions
diff --git a/src/apply_gridshift.cpp b/src/apply_gridshift.cpp
index fcd9fa01..e6c7b2b1 100644
--- a/src/apply_gridshift.cpp
+++ b/src/apply_gridshift.cpp
@@ -344,7 +344,14 @@ PJ_LP proj_hgrid_apply(PJ *P, PJ_LP lp, PJ_DIRECTION direction) {
ct = find_ctable(P->ctx, lp, P->gridlist_count, P->gridlist);
if (ct == nullptr || ct->cvs == nullptr) {
- pj_ctx_set_errno( P->ctx, PJD_ERR_FAILED_TO_LOAD_GRID );
+ if( P->gridlist_count == 1 &&
+ strcmp(P->gridlist[0]->gridname, "null") == 0) {
+ // TODO: remove this particular case that is put there just to be
+ // able to handle longitudes outside of -180,180
+ out = lp;
+ } else {
+ pj_ctx_set_errno( P->ctx, PJD_ERR_FAILED_TO_LOAD_GRID );
+ }
return out;
}
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp
index 3b630a10..20a90946 100644
--- a/src/iso19111/io.cpp
+++ b/src/iso19111/io.cpp
@@ -8255,6 +8255,7 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
}
auto axisType = AxisType::REGULAR;
+ bool bWebMercator = false;
if (step.name == "tmerc" &&
((getParamValue(step, "axis") == "wsu" && iAxisSwap < 0) ||
@@ -8337,8 +8338,7 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
}
}
if (getNumericValue(getParamValue(step, "a")) == 6378137) {
- return createPseudoMercator(PropertyMap().set(
- IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"));
+ bWebMercator = true;
}
} else if (hasParamValue(step, "lat_ts")) {
mapping = getMapping(EPSG_CODE_METHOD_MERCATOR_VARIANT_B);
@@ -8599,7 +8599,11 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
props.set("IMPLICIT_CS", true);
- CRSNNPtr crs = ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
+ CRSNNPtr crs =
+ bWebMercator
+ ? createPseudoMercator(props.set(IdentifiedObject::NAME_KEY,
+ "WGS 84 / Pseudo-Mercator"))
+ : ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
if (!hasParamValue(step, "geoidgrids") &&
(hasParamValue(step, "vunits") || hasParamValue(step, "vto_meter"))) {