You can do that too; GeoServer accepts a parameter named SLD_BODY in WMS
requests.  It is a bit problematic for web browsers as most have a limit on
the length of URLs and SLD tends to be pretty verbose.  GeoServer does allow
POSTed GetMap requests, but not all browsers can handle displaying the
results of a form submission as OpenLayers map tiles (most recent ones can.)

See http://dev.openlayers.org/releases/OpenLayers-2.10/examples/WMSPost.htmlfor
an example.

--
David Winslow
OpenGeo - http://opengeo.org/

On Wed, May 11, 2011 at 8:42 AM, Jon-Paul Dobson <[email protected]>wrote:

> Hi David,
>
> Thanks for this suggestion. This looks more promising. I'm still not sure
> if it offers quite the flexibility that I would like though. It's a shame
> you don't seem able to pass raw SLD xml in the URL.
>
> Best regards,
> Jon-Paul.
>
> On Wed, May 11, 2011 at 1:28 PM, David Winslow <[email protected]>wrote:
>
>> If you don't mind having your styles reliant on nonstandard functionality,
>> then you could use parameter substitution.  See the documentation:
>>
>>
>> http://docs.geoserver.org/stable/en/user/styling/sld-extensions/substitution.html
>>
>> --
>> David Winslow
>> OpenGeo - http://opengeo.org/
>>
>>
>> On Wed, May 11, 2011 at 8:00 AM, Jon-Paul Dobson <[email protected]>wrote:
>>
>>> Hi Hari,
>>>
>>> Th ultimate aim is to be able to colour layer symbols on-the-fly. So for
>>> example I may have a layer based on a Shape file for which the symbols are
>>> circles. I need to be able to change the colour of each circle
>>> programmatically. I do not want to use predefined styles for this as there
>>> are potentially any number of colours to choose from. I also do not want to
>>> alter a single SLD file as the colours may be different for each user that
>>> is logged into the application. If I altered the SLD file then every user
>>> would see the same colours.
>>>
>>> Any ideas about this? Is this even possible?
>>>
>>> I guess you could also create a temporary SLD file, populate
>>> appropriately, assign the layer to this SLD file, then delete the temporary
>>> SLD file but I think there would be performance problems with this and it
>>> seems a bit hacky.
>>>
>>> Ideally there should be a way to pass the raw SLD XML directly to
>>> geoserver without needing to save the SLD to a file but I don't think this
>>> is possible. This is how ESRI ArcIMS use to work using it's AXL.
>>>
>>> I'll certainly check out the link you provided so thanks for that.
>>>
>>> Regards,
>>> Jon-Paul.
>>>
>>>
>>> On Wed, May 11, 2011 at 12:39 PM, Harikumar Reddy 
>>> <[email protected]>wrote:
>>>
>>>> Hi Jon-Paul,
>>>>
>>>> Can you please explain a bit more about your requirement. i will try to
>>>> think of possibility. Geoserver has been enhanced a lot since version 2.x.
>>>>
>>>> You can check out presentation by Andrea Aime from OpenGeo. It has
>>>> really very useful information regarding SLD.
>>>>
>>>> http://2010.foss4g.org/presentations_show.php?id=3588
>>>>
>>>> Regards,
>>>> Hari.
>>>>
>>>>
>>>> On Wed, May 11, 2011 at 4:15 PM, Jon-Paul Dobson 
>>>> <[email protected]>wrote:
>>>>
>>>>> Hi Harikumar,
>>>>>
>>>>> Thanks for the detailed answer. The problem is that the style I want to
>>>>> use isn't known until run-time, so it would not be possible to use
>>>>> pre-defined styles. I want to for example change a symbols colour based 
>>>>> on a
>>>>> database field value which can change over time. This means it wouldn't be
>>>>> be possible to use a fixed SLD file. Do you know if it's possible to do 
>>>>> this
>>>>> at all? Is there a way to pass the SLD XML directly to GeoServer without
>>>>> needing to use file?
>>>>>
>>>>> Best regards,
>>>>> Jon-Paul.
>>>>>
>>>>>   On Wed, May 11, 2011 at 11:01 AM, Harikumar Reddy <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I may not provide more insight than given below (provided information
>>>>>> whatever is known to me)., but i hope you will get clarity how to 
>>>>>> implement
>>>>>> dynamic sld for gis layers for multi lingual webgis applications.
>>>>>>
>>>>>> We can assign more than one styles to a GIS layer (but default SLD
>>>>>> will be selected during geoserver layers configuration..for ex:- polygon 
>>>>>> for
>>>>>> polygon layers, line for road layers, or point for point features). You 
>>>>>> may
>>>>>> write need to write code in the program similar to given below.
>>>>>>
>>>>>> Note: even though default SLD is configured in Geoserver, required sld
>>>>>> to be applied should be present in geoserver. naming of such sld like 
>>>>>> given
>>>>>> below will not confuse developers while coding.
>>>>>>
>>>>>> The slds respective to each layer as follows.
>>>>>>
>>>>>>    *layer*
>>>>>>
>>>>>> *sld*
>>>>>>
>>>>>> * *
>>>>>>
>>>>>> *English*
>>>>>>
>>>>>> *Hindi
>>>>>> *
>>>>>>
>>>>>>
>>>>>>  gis:gis_sea
>>>>>>
>>>>>> gis_sea
>>>>>>
>>>>>> gis:gis_country
>>>>>>
>>>>>> gis_country
>>>>>>
>>>>>> gis:gis_footprint
>>>>>>
>>>>>> gis_footprint
>>>>>>
>>>>>> gis:gis_buildings
>>>>>>
>>>>>> gis_buildings
>>>>>>
>>>>>>
>>>>>>
>>>>>>  gis:gis_city
>>>>>>
>>>>>> gis_city_en
>>>>>>
>>>>>> gis_city_hnd
>>>>>>
>>>>>> gis:gis_district
>>>>>>
>>>>>> gis_district_en
>>>>>>
>>>>>> gis_district_hnd
>>>>>>
>>>>>> gis:gis_towns
>>>>>>
>>>>>> gis_towns_en
>>>>>>
>>>>>> gis_towns_hnd
>>>>>>
>>>>>> gis:gis_roads
>>>>>>
>>>>>> gis_roads_en
>>>>>>
>>>>>> gis_roads_hnd
>>>>>>
>>>>>> if require, pass specific sld's as in order to apply dynamic styles to
>>>>>> the respective layer locale selected.
>>>>>>
>>>>>> Eq 1 :
>>>>>> ....
>>>>>> ....
>>>>>> map = new OpenLayers.Map ("map",options);
>>>>>>   var layers ='gis:gis_ind,'+
>>>>>> 'gis_footprint,'+
>>>>>>     'gms_landmarks,'+
>>>>>>     'gis:gis_towns,'+
>>>>>>     'gis:gis_roads,'+
>>>>>>     'gms:gms_point_of_interest';
>>>>>> var slds ='gis_ind,' +
>>>>>>    'gis_footprint,'+
>>>>>>      'gms_landmarks,'+
>>>>>>      'gis_towns_'+ locale +','+
>>>>>>      'gis_roads_'+ locale +','+
>>>>>>      'gms_POI_'+ locale;
>>>>>>         var layer = new OpenLayers.Layer.WMS( "ind WMS", wmsUrl,{
>>>>>>            layers: layers,
>>>>>>              styles: slds,
>>>>>>              srs: 'EPSG:4326',format: 'image/png'},{'attribution': '©
>>>>>> 2009 Mapview'},{buffer: 0});
>>>>>>   map.addLayer( layer );
>>>>>>
>>>>>> Eq 2 :
>>>>>> ....
>>>>>> ....
>>>>>> map = new OpenLayers.Map ("map",options);
>>>>>>     var layer1 = new OpenLayers.Layer.WMS( "Layer1", wmsUrl,{
>>>>>>            layers: 'gis:gis_ind',
>>>>>>              styles: 'gis_ind',
>>>>>>              srs: 'EPSG:4326',format: 'image/png'},{'attribution': '©
>>>>>> 2009 Mapview'},{buffer: 0});
>>>>>> var layer2 = new OpenLayers.Layer.WMS( "Layer2", wmsUrl,{
>>>>>>            layers: 'gis:gis_towns',
>>>>>>              styles: 'gis_towns_'+ locale,
>>>>>>              srs: 'EPSG:4326',format: 'image/png'},{'attribution': '©
>>>>>> 2009 Mapview'},{buffer: 0});
>>>>>>   map.addLayers( [layer1, layer2] );
>>>>>> In this example, the locale javascript object gets the respective
>>>>>> language as 'en' or 'ar' and applies language specific style to the 
>>>>>> layer.
>>>>>>
>>>>>>
>>>>>> @ Hari
>>>>>>
>>>>>>
>>>>>>   On Wed, May 11, 2011 at 2:13 PM, Jon-Paul Dobson <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>   Hi,
>>>>>>>
>>>>>>> Is there anyway to change layer styles on-the-fly other than to alter
>>>>>>> the .SLD xml file? In our application I want to allow users to have the
>>>>>>> ability to set personal layer styles e.g. colour, symbol etc.Is this
>>>>>>> possible at all?
>>>>>>>
>>>>>>> If the only way to change styles is to alter the .SLD file, then this
>>>>>>> means that layer styles must be set at the global level and personal
>>>>>>> preferences per user would not be possible.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Jon-Paul.
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Achieve unprecedented app performance and reliability
>>>>>>> What every C/C++ and Fortran developer should know.
>>>>>>> Learn how Intel has extended the reach of its next-generation tools
>>>>>>> to help boost performance applications - inlcuding clusters.
>>>>>>> http://p.sf.net/sfu/intel-dev2devmay
>>>>>>> _______________________________________________
>>>>>>> Geoserver-users mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Achieve unprecedented app performance and reliability
>>> What every C/C++ and Fortran developer should know.
>>> Learn how Intel has extended the reach of its next-generation tools
>>> to help boost performance applications - inlcuding clusters.
>>> http://p.sf.net/sfu/intel-dev2devmay
>>> _______________________________________________
>>> Geoserver-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>>>
>>>
>>
>
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to