[mapserver-dev] Upper Limit to Number of Layers in Map file
Peter Willis
peterw at borstad.com
Tue Apr 21 14:27:38 EDT 2009
Frank Warmerdam wrote:
> Peter Willis wrote:
>> Hello,
>>
>> I am attempting to use mapserver as a WMS server for
>> a large number of rasters.
>>
>> The system I am using has a collection of over 21000
>> geo-referenced rasters.
>>
>> These can be sorted into various groups, however
>> any specific group of rasters may exceed 400 or more.
>>
>> I have tried modifying the value MS_MAXLAYERS in
>> map.h and recompiling but am unsure if I will exceed
>> the binary size of whatever variables are affected by
>> that constant.
>>
>> What is the maximum, safe, binary size of the
>> MS_MAXLAYERS constant that will not overflow
>> the variables/procedures that use it?
>
> Peter,
>
> First, I would note that MS_MAXLAYERS was made obsolete in MapServer 5.0.
> If you upgrade to at least 5.0 MapServer defaults to dynamic allocation
> of the layers array and in theory millions of layers would work. I imagine
> you could set MS_MAXLAYERS to a value in excess of 21000 in older versions
> if you wanted; however, I think that the memory overhead, and
> initialization
> startup time would likely become painful.
>
> But I really think you need to approach this as a tileindexing issue.
> Raster layers can reference an index file containing many individual
> raster files that are related in some fashion (for instance spatial
> tiles making up a mosaic). There is also some limited support for
> selecting files out of a tileindex based on time ranges that might be
> valuable.
>
> If that is not practical - for instance if the rasters are essentially
> unrelated and need to be addressed individually - then perhaps you
> should consider a dynamic map service using MapScript to to treat each
> file/granule/etc as a map service. This approach might be accomplished
> using the MapScript WxS services:
>
> http://mapserver.org/ogc/mapscript.html
>
> Best regards,
Hello,
As previously stated we can/are breaking down the list of rasters into
categorized groups based on the origin and content of their data.
So, from a logistical standpoint, there will never be more than a few
hundred rasters that ever, theoretically, make their way as layers
into a single 'map' file.(usually between 1 and 10)
--unimportant background information--
The system we are using writes a map file, on the fly,
based on the users selected categorical input. Map files
are never manually written by anyone. There is a metadata
database that holds all layer entries and associated
meta information for those layers, regardless of type
(ie; raster, point, line, polygon, etc. ), origin, category.
This database is queried via CGI to generate the proper
'MAP' file for each user session for the 'non-WMS' mapserver
side of things.
This works fine. Only rasters selected by the user,
or associated (in the relational database) with a specific
project/context/content make their way into the map
file as layers. This is more like a content management
system for mapserver(s).
--The WMS Problem--
In the current context, I am using mapserver primarily for **WMS**.
At this point the system is being expanded to auto-generate
dynamic WMS oriented map files. The difference, in this case,
from the previous setup is that the WMS map file needs to list
ALL the available layers for a particular context.
Are *drawing* optimizations, such as tile indexing,
relevant in the context of WMS...(??) I didn't
think that was the case.
I will look at the latest version of mapserver since
we are only at version 4.10.1. . That should resolve
the maximum layers issue.
All the best,
Peter
More information about the mapserver-dev
mailing list