diff --git a/packages/schema/src/schema/project/layers/heatmapLayer.json b/packages/schema/src/schema/project/layers/heatmapLayer.json index 9b654d788..7942c2c52 100644 --- a/packages/schema/src/schema/project/layers/heatmapLayer.json +++ b/packages/schema/src/schema/project/layers/heatmapLayer.json @@ -11,7 +11,7 @@ }, "opacity": { "type": "number", - "description": "The opacity of the source", + "description": "The opacity of the layer", "default": 1, "multipleOf": 0.1, "minimum": 0, diff --git a/packages/schema/src/schema/project/layers/imageLayer.json b/packages/schema/src/schema/project/layers/imageLayer.json index 39ac323f5..51e71219e 100644 --- a/packages/schema/src/schema/project/layers/imageLayer.json +++ b/packages/schema/src/schema/project/layers/imageLayer.json @@ -11,7 +11,7 @@ }, "opacity": { "type": "number", - "description": "The opacity of the source", + "description": "The opacity of the layer", "default": 1, "multipleOf": 0.1, "minimum": 0, diff --git a/packages/schema/src/schema/project/layers/rasterLayer.json b/packages/schema/src/schema/project/layers/rasterLayer.json index c42509cba..bee350a8f 100644 --- a/packages/schema/src/schema/project/layers/rasterLayer.json +++ b/packages/schema/src/schema/project/layers/rasterLayer.json @@ -11,7 +11,7 @@ }, "opacity": { "type": "number", - "description": "The opacity of the source", + "description": "The opacity of the layer", "default": 1, "multipleOf": 0.1, "minimum": 0, diff --git a/packages/schema/src/schema/project/layers/symbology/geoTiffMultiBand.json b/packages/schema/src/schema/project/layers/symbology/geoTiffMultiBand.json new file mode 100644 index 000000000..ba18257d8 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/geoTiffMultiBand.json @@ -0,0 +1,27 @@ +{ + "type": "object", + "description": "The state of the GeoTiff layer's multiband coloring symbology options", + "required": [], + "additionalProperties": false, + "properties": { + "type": { + "const": "Multiband" + }, + "red": { + "type": "string", + "description": "The name of the band used for the red channel." + }, + "green": { + "type": "string", + "description": "The name of the band used for the green channel." + }, + "blue": { + "type": "string", + "description": "The name of the band used for the blue channel." + }, + "alpha": { + "type": "string", + "description": "The name of the band used for the alpha channel." + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/geoTiffSingleBand.json b/packages/schema/src/schema/project/layers/symbology/geoTiffSingleBand.json new file mode 100644 index 000000000..7d704616a --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/geoTiffSingleBand.json @@ -0,0 +1,15 @@ +{ + "type": "object", + "description": "The state of the GeoTiff layer's single band coloring symbology options", + "required": [], + "additionalProperties": false, + "properties": { + "type": { + "const": "Singleband" + }, + "band": { + "type": "string", + "description": "The name of the band used for coloring." + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorCanonicalColor.json b/packages/schema/src/schema/project/layers/symbology/vectorCanonicalColor.json new file mode 100644 index 000000000..0b44c8f4c --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorCanonicalColor.json @@ -0,0 +1,16 @@ +{ + "title": "IVectorCanonicalColor", + "description": "The state of the layer's canonical color symbology options", + "type": "object", + "required": ["selectedAttribute"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Canonical" + }, + "selectedAttribute": { + "type": "string", + "description": "The selected attribute for canonical color mapping" + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorCategorizedColor.json b/packages/schema/src/schema/project/layers/symbology/vectorCategorizedColor.json new file mode 100644 index 000000000..c03fbbc26 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorCategorizedColor.json @@ -0,0 +1,36 @@ +{ + "title": "IVectorCategorizedColor", + "description": "The state of the layer's categorized color symbology options", + "type": "object", + "required": ["selectedAttribute"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Categorized" + }, + "selectedAttribute": { + "type": "string", + "description": "The selected attribute for categorizing the color" + }, + "colorRamp": { + "type": "string", + "default": "cool" + }, + "stopsValues": { + "type": "object", + "description": "The mapping of category values to color values", + "patternProperties": { + ".*": { + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$", + "description": "The hex color value for the category, where the key is the category value" + } + } + }, + "strokeColor": { + "type": "string", + "description": "The color of the stroke for the symbol", + "default": "#ffffff" + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorCategorizedSize.json b/packages/schema/src/schema/project/layers/symbology/vectorCategorizedSize.json new file mode 100644 index 000000000..83210d300 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorCategorizedSize.json @@ -0,0 +1,36 @@ +{ + "title": "IVectorCategorizedSize", + "description": "The state of the layer's categorized size symbology options", + "type": "object", + "required": ["selectedAttribute"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Categorized" + }, + "selectedAttribute": { + "type": "string", + "description": "The selected attribute for categorizing the size" + }, + "stopsValues": { + "type": "object", + "description": "The mapping of category values to size values", + "patternProperties": { + ".*": { + "type": "number", + "description": "The size value in pixels for the category, where the key is the category value" + } + } + }, + "strokeThickness": { + "type": "number", + "description": "The thickness of the stroke in pixels", + "default": 1.25 + }, + "symbolRadius": { + "type": "number", + "description": "The radius of the symbols in pixels", + "default": 1 + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorGraduatedColor.json b/packages/schema/src/schema/project/layers/symbology/vectorGraduatedColor.json new file mode 100644 index 000000000..e23747fa6 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorGraduatedColor.json @@ -0,0 +1,53 @@ +{ + "title": "IVectorGraduatedColor", + "description": "The state of the layer's graduated color symbology options", + "type": "object", + "required": ["selectedAttribute", "colorRamp"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Graduated" + }, + "selectedAttribute": { + "type": "string", + "description": "The selected attribute for varying the color" + }, + "colorRamp": { + "type": "string", + "default": "cool" + }, + "nStops": { + "type": "number", + "description": "The number of segments to use when mapping colors to data values", + "default": 9 + }, + "stopsDistributionMode": { + "type": "string", + "description": "The method of distributing segments when mapping colors to data values", + "default": "equal interval", + "enum": [ + "quantile", + "equal interval", + "jenks", + "pretty", + "logarithmic" + ] + }, + "stopsValues": { + "type": "object", + "description": "The mapping of input data values to color values", + "patternProperties": { + "^[0-9]+$": { + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$", + "description": "The hex color value at the stop index, where the key is the index of the stop" + } + } + }, + "strokeColor": { + "type": "string", + "description": "The color of the stroke for the symbol", + "default": "#ffffff" + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorGraduatedSize.json b/packages/schema/src/schema/project/layers/symbology/vectorGraduatedSize.json new file mode 100644 index 000000000..ac437a774 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorGraduatedSize.json @@ -0,0 +1,48 @@ +{ + "title": "IVectorGraduatedSize", + "description": "The state of the layer's graduated size symbology options", + "type": "object", + "required": ["selectedAttribute"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Graduated" + }, + "selectedAttribute": { + "type": "string", + "description": "The selected attribute for varying the size" + }, + "nStops": { + "type": "number", + "description": "The number of segments to use when mapping size to data values", + "default": 9 + }, + "stopsDistributionMode": { + "type": "string", + "description": "The method of distributing segments when mapping size to data values", + "default": "equal interval", + "enum": [ + "quantile", + "equal interval", + "jenks", + "pretty", + "logarithmic" + ] + }, + "stopsValues": { + "type": "object", + "description": "The mapping of input data values to size values", + "patternProperties": { + "^[0-9]+$": { + "type": "number", + "description": "The size value in pixels at the stop index, where the key is the index of the stop" + } + } + }, + "strokeThickness": { + "type": "number", + "description": "The thickness of the stroke in pixels", + "default": 1.25 + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorHeatmapColor.json b/packages/schema/src/schema/project/layers/symbology/vectorHeatmapColor.json new file mode 100644 index 000000000..ba9f2f6e1 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorHeatmapColor.json @@ -0,0 +1,26 @@ +{ + "title": "IVectorHeatmapColor", + "description": "The state of the layer's heatmap color symbology options", + "type": "object", + "required": ["selectedAttribute", "colorRamp"], + "additionalProperties": false, + "properties": { + "type": { + "const": "Heatmap" + }, + "colorRamp": { + "type": "string", + "default": "cool" + }, + "radius": { + "type": "number", + "description": "The radius of influence for each point in the heatmap", + "default": 20 + }, + "blur": { + "type": "number", + "description": "The blur radius for the heatmap effect", + "default": 15 + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorSimpleColor.json b/packages/schema/src/schema/project/layers/symbology/vectorSimpleColor.json new file mode 100644 index 000000000..98203b836 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorSimpleColor.json @@ -0,0 +1,23 @@ +{ + "title": "IVectorSimpleColor", + "description": "The state of the layer's simple (single symbol) color symbology options", + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "Simple symbol" + }, + "fillColor": { + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$", + "description": "The fill color for the symbol", + "default": "#3388ff" + }, + "strokeColor": { + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$", + "description": "The color of the stroke for the symbol", + "default": "#ffffff" + } + } +} diff --git a/packages/schema/src/schema/project/layers/symbology/vectorSimpleSize.json b/packages/schema/src/schema/project/layers/symbology/vectorSimpleSize.json new file mode 100644 index 000000000..dea69ae00 --- /dev/null +++ b/packages/schema/src/schema/project/layers/symbology/vectorSimpleSize.json @@ -0,0 +1,21 @@ +{ + "title": "IVectorSimpleSize", + "description": "The state of the layer's simple (single symbol) size symbology options", + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "Simple symbol" + }, + "strokeThickness": { + "type": "number", + "description": "The thickness of the stroke in pixels", + "default": 1.25 + }, + "symbolRadius": { + "type": "number", + "description": "The radius of the symbols in pixels", + "default": 5 + } + } +} diff --git a/packages/schema/src/schema/project/layers/vectorLayer.json b/packages/schema/src/schema/project/layers/vectorLayer.json index ad25aae59..01f9fb4a1 100644 --- a/packages/schema/src/schema/project/layers/vectorLayer.json +++ b/packages/schema/src/schema/project/layers/vectorLayer.json @@ -9,55 +9,26 @@ "type": "string", "description": "The id of the source" }, - "color": { - "type": "object", - "description": "The color of the the object" - }, "opacity": { "type": "number", - "description": "The opacity of the the object", + "description": "The opacity of the layer", "default": 1, "multipleOf": 0.1, "minimum": 0, "maximum": 1 }, - "symbologyState": { + "symbology": { "type": "object", - "description": "The state of the symbology panel options", - "required": ["renderType"], + "description": "The user inputs for symbology options", + "additionalProperties": false, "properties": { - "renderType": { - "type": "string", - "enum": ["Single Symbol", "Graduated", "Categorized"] - }, - "value": { - "type": "string" - }, - "method": { - "type": "string", - "enum": ["color", "radius"] - }, - "colorRamp": { - "type": "string", - "default": "cool" - }, - "nClasses": { - "type": "string", - "default": "9" + "color": { + "$ref": "project/layers/symbology/vectorGraduatedColor.json" }, - "mode": { - "type": "string", - "default": "equal interval", - "enum": [ - "quantile", - "equal interval", - "jenks", - "pretty", - "logarithmic" - ] + "size": { + "$ref": "project/layers/symbology/vectorGraduatedSize.json" } - }, - "additionalProperties": false + } } } } diff --git a/packages/schema/src/types.ts b/packages/schema/src/types.ts index c6e2cd86d..16c356ead 100644 --- a/packages/schema/src/types.ts +++ b/packages/schema/src/types.ts @@ -1,3 +1,8 @@ +/* + * A "barrel" file (https://basarat.gitbook.io/typescript/main-1/barrel) making all + * types generated from JSONSchemas in the `schemas` directory available for + * import. + */ export * from './_interface/project/jgis'; // Sources @@ -21,6 +26,22 @@ export * from './_interface/project/layers/stacLayer'; export * from './_interface/project/layers/vectorTileLayer'; export * from './_interface/project/layers/webGlLayer'; +// Symbology +// Use namespaced exports to avoid duplicate interface exports when $ref schemas +// are inlined by json-schema-to-typescript. This can be removed once +// https://github.com/bcherny/json-schema-to-typescript/pull/662 is merged. +export * as SymbologyVectorSimpleColor from './_interface/project/layers/symbology/vectorSimpleColor'; +export * as SymbologyVectorSimpleSize from './_interface/project/layers/symbology/vectorSimpleSize'; +export * as SymbologyVectorGraduatedColor from './_interface/project/layers/symbology/vectorGraduatedColor'; +export * as SymbologyVectorGraduatedSize from './_interface/project/layers/symbology/vectorGraduatedSize'; +export * as SymbologyVectorCategorizedColor from './_interface/project/layers/symbology/vectorCategorizedColor'; +export * as SymbologyVectorCategorizedSize from './_interface/project/layers/symbology/vectorCategorizedSize'; +export * as SymbologyVectorCanonicalColor from './_interface/project/layers/symbology/vectorCanonicalColor'; +export * as SymbologyVectorHeatmapColor from './_interface/project/layers/symbology/vectorHeatmapColor'; +export * as SymbologyGeoTiffSingleBand from './_interface/project/layers/symbology/geoTiffSingleBand'; +export * as SymbologyGeoTiffMultiBand from './_interface/project/layers/symbology/geoTiffMultiBand'; + + // Processing export * from './processing/_generated/exportProcessingSchema'; @@ -28,6 +49,7 @@ export * from './processing/_generated/exportProcessingSchema'; export * from './_interface/export/exportGeoJson'; export * from './_interface/export/exportGeoTiff'; + // Other export * from './doc'; export * from './index';