Hi Robert,
I have resolved a similar issue with mapserver (where mapserver variable
substitution couldn't supply the required functionality) by having a cgi script
write the mapfile on the fly, using some logic to customise the mapfile as
required. Then the script invokes mapserver with the mapfile.
Sort of:
write mapfile header down to common layer details
for class in LIST ; do
write class with random colour
done
close mapfile
invoke mapserver with new mapfile
The issue with this approach is that every invocation will have different
colours (unless you always start with the same random seed & use a pseudorandom
sequence).
Option 2 is similar. I believe mapserver's runtime variable substitution
supports the CLASS expression. A cgi could generate the name/value pairs for
the required random colours, append them to the URL query string, invoke
mapserver & have mapserver carry out the variable substitution as it
preprocesses the mapfile.
Another similar issue I resolved recently: A WMS polygon layer with various but
fixed colours & a WFS layer with a point in each polygon with the metadata in
OpenLayers.
A table stores the RGB values used in the WMS classes, a query generates a java
#hex string from the RGB values, so the WFS layer provides the colour to render
each point in, OpenLayers reads the colour for each feature from the WFS
fields, so they match the WMS polygons.
The query in the data statement generates java #hex from rgb values, which is
fine from postgis, I'm not sure if you can do this from a shapefile, but if so,
you could perhaps predefine your colours in the shapefile, with a value per
feature:
geom from (select r.gid + (100 * p.id) as gid,
r.gid as r_id,
p.id as p_id,
r.regioncode,
r.regionname,
p.geom,
('#'||case when (length(to_hex(r_fill))=1)
then '0'||to_hex(r_fill)
else to_hex(r_fill) end||
case when (length(to_hex(g_fill))=1)
then '0'||to_hex(g_fill)
else to_hex(g_fill) end||
case when (length(to_hex(b_fill))=1)
then '0'||to_hex(b_fill)
else to_hex(b_fill) end) as hex_fill,
('#'||case when (length(to_hex(r_pen))=1)
then '0'||to_hex(r_pen)
else to_hex(r_pen) end||
case when (length(to_hex(g_pen))=1)
then '0'||to_hex(g_pen)
else to_hex(g_pen) end||
case when (length(to_hex(b_pen))=1)
then '0'||to_hex(b_pen)
else to_hex(b_pen) end) as hex_pen
...
Cheers,
Brent
Dear Mapserver users
Just wondering if it is possible to colour a polygon Shape file layer with each
distinct polygon having a different colour?
Many thanks,
Robert Sanson
This email and any attachments are confidential and intended solely for the
addressee(s). If you are not the intended recipient, please notify us
immediately and then delete this email
from your system.
This message has been scanned for Malware and Viruses by Websense Hosted
Security.
www.websense.com
-----Inline Attachment Follows-----
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users