From f377292252e81e8fa6ccc4ae9a1d40a598bd806f Mon Sep 17 00:00:00 2001 From: Stephan Meissl Date: Fri, 13 Apr 2012 14:58:52 +0200 Subject: [PATCH] WCS 2.0: Fixing resolution when UoM changes (#4283). --- mapwcs20.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index d8a1713ee2..6f80d495c3 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -4006,19 +4006,20 @@ int msWCSGetCoverage20(mapObj *map, cgiRequestObj *request, tmpCm = cm; tmpCm.extent = map->extent; - tmpCm.xsize = params->width; - tmpCm.ysize = params->height; - tmpCm.xresolution = params->resolutionX; - tmpCm.yresolution = params->resolutionY; + tmpCm.xsize = map->width; + tmpCm.ysize = map->height; strlcpy(tmpCm.srs_uri, srs_uri, sizeof(tmpCm.srs_uri)); - msFree(srs_uri); - /* WCS 2.0 is center of pixel oriented */ - tmpCm.extent.minx -= params->resolutionX * 0.5; - tmpCm.extent.maxx += params->resolutionX * 0.5; - tmpCm.extent.miny -= params->resolutionY * 0.5; - tmpCm.extent.maxy += params->resolutionY * 0.5; + + tmpCm.xresolution = map->gt.geotransform[1]; + tmpCm.yresolution = map->gt.geotransform[5]; + + tmpCm.extent.minx = MIN(map->gt.geotransform[0], map->gt.geotransform[0] + map->width * tmpCm.xresolution); + tmpCm.extent.miny = MIN(map->gt.geotransform[3], map->gt.geotransform[3] + map->height * tmpCm.yresolution); + tmpCm.extent.maxx = MAX(map->gt.geotransform[0], map->gt.geotransform[0] + map->width * tmpCm.xresolution); + tmpCm.extent.maxy = MAX(map->gt.geotransform[3], map->gt.geotransform[3] + map->height * tmpCm.yresolution); - swapAxes = msWCSSwapAxes20(cm.srs_uri); + swapAxes = msWCSSwapAxes20(srs_uri); + msFree(srs_uri); /* Setup layer information */ msWCSCommon20_CreateBoundedBy(layer, &tmpCm, psGmlNs, psRootNode, &(map->projection), swapAxes);