[Users] LayerTree in Drake

Alexandre Dube adube at mapgears.com
Mon Feb 16 15:35:46 CET 2009


Hi,

  Please, correct me if I'm wrong, but it seems that the only current 
possible way to have an extra level "GROUP" is to have one OL layer 
object per group, have them in a hard coded tree of filteredLayerNode, I 
am right ?

Alexandre

Alexandre Dube wrote:
> 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