In case anyone else wants the createLegendIcon to return the image based what 
would be drawn at the current mapscale, here is what I did.

In the mapserver 7.0.4 source code, mapscript/php/mapscript_i.c line 1116  has 
scale_independant hard coded to MS_TRUE.  I changed it to MS_FALSE, recompiled 
and have the behavior that I was expecting.  

Thanks,




On Mar 30, 2017, at 11:01 AM, Moen, Paul T. <pm...@nd.gov> wrote:

Sorry I forgot to say that I have tried the script with the following versions 
with the same results.
 
MapServer version 7.0.3 OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ 
SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=WMS_SERVER 
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER 
SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
 
MapServer version 6.4.4 OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ 
SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=WMS_SERVER 
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER 
SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
 
 
From: mapserver-users <mapserver-users-boun...@lists.osgeo.org 
<mailto:mapserver-users-boun...@lists.osgeo.org>> on behalf of Paul Moen 
<pm...@nd.gov <mailto:pm...@nd.gov>>
Date: Thursday, March 30, 2017 at 10:45 AM
To: "mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>" 
<mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>>
Subject: [mapserver-users] PHP mapscript createLegendIcon doesn't follow style 
maxscaledenom
 
CAUTION: This email originated from an outside source. Do not click links or 
open attachments unless you know they are safe.

I am finding that createLegendIcon returns a different legend item than what is 
used in the map output when using scaledenom in the style.
 
Below is a test script that produces what I am talking about. 
 
The script will create 4 images.
 
map_scale_873.png -> map->draw output with a 873 scaledenom
map_scale_2618.png -> map->draw with a 873 scaledenom
legimg_scale_873.png -> createLegendIcon output with a 873 scaledenom
legimg_scale_2618.png -> createLegendIcon output with a 873 scaledenom
 
 
I was expecting that the legend image at the 873 scale, legimg_scale_873.png 
would match the map output, map_scale_873.png.  Can anyone see a problem, is 
this a bug, or is this expected behavior?
 
<?php
 
$mapstr = <<<EOT
MAP
                NAME AERIAL
                EXTENT 100 100 400 400
                SIZE 100 100
                UNITS FEET
                LAYER
                                NAME 'TEST'
                                STATUS ON
                                TYPE LINE
                                FEATURE
                                                WKT 'LINESTRING(250 250, 250 
500, 500 500, 500 250,250 250)'
                                END
                                CLASS
                                                NAME "Boundary"
                                                STYLE
                                                                WIDTH 4.0
                                                                MAXWIDTH 6.0
                                                                COLOR 150 255 
150
                                                                MAXSCALEDENOM 
1000
                                                END
                                                STYLE
                                                                WIDTH 2.0
                                                                MAXWIDTH 2.0
                                                                COLOR 0 0 0
                                                                PATTERN 20.0 
10.0 5.0 10.0 END
                                                                MAXSCALEDENOM 
1000
                                                END
                                                STYLE
                                                                WIDTH 4.0
                                                                MAXWIDTH 4.0
                                                                COLOR 150 255 
150
                                                                MINSCALEDENOM 
1001
                                                END
                                                END
                                END
                END
END
EOT;
 
                $map = ms_newMapObjFromString($mapstr);
                $map->selectOutputFormat('png');
                $img=$map->draw();
                $name=round($map->scaledenom);
                $img->saveImage("map_scale_$name.png");
                $tmpLay =$map->getLayer(0);
                $tmpclass = $tmpLay->getClass(0);
                $tmpImg = $tmpclass->createLegendIcon(50,50);
                $tmpImg->saveImage("legimg_scale_$name.png");
                $map->setextent(200,200,300,300);
                $img2=$map->draw();
                $name=round($map->scaledenom);
                $img2->saveImage("map_scale_$name.png");
                $tmpImg->saveImage("legimg_scale_$name.png");
                
?>
 
Thanks,
 
Paul
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>
https://lists.osgeo.org/mailman/listinfo/mapserver-users 
<https://lists.osgeo.org/mailman/listinfo/mapserver-users>
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to