v0.1 (latest)
Sketch Data
Type: objectA format for transmitting sketches used in the computer-assisted mass appraisal industry. See https://www.opencamadata.org/standards/sketch for details.
No Additional Properties$schema Required
URI to the specific version of the SDS used by this document
configuration Required
A schema to describe configuration values, reference data, and other capabilities that affect the interpretation of a Sketch Data Schema document.
No Additional PropertiesSketch settings establish sketch-wide values that affect how the data is interpreted.
No Additional Properties{
"coordinatePrecision": 1,
"systemOfMeasure": "imperial",
"unitOfMeasure": "feet"
}
coordinatePrecision Required
Precision of sketch coordinates from zero to four decimal places.
Value must be greater or equal to 0 and lesser or equal to 4
systemOfMeasure Required
Must be one of:
- "imperial"
- "metric"
unitOfMeasure Required
Must be one of:
- "feet"
- "meters"
Collection of zero or more capabilities that control how data in a sketch should be interpreted, and how a sketch app might decide which user-facing tools are available to edit a specific SDS document, and more significantly, how to interpret sketches values for application-level correctness.
Sketches may have multiple pages.
No Additional Properties{
"paging": {
"flag": "enabled",
"maximumPageCount": 3
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
featureFlag
Feature flags are used to determine whether a capability of the sketch app that was used to create sketch data was enabled.
Must be one of:
- "enabled"
- "disabled"
Value must be greater or equal to 1
Enables support for outbuildings as a domain
No Additional Properties{
"outbuildings": {
"flag": "enabled",
"associatedDomain": "outbuilding"
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagThe domain used to annotate which segments and lookups are outbuilding.
domain
A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.
Must be one of:
- "unspecified"
- "outbuilding"
Describes the types of arc drawing commands that are possible in an SDS document.
No Additional Properties{
"arcDrawing": {
"flag": "enabled",
"supportedArcTypes": "ANY"
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagMust be one of:
- "ELL"
- "ANY"
Sketches, and the segments in them, are drawn using 'ground' units as specified by the systemOfMeasure and unitOfMeasure settings. Thus, a sketch[].segment[].boundarySize of 50 describes a 50x50 patch of ground or 'boundary'. The purpose of enabling the boundary constraint capability is to logically capture situations where drawing a segment outside of this square is considered incorrect behavior.
{
"boundaryConstraints": {
"flag": "enabled",
"defaultBoundarySize": 90
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagSize of each size of the sketch boundary in 'ground' units. Boundaries can only be square.
Value must be greater or equal to 1
Segments are drawn using the stroke, fill, and text colors of the lookupData.lookups that they are linked to. It is possible to override the drawing style of any individual vector or segment by enabling the colorCustomization capability.
{
"colorCustomization": {
"flag": "enabled"
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagSketch notes appear anyone on a sketch surface independent of a segment. They may have a minimum length of zero so an empty note is perfectly acceptable.
No Additional Properties{
"sketchNotes": {
"flag": "enabled",
"maxNoteLength": 50
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagValue must be greater or equal to 0
Sketches exist on a cartesian plane with a [0,0] origin. The plane has quadrants name according to conventions. The default quadrant for an SDS document is I or the space of +,+ coordinates or bottomLeft. The bottomLeft reflects what the user of a sketching app would interpret as 'the origin is in the bottom-left of my sketch canvas'. The sketchOriginPosition capability can be used to change that default quadrant to topRight (quadrant III) or topLeft (quadrant IV).
{
"sketchOriginPosition": {
"flag": "enabled",
"origin": "bottomLeft"
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagUser-centric language for standard names on the Cartesian plane.
Must be one of:
- "bottomLeft"
- "topLeft"
- "topRight"
- "bottomRight"
Controls whether multiple labels can be associated with segments and vectors.
No Additional Properties{
"multipleLabels": {
"flag": "enabled",
"delimeter": "/"
}
}
flag Required
Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.
Same definition as flagThe character or characters used to delimit multiple labels when rendered together.
Must be at least 1 characters long
Lookup data for regular segments.
Each item of this array must be:
No Additional Properties
name Required
A name for the entire collection of lookup values. If there is only a single LookupData in the Sketch Data, all sketches use that LookupData by default. However, if there is more than one LookupData, sketches can refer to a specific LookupData by setting the value of Sketch.currentSketchLookup to the matching lookupData.name.
Must be at least 1 characters long
domain Required
The domain to which this set of lookups should be applied. For example, if the domain is 'outbuilding' then these lookup values may be applied by any segment having that same domain.
domain
A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.
Same definition as domainlookups Required
Dictionary of lookups tied to this collection of lookupData.
Each additional property must conform to the following schema
Type: objectDetailed values for a single lookup record identified by the parent id key.
A lookup is like a row in a database with a unique key (id) that is used to establish a link to one or more vectors in a sketch.
name Required
Relatively short name value that is commonly, although not always, also used as a label value in sketches, e.g., RESIDENTIAL OFFICE.
Must be at least 1 characters long
Must be at most 50 characters long
Description can be a significantly longer value than the title. It is not typically displayed in a sketch drawing but carries additional data for the CAMA system.
Must be at least 1 characters long
Must be at most 255 characters long
Unique in a single lookupData this is used for sorting the list of lookups in a client application
Value must be greater or equal to 0
Styles are used to draw sketch segments correctly. The styles are linked to segments by the parent id key for a lookup.
Any additional attributes that are needed for the lookup.
attributes
Generic collection of zero or more attributes with a key and value
Same definition as attributesEach item of this array must be:
No Additional Properties
name Required
value Required
rgbHexColor
A three or six character representation of an RGB value in hexadecimal.
Same definition as rgbHexColornoFill
Specific value:
"none" Each item of this array must be:
No Additional Properties
name Required
value Required
rgbHexColor
A three or six character representation of an RGB value in hexadecimal.
Same definition as rgbHexColornoStroke
Specific value:
"none" Each item of this array must be:
No Additional Properties
name Required
value Required
Follows the SVG standard for defining dashed line patterns.
Each item of this array must be:
Each item of this array must be:
No Additional Properties
name Required
value Required
pattern
Defines a pattern using the specified elements and style.
No Additional PropertiesValue must be greater or equal to 0
Value must be greater or equal to 0
Each item of this array must be:
pathElement
No Additional Properties
path Required
Defines a sequence of path commands to draw. This definition follows the SVG standard for path data.
"M100,50 h-150 a150,150 0 1,0 150,-150 z"
"M200,75 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25"
noPattern
Specific value:
"none" sketches Required
Each item of this array must be:
A sketch is a collection of segments and related metadata that can be rendered as a standalone view of all--or part of--an assessable property. Depending on the capabilities of the CAMA system, there may but just one, or multiple sketches in an SDS document.
No Additional Propertiesid Required
The sketch ID must be unique in the collection of sketches
label Required
The sketch label is a name for a sketch that a human can read and understand, e.g., 'Building #1'.
Must be at least 1 characters long
Must be at most 50 characters long
segments Required
A sketch has zero or more segments.
Must contain a minimum of 0 items
Each item of this array must be:
A segment is a logical piece of a sketch. It typically represents a segment of a structure that has characteristics affecting the assessed value of a property. For example, a segment might be a bedroom, or a patio, or an entire section of a large building. Segments are composed of vectors and carry their own summary area and perimeter
No Additional Propertiesid Required
No Additional Properties
position Required
A point with an location in two dimensional space. The units of the coordinate are unspecified, coming instead from the parent sketch.
Same definition as positionValue must be greater or equal to 0 and lesser or equal to 360
Must be one of:
- "centered"
- "overridden"
values Required
Each item of this array must be:
No Additional Properties
lookupCode Required
This should be a valid lookup id key present in the configuration.lookupCollection[].lookupData.lookups in this SDS document.
lookupId
A unique identifier for a lookup, e.g., MH4, ROFFICEA.
Must be at least 1 characters long
Must be at most 20 characters long
text Required
Label text is what is typically displayed on the sketch as the visible text annotating a segment or vector.
Must be at least 1 characters long
Must be at most 255 characters long
No Additional Properties
rgbHexColor
A three or six character representation of an RGB value in hexadecimal.
Must match regular expression:^#([\da-fA-F]{3}){1,2}$ "#ffffff"
"#fff"
noColor
Specific value:
"none" Value must be greater or equal to 0
Must be one of:
- "normal"
- "italic"
fontWeightText
Must be one of:
- "thin"
- "normal"
- "bold"
fontWeightNumber
Must be one of:
- 100
- 200
- 300
- 400
- 500
- 600
- 700
- 800
Follows the SVG standard for defining dashed line patterns.
Same definition as valueA segment is comprised of a collection or one or more vectors
Each item of this array must be:
No Additional Properties
origin Required
The origin point for a drawing command is very similar to the move command in SVG: it's like positioning your pen on the page ready to draw. So the origin is the first coordinate of any subsequent sequence of drawing commands.
point-2d
A point with an location in two dimensional space. The units of the coordinate are unspecified, coming instead from the parent sketch.
Same definition as positioncommands Required
Following the spirit of standards like HTML Canvas and Scalable Vector Graphics (SVG), sketch commands describe how to draw elements on the page rather than describing the geometry itself. For example, rather than define a line as two coordinate pairs (start and end), the line command assumes an existing starting point, and its job is to 'draw a straight line to an end point`.
Each item of this array must be:
styledLine
No Additional Properties
line Required
A line is defined--somewhat paradoxically--using a single 2-dimensional point, which is the ending point of that line. The starting point of the line is either (a) the origin point of the sketch (typically [0,0]) or (b) the origin point for the vector containing the line, or (c) the endpoint of the line immediately proceeding the current line. In other words, if a line defines only it's end point then something else must be defining it's starting point, even if somewhat indirectly.
x Required
y Required
Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.
Same definition as dimensionLabelstyledArc
No Additional Properties
arc Required
A simple two-point arc with a height and direction
No Additional Propertiesh Required
Height of the arc
x Required
y Required
Rotation with respect to the bearing of a line
Must be one of:
- "clockwise"
- "counterclockwise"
Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.
Same definition as dimensionLabelstyledEllipse
No Additional Properties
ellipse Required
Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.
Same definition as dimensionLabelVectors having positive area add their area to the calculated area of the segment to which they belong. Vectors having negative areas subtract from total calculated segment area.
Must be one of:
- "positive"
- "negative"
A vector can be something that is sketched to represent a real-world shape. That is sketched. A vector can also be a placeholder for a real-world structure or segment of a structure. In that case the drawing type does not typically represent the real world thing, e.g., it's a symbol or a square. A placeholder may even have no visual representation at all beyond a label on the sketch.
Must be one of:
- "sketched"
- "placeholder"
Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.
No Additional PropertiesMust be one of:
- "inside"
- "outside"
Showing or hiding something in a sketch is a visual treatment only. The element, such as a dimension or label, is still encoded in the SDS document. It is just not visible in a sketch that a user sees.
Must be one of:
- "visible"
- "hidden"
Areas are alway positive because the way that they are used in calculations depends on their areaType rather than the sign (+/-) of their value.
The boundary for a segment can optionally be set in 'ground units' (see unitsOfMeasure and systemOfMeasure). This has the effect of setting the square of ground within which the segment should be defined. For example, setting boundarySize to 50 if the unitsOfMeasure are feet indicates that the segment should not extend outside of the 50x50 foot square with an origin of [0,0]. Note that this value does have a default but may be ignore if the boundaryConstrainedCapability is disabled in the SDS document configuration settings.
Page on which the item appears. The set of pages in a sketch is determined by collecting a list of unique page numbers in the child objects in that sketch. For example, if there are two values in a sketch of segment[0].page = 1 and segment[1].page = 4 then the sketch will have two pages with non-consecutive page numbers. The same can be true for notes in a sketch: they can in effect 'create' pages by referencing a page number.
Value must be greater or equal to 1
Areas are alway positive because the way that they are used in calculations depends on their areaType rather than the sign (+/-) of their value.
scopedNumber
A value such as area or perimeter that has both an explicit value and a record of how the value was derived.
No Additional PropertiesThe methodology used to create the data held in an attribute. The primary distinction is between data that is computed through a repeatable algorithm, and data that is manually overridden by a human. A typical case would be an area that is automatically calculated by a sketch application vs. a value for an area that is typed by a human because it is considered more relevant to the assessment process.
Must be one of:
- "computed"
- "overridden"
scopedNumber
A value such as area or perimeter that has both an explicit value and a record of how the value was derived.
Same definition as scopedNumberA segment may represent an outbuilding. Downstream consumers may treat these segments differently but the only difference inside the SDS document is that lookups for labeling and styling explicitly coming from the configuration.outbuildingLookups list. So the segment.label.lookupCode value must exist in that lookup data list rather than the regular configuration.lookupData list.
domain
A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.
Same definition as domainEach item of this array must be:
Notes are not associated with segments. They are free-form text positioned on a specific page of a sketch.
No Additional Propertieskeycode Required
Unique code or identifier representing the note within a sketch. By convention it takes the form 'page#/note#', e.g., '0/1' but it can be any string value.
Must be at least 1 characters long
Must be at most 10 characters long
text Required
The label text visible to a user on the sketch surface.
Must be at least 1 characters long
Must be at most 255 characters long
page Required
Page on which the item appears. The set of pages in a sketch is determined by collecting a list of unique page numbers in the child objects in that sketch. For example, if there are two values in a sketch of segment[0].page = 1 and segment[1].page = 4 then the sketch will have two pages with non-consecutive page numbers. The same can be true for notes in a sketch: they can in effect 'create' pages by referencing a page number.