RFC 33: Removing msLayerWhichItems()...

Tamas Szekeres szekerest at GMAIL.COM
Tue Jul 10 08:43:05 EDT 2007


Steve,

I'm a bit scared about the complexity of the changes, and I feel not
all of the relations have been covered by this RFC.

1. It seems we would let the drivers set the items array implicitly
upon the LayerOpen call. It would require to change the current
behaviour of all of the existing drivers.
2. All of the msLayerWhichItems related code (in mapdraw.c,
maplayer.c, mapogcfilter.c mapquery.c, mapraster.c, mapshape.c,
mapswf.c) should be altered.
3. Not sure about whether the join functionality (in mapjoin.c) involved or not.
4. itemindex related code should be altered in the following files
(maplayer.c, mapogr.cpp, mapraster.c, maprasterquery.c, mapshape.c)
 It seems that the tileitemindex has a special role and might be set
by the driver. Some of the drivers are also involved in setting
filteritemindex
5. styleObj.rangeitemindex is currently exposed to mapscript (should
probably be hidden)
6. Not sure about the inline layers, it does not implement GetItems
currently so msLayerWhichItems might not be eliminated entirely.

Wouldn't it be more feasible to keep msLayerWhichItems which would be
responsible to call msLayerGetItems to set up the items array by the
drivers,
and set the itemindex values as it stands now. In this regard only one
function would be altered.

I'm not sure about the final goal (removing double-pass query) either.
According to the previous posts we would keep the shapeObj-s inside
the resultcacheMemberObj-s but we would not want to keep the
compatibility with the existing scripts (which use GetShape call to
retrieve the members).
Instead we would want to introduce a new function to retrieve the
shapes from the resultcache.
In addition we address caching only the results of a query and it will
eventually involve 2 passes (one for the query and one for the further
rendering by drawQuery for example)

I generally support the intents of this RFC and indeed it would
simplify how the shapes are handled inside the mapserver core,
regardless of that RFC22a itself doesn't rely on these changes.


Best regards,

Tamas




2007/7/10, Steve Lime <Steve.Lime at dnr.state.mn.us>:
> Hi all: I tried to put some thoughts down regarding removing msLayerWhichItems() from maplayer.c. This sets us up for feature caching, both using Tamas' nested layers and for single pass query support using the resultCacheMemberObj.
>
> Please see: http://mapserver.gis.umn.edu/development/rfc/ms-rfc-33
>
> Steve
>



More information about the mapserver-dev mailing list