Novapoint Online Documentation
You are here: » Novapoint Resource Center » Novapoint Help » Base » Technical Documentation » Selection Set
Selection Set
A “Selection Set” is a resulting list of objects that match a query made to the Quadri database. To make a query one has to be familiar with the structure and principals of the Quadri database.
Quadri
Information inside Quadri are organized within record sets, where each and every object is given a unique record number. On each record, an object is stored with header information and a coordinate point list.
Object header information
- Record number
- Object Name
- Object Type
- Group
- Feature Code
- Attributes (optional)
Geometry (Coordinate Point List)
- X Y Z
- X Y Z
- etc.
Queries
A query is done using a SQL-similar language and syntax.
Example:
fcode=1000 *selects all object with feature code = 1000 fcode=>1000 AND fcode=<2000 *selects all object with feature codes between 1000 and 2000
Note: The query engine extracts data from active groups and feature codes only.
Preface
All queries are prefaced with the expression “Select ID from OBJECT where”, but this is omitted in the user interface.
Header keys
The following keys can be queried:
- Feature code “fcode”
- Group “group”
- Object type “type”
- Object name “name”
Type can also be used with sub key “type.height” and “type.id”.
Note: The response time from key queries on “fcode” and “group” are normally very fast, even on very large databases. This due to the fact that these keys are indexed.
Geometry keys
Coordinate information can be queried using:
- Point.x
- Point.y
- Point.z
Note: The key only compares the first coordinate set on each object.
Example:
Point.z=0 *selects all objects where first z-coordinate value is equal to zero
Numpoints
The function counts the number of coordinate sets on each object.
Example:
Numpoints = 1 *selects all objects with only one coordinate set (e.g. - single points)
Object Attribute keys
Object attributes can be queried by using the following syntax:
attr.<dyn record no.>.<data type+position>
- Dyn record no. See Quadri documentation for complete list
- Data type L=Long, I=Integer, D=Double, S=String
- Position See Quadri documentation for complete list
Example:
attr.25.L1=14 *selects all objects with attribute value 14, stored in dynamic record set no. 25, position 1 with a long value.
Note 1: Attribute queries can slow down response time severely, especially on large databases. This due to the fact that dynamic records are not indexed.
Note 2: Attribute queries can only be performed on object header level. Queries on point attribute information is not yet supported.
Operator keys
The following operators are supported:
- Equal ”=”
- Not equal ”!=”
- Greater than ”>”
- Less than ”<”
- Greater than or equal ”>=”
- Less than or equal ”⇐”
Boolean expression keys
The following Boolean expressions can be used to combine queries:
- AND
- OR
- NOT
When combining queries using Boolean expressions one should (and in some cases must) use parentheses to separate each query segment.
Special feature keys
Multiple keys
Multiple key queries involving “equal”, can be contracted using an IN expression.
Example:
fcode=1000 AND fcode=1001 AND fcode=1002 can be substituted with: fcode IN (1000, 1001, 1002)
Dividable
The special function “Dividable” analyses the objects first coordinate set, to determine if it's value is dividable for a given set of parameters, and returns TRUE or FALSE.
Example:
fcode=1000 AND dividable (point.z, 1, 0.2) *First parameter is the objects coordinate value, second parameter is the division value, third parameter is a deviation value (optional).
Can also be used to exclude objects with a certain height value.
Example:
fcode=1000 AND dividable (point.z, 1) AND NOT dividable (point.z, 5) *includes heights dividable by 1, but excludes heights dividable by 5
Length2D
The special function “Length2D” calculates the object length i 2D and returns TRUE or FALSE
Example:
fcode=7001 AND length2D >10 *excludes all objects where the length is 10m or less*