Stylesspecdraftimplcandidate
Publish styles.
Scope
Clients can discover, access, use, and update styles in the following stylesheet encodings:
- Mapbox/MapLibre Style
- OGC SLD 1.0
- OGC SLD 1.1
- QGIS QML
- ArcGIS Desktop (lyr)
- ArcGIS Pro (lyrx)
- 3D Tiles Styling
Styles available as Mapbox/MapLibre Style can be used by ldproxy to render features and vector tiles where MapLibre is used as the map client. Styles available as 3D Tiles Styling can be used by ldproxy to render features and vector tiles where Cesium is used as the map client. See defaultStyle
in HTML, and style
in Features HTML and Tiles.
Limitations
All encodings of a style must be created and maintained separately. The on-the-fly derivation of a stylesheet in another stylesheet encoding is not supported.
The following limitations apply for the stylesheet encodings:
- Mapbox/MapLibre Style: The stylesheets are parsed into an internal Java object. Not all structures are
supported or validated:- Only a single sprite is supported.
- Terrain is not supported.
- Text strings (e.g., color values) are not validated.
filter
,layout
andpaint
values are not validated.- Interpolate expressions are only supported in
layout
andpaint
values. - Sources:
volatile
is not supported. - Vector sources:
promoteId
is not supported.
- 3D Tiles Styling: The stylesheets are parsed into an internal Java object. Text strings in
the JSON are not validated. Thedefines
key is not supported. - OGC SLD 1.0/1.1: The content of these stylesheets is validated against the XML Schema.
- QGIS QML, ArcGIS Pro (lyrx), ArcGIS Desktop (lyr): The content of these stylesheets is not validated.
Conformance Classes
This module implements requirements of the conformance classes Core, Manage Styles, Validation of styles, Resources, Manage resources, Mapbox Style, OGC SLD 1.0, OGC SLD 1.1, HTML and Style information from the draft specification OGC API - Styles. The implementation is subject to change in the course of the development and approval process of the draft.
Operations
Resource | Path | Methods | Media Types | Description |
---|---|---|---|---|
Styles | styles | GET | HTML, JSON | This operation fetches the list of styles. For each style the id, a title, links to the stylesheet of the style in each supported encoding, and the link to the metadata is provided. |
Style | styles/{styleId} | GET | 3D Tiles Declarative Styling, ArcGIS, ArcGIS Pro, HTML, Mapbox, QGIS, SLD 1.0, SLD 1.1 | This operation fetches the list of styles. For each style the id, a title, links to the stylesheet of the style in each supported encoding, and the link to the metadata is provided. |
Style Metadata | styles/{styleId}/metadata | GET | HTML, JSON | Style metadata is essential information about a style in order to support users to discover and select styles for rendering their data and for visual style editors to create user interfaces for editing a style. This operations returns the metadata for the requested style as a single document. The stylesheet of the style will typically include some the metadata, too. |
Collection Styles | collections/{collectionId}/styles | GET | HTML, JSON | This operation fetches the list of styles. For each style the id, a title, links to the stylesheet of the style in each supported encoding, and the link to the metadata is provided. |
Collection Style | collections/{collectionId}/styles/{styleId} | GET | 3D Tiles Declarative Styling, ArcGIS, ArcGIS Pro, HTML, Mapbox, QGIS, SLD 1.0, SLD 1.1 | Fetches the style with identifier styleId . The set of available styles can be retrieved at /styles . Not all styles are available in all style encodings. |
Collection Style Metadata | collections/{collectionId}/styles/{styleId}/metadata" | GET | HTML, JSON | Style metadata is essential information about a style in order to support users to discover and select styles for rendering their data and for visual style editors to create user interfaces for editing a style. This operations returns the metadata for the requested style as a single document. The stylesheet of the style will typically include some the metadata, too. |
Styles, Style | styles, styles/{styleId} | DELETE, POST, PUT | 3D Tiles Declarative Styling, ArcGIS, ArcGIS Pro, HTML, Mapbox, QGIS, SLD 1.0, SLD 1.1 | Create, Replace and Delete styles. |
Style Metadata | styles/{styleId}/metadata | PATCH, PUT | HTML, JSON | Update style metadata. |
Collection Styles, Collection Style | collection/{collectionId}/styles, collection/{collectionId}/styles/{styleId} | DELETE, POST, PUT | 3D Tiles Declarative Styling, ArcGIS, ArcGIS Pro, HTML, Mapbox, QGIS, SLD 1.0, SLD 1.1 | Create, Replace and Delete styles of a feature collection. |
Collection Style Metadata | collection/{collectionId}/styles/{styleId}/metadata | PATCH, PUT | HTML, JSON | Update style metadata of style for a feature collection. |
Path Parameters
Name | Resources | Description |
---|---|---|
collectionId | Styles, Style, Style Metadata | The identifier of the feature collection. |
styleId | Style, Style Metadata, Collection Style, Collection Style Metadata | The local identifier of the resource. |
Query Parameters
Name | Resources | Description |
---|---|---|
f | Styles | Select the output format of the response. If no value is provided, the standard HTTP rules apply, i.e., the "Accept" header will be used to determine the format. |
f | Style | Select the output format of the response. If no value is provided, the standard HTTP rules apply, i.e., the "Accept" header will be used to determine the format. |
dry-run | Styles, Style, Style Metadata, Collection Styles, Collection Style, Collection Style Metadata | If set to 'true', the operation just validates the content without creating a new style or updating an existing style. |
Configuration
Storage
- MapLibre stylesheets reside under the relative path
styles/{apiId}/{styleId}.mbs
in
the data directory (old) or in the Store (new) as values with typemaplibre-styles
and path{apiId}/{styleId}
. In the latter case the extensionmbs
is
still supported, but preferably stylesheets are stored as plain YAML or JSON files. The URIs (Sprites,
Glyphs, Source.url, Source.tiles) used in MapLibre styles links might contain{serviceUrl}
. - 3d Tiles stylesheets reside under the relative path
styles/{apiId}/{styleId}.3dtiles
in
the data directory (old) or in the Store (new) as values with type3dtiles-styles
and path{apiId}/{styleId}
. In the latter case the extension3dtiles
is still supported, but preferably stylesheets are stored as plain YAML or JSON files. - Other stylesheets reside under the relative path
styles/{apiId}/{styleId}.{ext}
in
the data directory (old) or in the Store (new) as resources with typeother-styles
and path{apiId}/{styleId}.{ext}
.
The file extension{ext}
must have the following value depending on the style encoding:- OGC SLD 1.0:
sld10
- OGC SLD 1.1:
sld11
- QGIS QML:
qml
- ArcGIS Desktop:
lyr
- ArcGIS Pro:
lyrx
- OGC SLD 1.0:
- Style metadata reside under the relative path
styles/{apiId}/{styleId}.metadata
in
the data directory (old) or in the Store (new) as resources with typeother-styles
and path{apiId}/{styleId}.metadata
. Links
might be templates (by settingtemplated
totrue
) containing{serviceUrl}
.
Deprecated, the support for style metadata will be removed in v4.
Layer Control
The layer control dialog in the webmap is activated via the webmapWithLayerControl
option (see 'Options' below).
The dialog can be configured in the MapLibre style metadata (member ldproxy:layerControl
). On the top level there are the following JSON members:
onlyLegend
(Boolean, default: false): Withtrue
only the groups and layers with the symbols are displayed without the possibility to deactivate layers.opened
(Boolean, default: false): Iftrue
is set, the layer selection dialog will be displayed open when the map is loaded.entries
(default: one merge group per source layer in the vector tiles): The configuration of the groups and layers as described below.
In entries
the following items allowed:
- The
id
of a MapLibre layer in the style (string). The layer is displayed in the dialog with theid
as name. The symbol of the layer is created without specifying attributes or a particular zoom layer. - A layer object.
id
is theid
of the MapLibre layer in the style (string, mandatory).label
is the name of the layer in the dialog (string, default:id
).zoom
is the zoom level to use when creating symbols (number, default: none).properties
are attributes (object, default{}
) to be used during symbol generation. - A group object.
type
is always "group".id
is anid
of the group (string, mandatory).label
is the name of the group in the dialog (string, default:id
). WithonlyLegend
the possibility to disable layers can be disabled for the group (Boolean, default:false
).entries
can contain layers (objects or string), groups or merge groups (array, default:[]
). - A radio group object. It may only occur on the top level of entries. Only exactly one entry can be selected from the group, e.g. for the selection of a basemap.
type
is always "radio-group".id
,label
have the same effect as for normal groups.entries
can only contain layers (objects or string) (array, default:[]
). - A merge group object.
type
is always "merge-group". A merge group is a group whereentries
may only contain layers (objects or string) (array, default:[]
); these entries are not displayed as subentries in the dialog, but a symbol is created from all layers together. Instead of specifyingentries
,source-layer
(string, default: none) can be specified alternatively; in this case, all layers with this source layer become entries.
For an example, see below.
Options
Name | Default | Description | Type | Since |
---|---|---|---|---|
buildingBlock | Always STYLES . | string | v3.1 | |
extensionType | Deprecated See buildingBlock . | string | v3.1 | |
enabled | false | Enable the building block? | boolean | v3.1 |
caching | {} | Sets fixed values for HTTP Caching Headers for the resources. | object | v3.1 |
styleEncodings | [ "Mapbox", "HTML" ] | List of enabled stylesheet encodings. Supported are Mapbox/MapLibre Style ( Mapbox ), OGC SLD 1.0 (SLD10 ), OGC SLD 1.1 (SLD11 ), QGIS QML ("QML"), ArcGIS Layer ("lyr" und "lyrx"), 3D Tiles ("3D Tiles") and HTML (HTML ). HTML is an output only encoding for web maps that requires a Mapbox/MapLibre Style stylesheet. For details see conformance classes Mapbox Style, OGC SLD 1.0, OGC SLD 1.1 und HTML. Upcoming change Currently there is no way to disable the defaults Mapbox and HTML . That will be changed in v4, you will then have to repeat the defaults if you want to add additional encodings. | array | v3.1 |
managerEnabled | false | Option to manage styles using POST, PUT and DELETE. If styleInfosOnCollection is enabled, style information may be created and updated using PATCH. Siehe die Konformitätsklasse "Manage styles". | boolean | v3.1 |
validationEnabled | false | Option to validate styles when using POST and PUT by setting the query parameter validate . For details see conformance class Validation of styles. | boolean | v3.1 |
useIdFromStylesheet | boolean | v3.1 | ||
resourcesEnabled | false | Deprecated See enabled in Modul Resources. | boolean | v3.1 |
resourceManagerEnabled | false | Deprecated See managerEnabled in Modul Resources. | boolean | v3.1 |
defaultStyle | null | Deprecated See defaultStyle in Modul HTML. | string | v3.1 |
deriveCollectionStyles | false | Only applies to styles in Mapbox Style format. Controls whether the styles at the collection level should be derived from the styles in the parent style collection. The prerequisite is that the name of the source in the stylesheet corresponds to {apiId} and the name of the source-layer corresponds to {collectionId} . If a style is to be used for displaying features in the FEATURES_HTML module, the option should be enabled. | boolean | v3.1 |
webmapWithPopup | true | Option to support popups in web maps for Mapbox Style styles that show attributes for the top-most object. | boolean | v3.1 |
webmapWithLayerControl | false | Option to support layer controls in web maps for Mapbox Style styles. Allows to collectively enable and disable all layers for a certain feature collection. | boolean | v3.1 |
layerControlAllLayers | false | Option to support layer controls for additional layers like background maps. Requires webmapWithLayerControl: true . | boolean | v3.1 |
Examples
Example of the specifications in the configuration file:
- buildingBlock: STYLES
enabled: true
styleEncodings:
- Mapbox
- HTML
deriveCollectionStyles: true
managerEnabled: false
validationEnabled: false
webmapWithLayerControl: true
Example MapLibre stylesheet with layer control options
{
"bearing": 0.0,
"version": 8,
"pitch": 0.0,
"name": "topographic",
"center": [36.1033, 32.6264],
"zoom": 12.241790506353492,
"metadata": {
"ldproxy:layerControl": {
"opened": true,
"entries": [
{
"id": "Basemap",
"type": "radio-group",
"entries": ["Grey Background", "OSM"]
},
{
"id" : "Agriculture (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "AgricultureSrf"
},
{
"id" : "Cultural (Points)",
"type" : "merge-group" ,
"sourceLayer": "CulturePnt"
},
{
"id" : "Cultural (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "CultureSrf"
},
{
"id" : "Facility (Points)",
"type" : "merge-group" ,
"sourceLayer": "FacilityPnt"
},
{
"id" : "Hydrography (Curves)",
"type" : "merge-group" ,
"sourceLayer": "HydrographyCrv"
},
{
"id" : "Hydrography (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "HydrographySrf"
},
{
"id" : "Military (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "MilitarySrf"
},
{
"id" : "Settlement (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "SettlementSrf"
},
{
"id" : "Structure (Points)",
"type" : "merge-group" ,
"sourceLayer": "StructurePnt"
},
{
"id": "Transportation - Ground (Curves)",
"type": "group",
"entries": [
{
"id": "National Road",
"type": "merge-group",
"entries": [
{"id": "transportationgroundcrv.3", "zoom": 8},
{"id": "transportationgroundcrv.4", "zoom": 8}
]
},
{
"id": "Secondary Road",
"type": "merge-group",
"entries": [
{"id": "transportationgroundcrv.5", "zoom": 8},
{"id": "transportationgroundcrv.6", "zoom": 8}
]
},
{
"id": "Local Road",
"type": "merge-group",
"entries": [
{"id": "transportationgroundcrv.7", "zoom": 8},
{"id": "transportationgroundcrv.8", "zoom": 8}
]
},
{
"id": "Bridge",
"type": "merge-group",
"entries": [
{"id": "transportationgroundcrv.0a", "zoom": 8},
{"id": "transportationgroundcrv.0b", "zoom": 8}
]
},
{
"id": "Railway",
"type": "merge-group",
"entries": ["transportationgroundcrv.1", "transportationgroundcrv.2"]
},
{ "id": "Name", "type": "merge-group", "entries": ["transportationgroundcrv.9"] }
]
},
{
"id" : "Utility Infrastructure (Points)",
"type" : "merge-group" ,
"sourceLayer": "UtilityInfrastructurePnt"
},
{
"id" : "Utility Infrastructure (Curves)",
"type" : "merge-group" ,
"sourceLayer": "UtilityInfrastructureCrv"
},
{
"id" : "Vegetation (Surfaces)",
"type" : "merge-group" ,
"sourceLayer": "VegetationSrf"
}
]
}
},
"sources": {
"daraa": {
"type": "vector",
"tiles": ["{serviceUrl}/tiles/WebMercatorQuad/{z}/{y}/{x}?f=mvt"],
"maxzoom": 16
},
"osm": {
"type": "raster",
"tiles": [
"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png",
"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png",
"https://c.tile.openstreetmap.org/{z}/{x}/{y}.png"
],
"tileSize": 256,
"attribution": "©<a href=\"http://osm.org/copyright\"> OpenStreetMap</a>contributors"
}
},
"sprite": "{serviceUrl}/resources/sprites",
"glyphs": "https://go-spatial.github.io/carto-assets/fonts/{fontstack}/{range}.pbf",
"layers": [
{
"id": "Grey Background",
"type": "background",
"layout": {"visibility": "visible"},
"paint": {"background-color": "#d3d3d3"}
},
{
"id": "OSM",
"type": "raster",
"source": "osm",
"layout": {"visibility": "none"}
},
{
"type": "fill",
"source-layer": "AgricultureSrf",
"paint": {"fill-color": "#7ac5a5"},
"id": "agriculturesrf",
"source": "daraa"
},
{
"type": "fill",
"source-layer": "VegetationSrf",
"paint": {"fill-color": "#C2E4B9"},
"id": "vegetationsrf",
"source": "daraa"
},
{
"type": "line",
"source-layer": "SettlementSrf",
"paint": {"line-color": "#000000", "line-width": 2},
"id": "settlementsrf.1",
"source": "daraa"
},
{
"type": "fill",
"source-layer": "SettlementSrf",
"paint": {"fill-color": "#E8C3B2"},
"id": "settlementsrf.2",
"source": "daraa"
},
{
"type": "fill",
"source-layer": "MilitarySrf",
"paint": {"fill-color": "#f3602f", "fill-opacity": 0.5},
"id": "militarysrf",
"source": "daraa"
},
{
"type": "fill",
"source-layer": "CultureSrf",
"paint": {"fill-color": "#ab92d2", "fill-opacity": 0.5},
"id": "culturesrf",
"source": "daraa"
},
{
"type": "line",
"source-layer": "HydrographyCrv",
"filter": [ "==", "BH140", ["get", "F_CODE"] ],
"paint": {
"line-color": "#00A0C6",
"line-width": [ "step", ["zoom"], 1, 8, 2, 13, 4 ]
},
"id": "hydrographycrv",
"source": "daraa"
},
{
"type": "fill",
"source-layer": "HydrographySrf",
"filter": [ "==", "BH082", ["get", "F_CODE"] ],
"paint": {"fill-color": "#B0E1ED", "fill-outline-color": "#00A0C6"},
"id": "hydrographysrf",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AN010", ["get", "F_CODE"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {"line-color": "#404040", "line-width": 4},
"id": "transportationgroundcrv.1",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AN010", ["get", "F_CODE"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#ffffff",
"line-dasharray": [6, 6],
"line-width": 2
},
"id": "transportationgroundcrv.2",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AQ040", ["get", "F_CODE"] ],
[ "==", 13, ["get", "TRS"] ]
],
"layout": {"line-join": "round"},
"paint": {
"line-color": "#000000",
"line-width": [ "step", ["zoom"], 1, 8, 9, 13, 20 ]
},
"id": "transportationgroundcrv.0a",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AQ040", ["get", "F_CODE"] ],
[ "==", 13, ["get", "TRS"] ]
],
"layout": {"line-join": "round"},
"paint": {
"line-color": "#ffffff",
"line-width": [ "step", ["zoom"], 1, 8, 6, 13, 14 ]
},
"id": "transportationgroundcrv.0b",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 3, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#000000",
"line-width": [ "step", ["zoom"], 1, 8, 5, 13, 12 ]
},
"id": "transportationgroundcrv.3",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 4, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#000000",
"line-width": [ "step", ["zoom"], 1, 8, 5, 13, 12 ]
},
"id": "transportationgroundcrv.5",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 5, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#000000",
"line-width": [ "step", ["zoom"], 1, 8, 3.5, 13, 9 ]
},
"id": "transportationgroundcrv.7",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 5, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#ffffff",
"line-width": [ "step", ["zoom"], 1, 8, 2, 13, 6 ]
},
"id": "transportationgroundcrv.8",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 4, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#cb171a",
"line-width": [ "step", ["zoom"], 1, 8, 3, 13, 8 ]
},
"id": "transportationgroundcrv.6",
"source": "daraa"
},
{
"type": "line",
"source-layer": "TransportationGroundCrv",
"filter": [
"all",
[ "==", "AP030", ["get", "F_CODE"] ],
[ "==", 3, ["get", "RIN_ROI"] ]
],
"layout": {"line-join": "round", "line-cap": "round"},
"paint": {
"line-color": "#ff0000",
"line-width": [ "step", ["zoom"], 1, 8, 3, 13, 8 ]
},
"id": "transportationgroundcrv.4",
"source": "daraa"
},
{
"type": "symbol",
"source-layer": "TransportationGroundCrv",
"filter": [ "!=", "No Information", ["get", "ZI005_FNA"] ],
"layout": {
"text-field": "{ZI005_FNA}",
"text-size": 10,
"text-font": ["Metropolis Bold"],
"symbol-placement": "line"
},
"paint": {
"text-halo-color": "#ffffff",
"text-halo-width": 2,
"text-color": "#000000"
},
"id": "transportationgroundcrv.9",
"source": "daraa"
},
{
"type": "line",
"source-layer": "UtilityInfrastructureCrv",
"filter": [ "==", "AT005", ["get", "F_CODE"] ],
"paint": {
"line-color": "#473895",
"line-width": [ "step", ["zoom"], 1, 8, 1, 13, 4 ]
},
"id": "utilityinfrastructurecrv",
"source": "daraa"
},
{
"type": "symbol",
"source-layer": "CulturePnt",
"layout": {"icon-image": "mosque_b", "icon-size": 0.4},
"paint": {"icon-opacity": 1},
"id": "culturepnt",
"source": "daraa"
},
{
"type": "symbol",
"source-layer": "StructurePnt",
"filter": [ "!=", "No Information", ["get", "ZI005_FNA"] ],
"layout": {
"icon-image": "square",
"icon-size": 0.15,
"text-field": "{ZI005_FNA}",
"text-size": 14,
"text-offset": [0, 1.5],
"text-font": ["Metropolis Bold"]
},
"paint": {
"icon-opacity": 1,
"text-halo-color": "#ffffff",
"text-halo-width": 2,
"text-color": "#000000"
},
"id": "structurepnt",
"source": "daraa"
},
{
"type": "circle",
"source-layer": "UtilityInfrastructurePnt",
"paint": {
"circle-radius": 3,
"circle-opacity": 0.5,
"circle-stroke-color": "#000000",
"circle-stroke-width": 1,
"circle-color": "#ffffff"
},
"id": "utilityinfrastructurepnt",
"source": "daraa"
},
{
"type": "symbol",
"source-layer": "FacilityPnt",
"layout": {"icon-image": "circle_b", "icon-size": 0.2},
"paint": {"icon-opacity": 1},
"id": "facilitypnt",
"source": "daraa"
}
]
}
Example style information file
{
"title" : "topographic",
"links" : [ {
"rel" : "self",
"type" : "application/json",
"title" : "This document",
"href" : "https://demo.ldproxy.net/daraa/styles/topographic/metadata?f=json"
}, {
"rel" : "alternate",
"type" : "text/html",
"title" : "This document as HTML",
"href" : "https://demo.ldproxy.net/daraa/styles/topographic/metadata?f=html"
} ],
"id" : "topographic",
"scope" : "style",
"stylesheets" : [ {
"title" : "Mapbox",
"version" : "8",
"specification" : "https://docs.mapbox.com/mapbox-gl-js/style-spec/",
"native" : true,
"link" : {
"rel" : "stylesheet",
"type" : "application/vnd.mapbox.style+json",
"title" : "Style in format 'Mapbox'",
"href" : "https://demo.ldproxy.net/daraa/styles/topographic?f=mbs"
}
} ],
"layers" : [ {
"id" : "background"
}, {
"id" : "agriculturesrf",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/AgricultureSrf/items"
}
}, {
"id" : "vegetationsrf",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/VegetationSrf/items"
}
}, {
"id" : "settlementsrf.1",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/SettlementSrf/items"
}
}, {
"id" : "settlementsrf.2",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/SettlementSrf/items"
}
}, {
"id" : "militarysrf",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/MilitarySrf/items"
}
}, {
"id" : "culturesrf",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/CultureSrf/items"
}
}, {
"id" : "hydrographycrv",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/HydrographyCrv/items"
}
}, {
"id" : "hydrographysrf",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/HydrographySrf/items"
}
}, {
"id" : "transportationgroundcrv.0a",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.0b",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.1",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.2",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.3",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.4",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.5",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.6",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.7",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.8",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "transportationgroundcrv.9",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/TransportationGroundCrv/items"
}
}, {
"id" : "utilityinfrastructurecrv",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/UtilityInfrastructureCrv/items"
}
}, {
"id" : "culturepnt",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/CulturePnt/items"
}
}, {
"id" : "structurepnt",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/StructurePnt/items"
}
}, {
"id" : "utilityinfrastructurepnt",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/UtilityInfrastructurePnt/items"
}
}, {
"id" : "facilitypnt",
"type" : "geometry",
"sampleData" : {
"rel" : "start",
"href" : "https://demo.ldproxy.net/daraa/collections/FacilityPnt/items"
}
} ]
}