The nonsquare_enabled check is occurring *before* the WMS bbox (in map->extent) is converted to the MapServer extent model so I believe the code is correct. I'd lean towards option 2 below.
Steve >>> On 7/16/2009 at 2:40 PM, in message <4a5f8230.2080...@pobox.com>, Frank Warmerdam <warmer...@pobox.com> wrote: > Michael Pfeiffer wrote: >> Try this wms request >> >> > http://www.sogis1.so.ch/cgi-bin/sogis/sogis_print_test.wms?SERVICE=WMS&VERSION= > > 1.1.1&REQUEST=GetMap&FORMAT=image/jpeg&LAYERS=Orthofoto&STYLES=&TRANSPARENT=true&BB > OX=605035.8790650383,224864.94050038885,609110.4623983715,230528.7877226111&WI > DTH=6417&HEIGHT=8921&SRS=EPSG:21781 >> A0 portrait >> >> This request needs over 1 minute. > > Michael, > > There seems to be a modest difference in the aspect ratio of the BBOX > and the SIZE in the given request. The logic in mapwms.c that tests whether > non-square mode needs to be used looks like this: > > /* Check whether requested BBOX and width/height result in non-square > pixels > */ > nonsquare_enabled = msTestConfigOption( map, "MS_NONSQUARE", MS_FALSE ); > if (!nonsquare_enabled) > { > double dx, dy, reqy; > dx = MS_ABS(map->extent.maxx - map->extent.minx); > dy = MS_ABS(map->extent.maxy - map->extent.miny); > > reqy = ((double)map->width) * dy / dx; > > /* Allow up to 1 pixel of error on the width/height ratios. */ > /* If more than 1 pixel then enable non-square pixels */ > if ( MS_ABS((reqy - (double)map->height)) > 1.0 ) > { > if (map->debug) > msDebug("msWMSLoadGetMapParams(): enabling non-square > pixels.\n"); > msSetConfigOption(map, "MS_NONSQUARE", "YES"); > nonsquare_enabled = MS_TRUE; > } > } > > I suspect the asymmetry is just enough to amount more than one pixel at > this size. I didn't run all the numbers but I suspect at smaller paper > sizes (smaller SIZE values) the assymmetry amounts to less than one pixel. > I'm not sure why it would affect portrait and not landscape. I only ran > the ratios on the case you mentioned was slow. > > So there are a couple of possibilities here. > > 1) It is possible the above computation is wrong. I vaguely recall there > is an issue with map->extent actually being from the center of edge > pixel to the center of edge pixel, not the outer edges, in which case > the calculation should perhaps be: > reqy = MS_ABS(((map->width - 1) * dy / dx) + 1); > which might or might not make a difference in this case. > > 2) Perhaps you just need to generate your WMS requests with more precise > BBOXes corresponding to the aspect ratio of the SIZE requested. > > Well, I'm sure there could be other possibilities too. > > Best regards, _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users