Skip to content

Commit 2d312c5

Browse files
committed
Use bounding-box specific reprojection code (#4974)
1 parent 98908ed commit 2d312c5

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

mapogcfiltercommon.c

+14-1
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,19 @@ char *FLTGetSpatialComparisonCommonExpression(FilterEncodingNode *psNode, layerO
445445
if(FLTIsBBoxFilter(psNode)) {
446446
FLTGetBBOX(psNode, &sQueryRect);
447447

448+
if(lp->projection.numargs > 0) {
449+
if (psNode->pszSRS)
450+
msInitProjection(&sProjTmp);
451+
if (psNode->pszSRS) {
452+
/* Use the non EPSG variant since axis swapping is done in FLTDoAxisSwappingIfNecessary */
453+
if (msLoadProjectionString(&sProjTmp, psNode->pszSRS) == 0) {
454+
msProjectRect(&sProjTmp, &lp->projection, &sQueryRect);
455+
}
456+
} else if (lp->map->projection.numargs > 0)
457+
msProjectRect(&lp->map->projection, &lp->projection, &sQueryRect);
458+
if (psNode->pszSRS)
459+
msFreeProjection(&sProjTmp);
460+
}
448461
psTmpShape = (shapeObj *)msSmallMalloc(sizeof(shapeObj));
449462
msInitShape(psTmpShape);
450463
msRectToPolygon(sQueryRect, psTmpShape);
@@ -475,7 +488,7 @@ char *FLTGetSpatialComparisonCommonExpression(FilterEncodingNode *psNode, layerO
475488
/*
476489
** target is layer projection
477490
*/
478-
if(lp->projection.numargs > 0) {
491+
if(!bBBoxQuery && lp->projection.numargs > 0) {
479492
if (psNode->pszSRS)
480493
msInitProjection(&sProjTmp);
481494
if (psNode->pszSRS) {

0 commit comments

Comments
 (0)