Table of Contents
I am having problem parsing
http://localhost:8080/geoserver/wms?request=GetStyles&layers=topp%3Astates&service=wms&version=1.1.1
getStyle response from geoserver of layer topp:states. I want to get the SLD information of a layer with openlayers. I get blank response for the following request. The response parsed SLD file has no value. For now I am doing :
var json = new OpenLayers.Format.JSON();
OpenLayers.Request.GET({
url: "http://localhost:8080/geoserver/wms",
params: {request: "GetStyles",layers:"topp:states",service:"wms",version:"1.1.1"},
success: complete
});
function complete(req) {
//console.log(req);
sld = format.read(req.responseXML || req.responseText);
//console.log("The sld");
//console.log(sld.namedLayers);
//styles = sld.namedLayers.interpreted.userStyles[0];
//console.log(styles);
// building_vec.styleMap.styles.default = styles;
console.log(json.write(sld, true));
}
The response:
{
"namedLayers": {
},
"version": "1.0.0"
}
But when I hit direct requested url I get right sld.
http://localhost:8080/geoserver/wms?request=GetStyles&layers=topp%3Astates&service=wms&version=1.1.1
The SLD with url directly on address bar:
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
<sld:NamedLayer>
<sld:Name>topp:states</sld:Name>
<sld:UserStyle>
<sld:Name>population</sld:Name>
<sld:Title>Population in the United States</sld:Title>
<sld:IsDefault>1</sld:IsDefault>
<sld:Abstract>A sample filter that filters the United States into three
categories of population, drawn in different colors</sld:Abstract>
<sld:FeatureTypeStyle>
<sld:Name>name</sld:Name>
<sld:Rule>
<sld:Title>< 2M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsLessThan>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:Literal>2000000</ogc:Literal>
</ogc:PropertyIsLessThan>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#4DFF4D</sld:CssParameter>
<sld:CssParameter name="fill-opacity">0.7</sld:CssParameter>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>2M - 4M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsBetween>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:LowerBoundary>
<ogc:Literal>2000000</ogc:Literal>
</ogc:LowerBoundary>
<ogc:UpperBoundary>
<ogc:Literal>4000000</ogc:Literal>
</ogc:UpperBoundary>
</ogc:PropertyIsBetween>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#FF4D4D</sld:CssParameter>
<sld:CssParameter name="fill-opacity">0.7</sld:CssParameter>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>> 4M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:Literal>4000000</ogc:Literal>
</ogc:PropertyIsGreaterThan>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#4D4DFF</sld:CssParameter>
<sld:CssParameter name="fill-opacity">0.7</sld:CssParameter>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>Boundary</sld:Title>
<sld:LineSymbolizer>
<sld:Stroke>
<sld:CssParameter name="stroke-width">0.2</sld:CssParameter>
</sld:Stroke>
</sld:LineSymbolizer>
<sld:TextSymbolizer>
<sld:Label>
<ogc:PropertyName>STATE_ABBR</ogc:PropertyName>
</sld:Label>
<sld:Font>
<sld:CssParameter name="font-family">Times New Roman</sld:CssParameter>
<sld:CssParameter name="font-size">14</sld:CssParameter>
<sld:CssParameter name="font-style">Normal</sld:CssParameter>
<sld:CssParameter name="font-weight">normal</sld:CssParameter>
</sld:Font>
<sld:LabelPlacement>
<sld:PointPlacement>
<sld:AnchorPoint>
<sld:AnchorPointX>
<ogc:Literal>0.5</ogc:Literal>
</sld:AnchorPointX>
<sld:AnchorPointY>
<ogc:Literal>0.5</ogc:Literal>
</sld:AnchorPointY>
</sld:AnchorPoint>
<sld:Rotation>
<ogc:Literal>0.0</ogc:Literal>
</sld:Rotation>
</sld:PointPlacement>
</sld:LabelPlacement>
</sld:TextSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
<sld:UserStyle>
<sld:Name>pophatch</sld:Name>
<sld:Title>Population in the United States</sld:Title>
<sld:Abstract>A sample filter that filters the United States into three
categories of population, drawn in different colors</sld:Abstract>
<sld:FeatureTypeStyle>
<sld:Name>name</sld:Name>
<sld:Rule>
<sld:Title>< 2M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsLessThan>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:Literal>2000000</ogc:Literal>
</ogc:PropertyIsLessThan>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:GraphicFill>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>shape://slash</sld:WellKnownName>
<sld:Stroke>
<sld:CssParameter name="stroke">0xAAAAAA</sld:CssParameter>
</sld:Stroke>
</sld:Mark>
<sld:Size>
<ogc:Literal>16</ogc:Literal>
</sld:Size>
</sld:Graphic>
</sld:GraphicFill>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>2M - 4M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsBetween>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:LowerBoundary>
<ogc:Literal>2000000</ogc:Literal>
</ogc:LowerBoundary>
<ogc:UpperBoundary>
<ogc:Literal>4000000</ogc:Literal>
</ogc:UpperBoundary>
</ogc:PropertyIsBetween>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:GraphicFill>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>shape://slash</sld:WellKnownName>
<sld:Stroke>
<sld:CssParameter name="stroke">0xAAAAAA</sld:CssParameter>
</sld:Stroke>
</sld:Mark>
<sld:Size>
<ogc:Literal>8</ogc:Literal>
</sld:Size>
</sld:Graphic>
</sld:GraphicFill>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>> 4M</sld:Title>
<ogc:Filter>
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>PERSONS</ogc:PropertyName>
<ogc:Literal>4000000</ogc:Literal>
</ogc:PropertyIsGreaterThan>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:GraphicFill>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>shape://slash</sld:WellKnownName>
<sld:Stroke>
<sld:CssParameter name="stroke">0xAAAAAA</sld:CssParameter>
</sld:Stroke>
</sld:Mark>
<sld:Size>
<ogc:Literal>4</ogc:Literal>
</sld:Size>
</sld:Graphic>
</sld:GraphicFill>
</sld:Fill>
</sld:PolygonSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Title>Boundary</sld:Title>
<sld:LineSymbolizer>
<sld:Stroke/>
</sld:LineSymbolizer>
<sld:TextSymbolizer>
<sld:Label>
<ogc:PropertyName>STATE_ABBR</ogc:PropertyName>
</sld:Label>
<sld:Font>
<sld:CssParameter name="font-family">Times New Roman</sld:CssParameter>
<sld:CssParameter name="font-size">14</sld:CssParameter>
<sld:CssParameter name="font-style">Normal</sld:CssParameter>
<sld:CssParameter name="font-weight">normal</sld:CssParameter>
</sld:Font>
<sld:LabelPlacement>
<sld:PointPlacement>
<sld:AnchorPoint>
<sld:AnchorPointX>
<ogc:Literal>0.5</ogc:Literal>
</sld:AnchorPointX>
<sld:AnchorPointY>
<ogc:Literal>0.5</ogc:Literal>
</sld:AnchorPointY>
</sld:AnchorPoint>
<sld:Rotation>
<ogc:Literal>0.0</ogc:Literal>
</sld:Rotation>
</sld:PointPlacement>
</sld:LabelPlacement>
<sld:Halo>
<sld:Radius>
<ogc:Literal>2</ogc:Literal>
</sld:Radius>
<sld:Fill>
<sld:CssParameter name="fill">0xFFFFFF</sld:CssParameter>
</sld:Fill>
</sld:Halo>
</sld:TextSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
<sld:UserStyle>
<sld:Name>polygon</sld:Name>
<sld:Title>Default Polygon</sld:Title>
<sld:Abstract>A sample style that draws a polygon</sld:Abstract>
<sld:FeatureTypeStyle>
<sld:Name>name</sld:Name>
<sld:Rule>
<sld:Name>rule1</sld:Name>
<sld:Title>Gray Polygon with Black Outline</sld:Title>
<sld:Abstract>A polygon with a gray fill and a 1 pixel black outline</sld:Abstract>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#AAAAAA</sld:CssParameter>
</sld:Fill>
<sld:Stroke/>
</sld:PolygonSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
-
Can you post your expected request response? What should the request have returned? – R.K. Apr 30 '13 at 12:26
-
@R.K. There is the requred SLD. – kinkajou Apr 30 '13 at 12:28
-
Why do you want to do that btw? – R.K. Apr 30 '13 at 12:38
-
@R.K. Actually I want to know how the layer is styled using what column name of table. So that I can find feature hits using wfs query.Feature Count – kinkajou Apr 30 '13 at 12:52
-
First thing to check is whether the two requests being sent are exactly the same. Could you confirm that the OpenLayers request string is the same as the one that produces the correct response. – pecoanddeco May 3 '13 at 6:10