[Mapserver-users] Maximum number of classes/layers (was: premature end of script headers (php))

Jan Hartmann jhart at frw.uva.nl
Tue Feb 11 12:27:39 EST 2003


Just my personal view, but isn't this problem of too many classes (or 
layers) perhaps caused by using a MapFile in two different ways: as a 
generator of a single layered map, and as a repository of all available 
map layers? I can hardly imagine a single map with more than fifty 
classes or one hundred layers. What people seem to do is putting every 
GIS file they have in a single MapFile and turning layers on and off as 
needed. As every layer needs its own classes, the maximum number of 50 
is very soon reached, even if only a small part of these will be ever 
used in any actual map.

In my experience, map layers can be selected much more effectively by 
just defining the number of layers needed for the most complex physical 
map, and scripting their DATA statement. So instead of an URL like:

.../mapserv?map=my.map&layers=layer25 layer33 ...

do something like:

.../mapserv?map=my.map&layers=layer1,layer2&map_layer1_data=<actual GIS 
file 1>&map_layer2_data=<actual GIS file 2>...

The same goes for classes: layer1_class0_color=<RGB>

See http://mapserver.gis.umn.edu/doc36/cgi-reference.html , at the end.

This moves some bookkeeping from the MapFile to the calling Web page. If 
you have so many maps that keeping trail of them in HTML/JavaScript 
would produce a mess, you are probably better off using PostGIS as your 
map repository. You wouldn't be able to produce a Mapfile for this 
situation anyway.

Note that in MapServer 3.7 the DATA statement is not scriptable by 
default any more. For security reasons you have to put

DATAPATTERN <regular expression>

in your mapfile. All scripted DATA calls are compared with the regular 
expression, and only those that match are allowed.

Comments, anyone?

Jan Hartmann




Charlton Purvis wrote:
> Thanks for the map.h MS_MAXCLASSES pointer, folks, and thanks for the
> user thread pointers, too.  I don't know why I have such rotten luck
> finding information in the threads, but I do.
> 
> Anyway, I didn't see any clear answers to what a reasonable number of
> classes would be, though.  Should I look at it w/ this attitude:  (a)
> I've got 100 classes, so I need to up MapServer's anti and simply get
> the job done; OR (b) I need to revisit what I'm trying to render because
> 100 classes is unreasonable.
> 
> Thanks,
> 
> Charlton
> 
> -----Original Message-----
> From: Dylan Keon [mailto:keon at nacse.org] 
> Sent: Monday, February 10, 2003 5:31 PM
> To: Charlton Purvis
> Cc: mapserver-users at lists.gis.umn.edu
> Subject: Re: [Mapserver-users] premature end of script headers (php)
> 
>  > I have about 120 classes I need defined in my .map file so that they
>  > can appear as different colors (different elevations).  Well, all is
>  > well if I display something like 50 of those classes.  But when I try
>  > to display the 51^st , all goes to pot, and I get an internal server
>  > error.  I've made sure that my classes are intact and syntactically
>  > correct.  As long as I don't go above the total of 50 classes, I'm
>  > fine.
> 
> If you are able to recompile MapServer you can edit map.h and increase 
> MS_MAXCLASSES (default is 50).  As long as you compile with a value 
> greater than the max number of classes you need to use, you won't 
> receive the error you described.  There were some posts about this 
> recently, and about how many classes are reasonable:
> http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0301/threads.ht
> ml#00609
> 
> --Dylan
> 
> 





More information about the mapserver-users mailing list