[Users] LayerTree in Drake

Alexandre Dube adube at mapgears.com
Mon Feb 16 15:12:36 CET 2009


Hi Andreas,

  Thanks a lot for your well-explained answer.  I currently have one 
tree node with each child representing a params.LAYERS.

  See below for an other question.

Thanks again,


Andreas Hocevar wrote:
> Hi,
>
> now I understand what your use case is. I think it will be good to 
> support that in GeoExt. See my comments inline.
>
> Alexandre Dube wrote:
>> - I want to have one Openlayer.Layer.WMS object only
>> - That layer should contain all "layers" from a mapfile, so 
>> params.LAYERS should looks like "foo1,foo2,foo3,etc..."
>> - I have so many layers in that mapfile (around 70 I think) that I 
>> must find a way to build a tree by :
>> GROUP
>
> This is already possible with LayerNode

I looked but didn't quite understand.  Do you have an example showing 
the use of groups ?

>
>> LAYER
>
> There is something similar that I have created, but this changes the 
> layer's CQL_FILTER param instead of the LAYERS param: a 
> FilteredLayerNode [1] instead of a LayerNode for the GROUP, and 
> CqlFilterNodes [2] for the LAYERs. If you look at [2], you see that 
> only two lines would have to change for this functionality (currently 
> L54-58):
>
> if(filters.length == 0) {
>     // (not needed) delete this.attributes.layer.params.CQL_FILTER;
> } else {
>     newParams = {"LAYERS": filters};
> }
>
> So it seems that the FilteredLayerNode can be made more generic with 
> two new config options, one for the param to change and one for the 
> concatenation string (not required in the case of ","). The 
> CQLFilterNode is already generic enough to support that, but could use 
> more generic variable and event names.
>
>> and then, if possible, display the CLASS icon as a legend
>
> Tim Coulter is currently working on a tree node that can display a 
> legend graphic (e.g. from a GetLegendGraphic request) [3], but this is 
> not fully functional yet.
>
>> - Using a mapserver query in mode=legend with a html template that 
>> outputs javascript objects, I generate an array of groups that has 
>> layers.
>
> You could create a Tree configuration, as shown in [4] when clicking 
> on "Show/Edit Tree Config".
>
>> - Using that array, I must find a way to build a model for the ext.tree
>
> Not required if you look at [4], if you manage to create a valid tree 
> config with your mapserver template.
>
>> - In the end, I would have my tree, and clicking on a group would 
>> refresh the OL.Layer.WMS with all the "layers" names the group 
>> contains...
>
> exactly!
>
>> In mapfish, when you give no model to the tree, it builds its own and 
>> when, using OL.Layer.WMS or MapServer, you define an array of 
>> params.LAYERS instead of a string, it automatically generate a model 
>> by "layers" in the mapfile. That's what I want but with a level of 
>> GROUPS and maybe, if possible, display the CLASS icons as a legend.
>>
>> So that's about it. It's a bit hard to explain more. Can GeoExt 
>> achieves what I want ?
>
> As you can see, the CLASS stuff is being worked on (you might to 
> support Tim here), and the Layer/Group stuff is as easy as changing 
> two lines of code in the short term, and making a few things more 
> generic by more or less just changing names in the long term.
>
> Regards,
> Andreas.
>
> [1] 
> http://projects.opengeo.org/who/browser/ems/trunk/lib/WHO/FilteredLayerNode.js 
>
> [2] 
> http://projects.opengeo.org/who/browser/ems/trunk/lib/WHO/CqlFilterNode.js 
>
> [3] 
> http://geoext.org/trac/geoext/browser/sandbox/opengeo/drake/trunk/core/lib/GeoExt/widgets/tree/WMSLegendNode.js 
>
> [4] http://demo.opengeo.org/ems/examples/gx-tree-demo.html
>
>> Christopher Schmidt wrote:
>>> On Sat, Feb 14, 2009 at 11:52:52AM +0100, Andreas Hocevar wrote:
>>>  
>>>> Alexandre Dube wrote:
>>>>   
>>>>> Nevermind.
>>>>>
>>>>> What I want to do will be easier in MapFish ( I think ).
>>>>>
>>>>> I want to have one Openlayer.Layer.WMS with a tree like this :
>>>>>
>>>>> Groups
>>>>>  |__Layers
>>>>>      |__Class
>>>>>       
>>>> I think I'm missing something here. What would such a tree do to 
>>>> one WMS layer? Or are you talking about a nested WMS layer. In that 
>>>> case, I would be interested to see the GetCapabilities for this layer.
>>>>     
>>>
>>> I'm not sure I understand the "Layers", "Class" stuff, but I think that
>>> in general, there is a desier to have multiple WMS Layers (from the
>>> GetCaps) merged into one Layer.WMS -- so when you turn on two layers,
>>> instead of two OpenLayers.Layer classes, you have one with a
>>> 'layers':'abc,123'.
>>>
>>> Regards,
>>>   
>>
>>
>
>


-- 
Alexandre Dubé
Mapgears
www.mapgears.com



More information about the Users mailing list