[mapserver-users] layer classification with MapScript
Brent Fraser
bfraser at geoanalytic.com
Sun Aug 28 08:19:04 PDT 2011
Puneet,
If you don't care about mapserver generating a legend graphic, you
could use mapserver CGI's ability (no scripting required) to do
attribute binding (get values from a feature's attribute values). I've
used a single class def of:
CLASS
STYLE # Line, Poly and Point outline
SYMBOL [sSymbol]
OUTLINECOLOR [sOutlineColor]
COLOR [sColor]
SIZE [sSize]
END
TEXT ([Label])
LABEL
ANGLE AUTO
POSITION UR
COLOR [lColor]
OUTLINECOLOR [lOutlineColor]
TYPE truetype
FONT 'Arial'
SIZE [lSize]
END
END
where the data/connection accessed a view joining the feature table to a
class table where the styling values were defined. And you need 3 layer
defs, one for points, lines and polygons. But using this technique,
there is no way to get a legend graphic show all the classes.
So in your PHP code you would need to do a generic database query to
get a set of classes, then for each row create a class object and add it
to the layer object. Then have mapscript process the features and
render a map image by doing a draw() (and a legend graphic by doing a
drawLegend()). Or, as others have suggested, you could pass an SLD to
mapserver via WMS and request a legend graphic.
Best Regards,
Brent Fraser
On 8/27/2011 5:02 PM, Mr. Puneet Kishor wrote:
> I have a layer classification issue. I want to do something along the lines of (semi-pseudocode ahead) --
>
> $layerObj->{data} = 'the_geom FROM (SELECT gid, the_geom, class_name, class_color FROM table) t USING UNIQUE gid';
> $layerObj->{classitem} = 'class_name';
>
> while (my $row in $layerObj->{data}) {
> create class with 'name = class_name', 'expression = class_name', 'color = class_color'
> }
>
> How do I iterate over the rows retrieved from the table in order to create classes? I don't see any obvious reference to a db result set._______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
More information about the MapServer-users
mailing list