An individual value theme references a field in the layer (numerical or string), which categorizes the data. For example, a field representing the severity of fire risk (very high, high, medium, low). The theme defines the values to use, and each feature is assigned the color, symbol, or line for its corresponding value.
The structure of the JSON is shown below.
{
"styleDetails": {
"layer": {
"name": "buildings",
"type": "NamedLayer"
},
"themeList": {
"theme": [
{
"type": "IndividualValueTheme",
"binList": {
"bin": [
{
"value": {
"type": "StringValue",
"value": "B"
},
"style": {}
},
{
"value": {
"type": "StringValue",
"value": "M"
},
"style": {}
},
{
"value": {
"type": "StringValue",
"value": "R"
},
"style": {}
},
{
"value": {
"type": "StringValue",
"value": "X"
},
"style": {}
}
]
},
"expression": "bldgtype",
"numericNull": 0,
"allowEmptyString": false,
"applyStylePart": "ALL"
}
]
}
}
} The relevant JSON properties are described below
| Element | Description |
|---|---|
| layer -> name |
String: This is the name of the WMS layer retuned in the get capabilities response. The same layer must also be specified in the LAYERS parameter. Note: This is optional in cases where only 1 layer is specified
in the URL request.
|
| layer -> type |
String: This is always a string value "NamedLayer" Note: This is optional in cases where only 1 layer is specified
in the URL request.
|
| theme -> type | String. Specifies the type of theme. For individual value themes this must be "IndividualValueTheme" |
| theme -> expression | String: The name of the field from the layer to use for each style. |
| theme -> numericNull | Number: Whether to treat the number zero as a null value (no style applied) |
| theme -> allowEmptyString | Boolean: Whether to treat empty strings as a null value (no style applied) |
| theme -> applyStylePart | An enumeration value specifying whether to apply all parts of the style definition to the feature. This is one of "All" or "Color". When Color is specified only the color of the style is applied. For example on a layer that already has symbols the original symbol will be retained but a new color applied. |
| theme -> binList -> bin -> value | An array of values from the expression column. The type of value, the value itself and the style for each value are defined. In the example above each building has a type of B, M, R and X which are styled differently. |
| theme -> binList -> bin -> style | The JSON style definition which contains a MapBasicCompositeStyle. |
Example Requests
Point Layer
Showing addresses by property type using Font Symbols.
Request (GET)
curl --location 'https://api.cloud.precisely.com/v1/spatial/wms?GET/v1/spatial/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=37.78662956646336823%2C-122.2745967175037549%2C37.81410536165775227%2C-122.2403683391127061&CRS=EPSG%3A4326&WIDTH=1062&HEIGHT=853&LAYERS=address_fabric&STYLES=&FORMAT=image%2Fpng&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi%3A96&TRANSPARENT=TRUE&SLD_BODY=%7B%22styleDetails%22%3A%20%5B%7B%22themeList%22%3A%20%7B%22theme%22%3A%20%5B%7B%22type%22%3A%20%22IndividualValueTheme%22%2C%22binList%22%3A%20%7B%22bin%22%3A%20%5B%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22B%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22PointStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicPointStyle%22%2C%22MapBasicSymbol%22%3A%20%7B%22shape%22%3A%20%2233%22%2C%22color%22%3A%20%22blue%22%2C%22size%22%3A%208%2C%22type%22%3A%20%22MapBasicFontSymbol%22%2C%22fontName%22%3A%20%22MapInfo%20Symbols%22%2C%22bold%22%3A%20true%2C%22border%22%3A%20%22BORDER%22%2C%22dropShadow%22%3A%20true%2C%22rotation%22%3A%200%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22M%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22PointStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicPointStyle%22%2C%22MapBasicSymbol%22%3A%20%7B%22shape%22%3A%20%2234%22%2C%22color%22%3A%20%22fuchsia%22%2C%22size%22%3A%208%2C%22type%22%3A%20%22MapBasicFontSymbol%22%2C%22fontName%22%3A%20%22MapInfo%20Symbols%22%2C%22bold%22%3A%20true%2C%22border%22%3A%20%22BORDER%22%2C%22dropShadow%22%3A%20true%2C%22rotation%22%3A%200%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22R%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22PointStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicPointStyle%22%2C%22MapBasicSymbol%22%3A%20%7B%22shape%22%3A%20%2235%22%2C%22color%22%3A%20%22olive%22%2C%22size%22%3A%208%2C%22type%22%3A%20%22MapBasicFontSymbol%22%2C%22fontName%22%3A%20%22MapInfo%20Symbols%22%2C%22bold%22%3A%20true%2C%22border%22%3A%20%22BORDER%22%2C%22dropShadow%22%3A%20true%2C%22rotation%22%3A%200%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22V%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22PointStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicPointStyle%22%2C%22MapBasicSymbol%22%3A%20%7B%22shape%22%3A%20%2236%22%2C%22color%22%3A%20%22green%22%2C%22size%22%3A%208%2C%22type%22%3A%20%22MapBasicFontSymbol%22%2C%22fontName%22%3A%20%22MapInfo%20Symbols%22%2C%22bold%22%3A%20true%2C%22border%22%3A%20%22BORDER%22%2C%22dropShadow%22%3A%20true%2C%22rotation%22%3A%200%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22X%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22PointStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicPointStyle%22%2C%22MapBasicSymbol%22%3A%20%7B%22shape%22%3A%20%2237%22%2C%22color%22%3A%20%22gray%22%2C%22size%22%3A%208%2C%22type%22%3A%20%22MapBasicFontSymbol%22%2C%22fontName%22%3A%20%22MapInfo%20Symbols%22%2C%22bold%22%3A%20true%2C%22border%22%3A%20%22BORDER%22%2C%22dropShadow%22%3A%20true%2C%22rotation%22%3A%200%7D%7D%7D%7D%5D%7D%2C%22expression%22%3A%20%22prop_type%22%2C%22numericNull%22%3A%200%2C%22allowEmptyString%22%3A%20false%2C%22applyStylePart%22%3A%20%22ALL%22%7D%5D%7D%7D%5D%7D'\JSON Body
{
"styleDetails": [
{
"themeList": {
"theme": [
{
"type": "IndividualValueTheme",
"binList": {
"bin": [
{
"value": {
"type": "StringValue",
"value": "B"
},
"style": {
"type": "MapBasicCompositeStyle",
"PointStyle": {
"type": "MapBasicPointStyle",
"MapBasicSymbol": {
"shape": "33",
"color": "blue",
"size": 8,
"type": "MapBasicFontSymbol",
"fontName": "MapInfo Symbols",
"bold": true,
"border": "BORDER",
"dropShadow": true,
"rotation": 0
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "M"
},
"style": {
"type": "MapBasicCompositeStyle",
"PointStyle": {
"type": "MapBasicPointStyle",
"MapBasicSymbol": {
"shape": "34",
"color": "fuchsia",
"size": 8,
"type": "MapBasicFontSymbol",
"fontName": "MapInfo Symbols",
"bold": true,
"border": "BORDER",
"dropShadow": true,
"rotation": 0
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "R"
},
"style": {
"type": "MapBasicCompositeStyle",
"PointStyle": {
"type": "MapBasicPointStyle",
"MapBasicSymbol": {
"shape": "35",
"color": "olive",
"size": 8,
"type": "MapBasicFontSymbol",
"fontName": "MapInfo Symbols",
"bold": true,
"border": "BORDER",
"dropShadow": true,
"rotation": 0
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "V"
},
"style": {
"type": "MapBasicCompositeStyle",
"PointStyle": {
"type": "MapBasicPointStyle",
"MapBasicSymbol": {
"shape": "36",
"color": "green",
"size": 8,
"type": "MapBasicFontSymbol",
"fontName": "MapInfo Symbols",
"bold": true,
"border": "BORDER",
"dropShadow": true,
"rotation": 0
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "X"
},
"style": {
"type": "MapBasicCompositeStyle",
"PointStyle": {
"type": "MapBasicPointStyle",
"MapBasicSymbol": {
"shape": "37",
"color": "gray",
"size": 8,
"type": "MapBasicFontSymbol",
"fontName": "MapInfo Symbols",
"bold": true,
"border": "BORDER",
"dropShadow": true,
"rotation": 0
}
}
}
}
]
},
"expression": "prop_type",
"numericNull": 0,
"allowEmptyString": false,
"applyStylePart": "ALL"
}
]
}
}
]
}Response
Polygon Layer
Showing buildings by building type using named CSS colors.
Request (POST)
curl --location 'https://api.cloud.precisely.com/v1/spatial/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=37.78662956646336823%2C-122.2745967175037549%2C37.81410536165775227%2C-122.2403683391127061&CRS=EPSG%3A4326&WIDTH=1062&HEIGHT=853&LAYERS=buildings&STYLES=&FORMAT=image%2Fpng&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi%3A96&TRANSPARENT=TRUE'\
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'SLD_BODY=%7B%22styleDetails%22%3A%20%5B%7B%22themeList%22%3A%20%7B%22theme%22%3A%20%5B%7B%22type%22%3A%20%22IndividualValueTheme%22%2C%22binList%22%3A%20%7B%22bin%22%3A%20%5B%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22B%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22AreaStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicAreaStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%220%22%2C%22unit%22%3A%20%22PIXEL%22%7D%2C%22MapBasicBrush%22%3A%20%7B%22pattern%22%3A%202%2C%22foregroundColor%22%3A%20%22blue%22%2C%22backgroundColor%22%3A%20%2213954320%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22M%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22AreaStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicAreaStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%220%22%2C%22unit%22%3A%20%22PIXEL%22%7D%2C%22MapBasicBrush%22%3A%20%7B%22pattern%22%3A%202%2C%22foregroundColor%22%3A%20%22fuchsia%22%2C%22backgroundColor%22%3A%20%2213954320%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22R%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22AreaStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicAreaStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%220%22%2C%22unit%22%3A%20%22PIXEL%22%7D%2C%22MapBasicBrush%22%3A%20%7B%22pattern%22%3A%202%2C%22foregroundColor%22%3A%20%22olive%22%2C%22backgroundColor%22%3A%20%2213954320%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22X%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22AreaStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicAreaStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%220%22%2C%22unit%22%3A%20%22PIXEL%22%7D%2C%22MapBasicBrush%22%3A%20%7B%22pattern%22%3A%202%2C%22foregroundColor%22%3A%20%22gray%22%2C%22backgroundColor%22%3A%20%2213954320%22%7D%7D%7D%7D%5D%7D%2C%22expression%22%3A%20%22bldgtype%22%2C%22numericNull%22%3A%200%2C%22allowEmptyString%22%3A%20false%2C%22applyStylePart%22%3A%20%22ALL%22%7D%5D%7D%7D%5D%7D'JSON Body
{
"styleDetails": [
{
"themeList": {
"theme": [
{
"type": "IndividualValueTheme",
"binList": {
"bin": [
{
"value": {
"type": "StringValue",
"value": "B"
},
"style": {
"type": "MapBasicCompositeStyle",
"AreaStyle": {
"type": "MapBasicAreaStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "0",
"unit": "PIXEL"
},
"MapBasicBrush": {
"pattern": 2,
"foregroundColor": "blue",
"backgroundColor": 13954320
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "M"
},
"style": {
"type": "MapBasicCompositeStyle",
"AreaStyle": {
"type": "MapBasicAreaStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "0",
"unit": "PIXEL"
},
"MapBasicBrush": {
"pattern": 2,
"foregroundColor": "fuchsia",
"backgroundColor": 13954320
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "R"
},
"style": {
"type": "MapBasicCompositeStyle",
"AreaStyle": {
"type": "MapBasicAreaStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "0",
"unit": "PIXEL"
},
"MapBasicBrush": {
"pattern": 2,
"foregroundColor": "olive",
"backgroundColor": 13954320
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "X"
},
"style": {
"type": "MapBasicCompositeStyle",
"AreaStyle": {
"type": "MapBasicAreaStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "0",
"unit": "PIXEL"
},
"MapBasicBrush": {
"pattern": 2,
"foregroundColor": "gray",
"backgroundColor": 13954320
}
}
}
}
]
},
"expression": "bldgtype",
"numericNull": 0,
"allowEmptyString": false,
"applyStylePart": "ALL"
}
]
}
}
]
}Response
Line Layer
Showing hurricane lines by stage over southern Florida
Request (GET)
https://api.cloud.precisely.com/v1/spatial/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-9286150.467678617686%2C2948856.50787251303%2C-8859178.058591626585%2C3325928.686222711112&CRS=EPSG%3A3857&WIDTH=984&HEIGHT=869&LAYERS=historical_weather_hurricanelines_world&STYLES=&FORMAT=image%2Fpng&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi%3A96&TRANSPARENT=TRUE
HTTP/1.1&SLD_BODY=%7B%22styleDetails%22%3A%20%5B%7B%22themeList%22%3A%20%7B%22theme%22%3A%20%5B%7B%22type%22%3A%20%22IndividualValueTheme%22%2C%22binList%22%3A%20%7B%22bin%22%3A%20%5B%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Tropical%20Storm%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%28200%2C0%2C0%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Hurricane%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%202%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%280%2C150%2C0%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Extratropical%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%205%2C%22pattern%22%3A%203%2C%22color%22%3A%20%22rgb%280%2C0%2C150%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Disturbance%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%2899%2C27%2C112%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Tropical%20Depression%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%28194%2C112%2C6%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%2C%7B%22value%22%3A%20%7B%22type%22%3A%20%22StringValue%22%2C%22value%22%3A%20%22Unknown%22%7D%2C%22style%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%28200%2C200%2C200%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%7D%5D%7D%2C%22allOthers%22%3A%20%7B%22type%22%3A%20%22MapBasicCompositeStyle%22%2C%22LineStyle%22%3A%20%7B%22type%22%3A%20%22MapBasicLineStyle%22%2C%22MapBasicPen%22%3A%20%7B%22width%22%3A%201%2C%22pattern%22%3A%202%2C%22color%22%3A%20%22rgb%280%2C0%2C0%29%22%2C%22unit%22%3A%20%22PIXEL%22%7D%7D%7D%2C%22applyStylePart%22%3A%20%22ALL%22%2C%22expression%22%3A%20%22stage%22%7D%5D%7D%7D%5D%7DJSON Body
{
"styleDetails": [
{
"themeList": {
"theme": [
{
"type": "IndividualValueTheme",
"binList": {
"bin": [
{
"value": {
"type": "StringValue",
"value": "Tropical Storm"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "rgb(200,0,0)",
"unit": "PIXEL"
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "Hurricane"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 2,
"pattern": 2,
"color": "rgb(0,150,0)",
"unit": "PIXEL"
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "Extratropical"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 5,
"pattern": 3,
"color": "rgb(0,0,150)",
"unit": "PIXEL"
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "Disturbance"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "rgb(99,27,112)",
"unit": "PIXEL"
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "Tropical Depression"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "rgb(194,112,6)",
"unit": "PIXEL"
}
}
}
},
{
"value": {
"type": "StringValue",
"value": "Unknown"
},
"style": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "rgb(200,200,200)",
"unit": "PIXEL"
}
}
}
}
],
"allOthers": {
"type": "MapBasicCompositeStyle",
"LineStyle": {
"type": "MapBasicLineStyle",
"MapBasicPen": {
"width": 1,
"pattern": 2,
"color": "rgb(0,0,0)",
"unit": "PIXEL"
}
}
}
},
"applyStylePart": "ALL",
"expression": "stage"
}
]
}
}
]
}Response