Built-in Functions

A built-in function is a Predicate Value that returns a value calculated from one or more Values.

The following built-in functions can be used within 1Integrate.

     Note: You can add your own built-in functions by writing Java classes. For more information see the Built-in Function Programmer Guide.

     Note: An additional license is required for 3D support. For more information on 3D in 1Integrate, please see Full 3D Support.

Bit Manipulation

Function

Description

Parameter(s)

bit_and

Returns the bitwise AND of two integers.

Each bit in the binary expansion of the result will only be set if both of the corresponding bits in the two input numbers are also set.

  • An integer value.

  • Another integer value.

bit_not

Returns the bitwise complement of an integer.

Each bit in the binary expansion of the result will be the opposite of the corresponding bit in the input number.

  • An integer value.

bit_or

Returns the bitwise OR of two integers.

Each bit in the binary expansion of the result will be set if either of the corresponding bits in the two input numbers is set.

  • An integer value.

  • Another integer value.

bit_shift

Returns an integer value computed by shifting the binary bits of the input value.

     Note: Positive values shift it to the left and negative values shift it to the right.

  • An integer value whose bits are to be shifted.

  • An integer value specifying how far to shift the bits of the first parameter.

bit_xor

Returns the bitwise XOR of two integers.

Each bit in the binary expansion of the result will be set if the corresponding bits in the two input numbers are different from one another.

  • An integer value.

  • Another integer value.

Classes & Attributes

Function

Description

Parameter(s)

class_get_attributes

Return a collection of strings containing the attributes on a class.

This function returns the attributes from the class based on the Data Store Read and Commit mapping target names.

  • The object from which to build the collection. Alternatively, this can be the name of the class that would be the source of the attributes.

class_get_attribute_type

Return the type of an attribute given an object or a class name and the attribute name.

This function should be used in conjunction with functions:

  • class_get_attributes

  • class_is_attribute_null

  • The object or class containing the attribute
  • The attribute name

class_get_attribute_value

Return the value of an attribute of an object

  • The object containing the attribute
  • The name of the attribute to get the value of.

class_has_attribute

Checks if the specified class contains the specified user attribute. A third parameter containing the Data Store name can be provided to pinpoint the class.

The Data Store name provided must be the full path of the Data Store without the type prefix, for example "Parent Folder/Data Store 1".

 

Returns true if the specified class contains the specified attribute, otherwise returns false.

  • The class name.

  • The attribute to search.
  • (optional) The name of the Data Store that contains the class.
  • (optional) Error if class not found. Defaults to false which means that if the specified class is not found then the built-in returns false. If set to true then it throws an exception when the specified class is not found and so alerts the user that the class name input is wrong.

class_is_attribute_null

Return TRUE if an attribute is NULL, otherwise return FALSE. This function should be used in conjunction with functions:

  • class_get_attributes
  • class_get_attribute_type
  • The object containing the attribute to test
  • The name of the attribute to test

compare_attributes

Compare the attributes of the source object with the target object and returns a list of mismatches, or null if the objects are identical.

The returned list can be iterated over and the following built-ins used to obtain the attribute name, and the value it has in the source and target objects:

  • compare_attributes_get_name

  • compare_attributes_get_value_source

  • compare_attributes_get_value_target

  • The source object to compare.

  • The target object to compare.

  • (Optional) Attributes to exclude from the comparison.

compare_attributes_get_value_name

Returns the attribute name that failed the comparison.

     Note: This should be used on the elements obtained by running an "Loop over a Collection or Geometry" over the output of compare_attributes.

  • An element within the compare_attributes returned list.

compare_attributes_get_value_source

Returns the attribute value in the source object that failed the comparison.

     Note: This should be used on elements obtained by running a "Loop over a Collection or Geometry" over the output of compare_attributes.

  • An element within the compare_attributes returned list.

compare_attributes_get_target

Returns the attribute value in the target object that failed the comparison.

     Note: This should be used on the elements obtained by running a "Loop over a Collection or Geometry" over the output of compare_attributes.

  • An element within the compare_attributes returned list.

get_session_class_names

Returns the names of all classes in the session. An optional parameter can be provided to specify the Data Store that contains the classes to retrieve.

  • (optional). The Data Store that will be the source of the class names.

    The Data Store name provided must be the full path of the Data Store without the type prefix, for example "Parent Folder/Data Store 1".

session_has_class

Checks whether or not the class has been opened in an Open Data task in the session.

A second parameter containing the Data Store name can be provided to pinpoint the class.

The Data Store name provided must be the full path of the Data Store without the type prefix, for example "Parent Folder/Data Store 1".

Returns true if the specified class is in the session, otherwise returns false.

  • Name of the class to look for

  • (optional) Name of the Data Store that should contain the class.

Collection

Function

Description

Parameter(s)

count

Returns the number of elements in a collection.

  • A collection or array.

Conversion

Function

Description

Parameter(s)

to_degrees

Converts an angle specified in radians to degrees.

  • A numerical value representing an angle in radians.

to_integer

Converts a numerical, boolean or string value to an integer.

Any decimal digits present in the number after the decimal point are removed.

The boolean values true and false are converted into 1 and 0 respectively.

  • A numerical, boolean, string or timestamp value.

to_radians

Converts an angle specified in degrees to radians.

  • A numerical value representing an angle in degrees.

to_real

Converts a numerical, boolean or string value to a real (floating point) number.

  • A numerical, boolean or string value.

to_string

Converts any value to a string.

  • Any value.

Geometric

Function

Description

Parameter(s)

angle

Returns the angle between line segments. If the line segments intersect, the acute angle between the lines is returned.

If the lines join at end points, the smaller of the two angles is returned. If there is an error, a negative value is returned.

The result will be an angle in the range [0,pi], or [0,180] if the third parameter is 'true'.

  • A two point line segment.
  • A two point line segment.
  • (optional) A boolean flag set to true for degrees. Default is false, for radians.

area

Returns the area of a geometry in dataset units.

If the geometry is a point or a line the result will be 0.

If the geometry is a solid, the surface area will be returned.

If the geometry is a complex geometry, the result will be the sum of the areas of each simple area in the complex geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The input geometry.

boundary

Returns the boundary of a geometry

  • For a simple or complex point, the boundary is a clear geometry.

  • For a simple or complex line, the boundary is a complex point specifying the line end-points. A closed line has no end-points and returns a clear geometry.

  • For a simple or complex area, the boundary is a simple or complex line containing all the rings in the area geometry.

  • For a complex, the boundary will also be a complex; containing the same parts as those defined for points, lines and areas above.

  • The geometry for which the boundary is required.

buffer

Returns a geometry formed by taking a buffer zone around the input geometry at a fixed distance.

  • The geometry to buffer.

  • The distance from the input geometry that the buffer zone will extend to. If this is negative then any 2D or 2.5D areas in the input geometry are buffered inwards; The sign of this parameter is ignored for 3D geometries. If this is smaller than geometric tolerance a copy of the input geometry is returned.

         Note: The returned geometry is not guaranteed to be an area.

  • (optional) The length of the line segments to build up the buffer zone. Specify this to control how many vertices are added to the rounded corners of the buffer. Use the default or a small value to generate more vertices for more accurate buffers. Use a large value for fewer vertices and faster processing. For example when buffering a point, use buffer_distance/4 to create a circle with 26 vertices.

  • (optional) The square end proportion to determine how far from the end of the line to create the square end.

    A negative value produces rounded corners and a positive value produces a buffer with square end. This is not supported for 2.5D geometries.

  • (optional) The mitre truncation proportion.

    A negative value produces rounded corners. A zero value produces a true bevel which would cut off the corner with a straight line.

    A value greater than zero would extend the bevel away from the geometry by a proportion of the buffer distance.

    A very large value would remove the bevel to create true mitres which might extend a long way if the angle is very sharp. This is not supported for 2.5D geometries.

centroid

Returns a point geometry at the 2D centroid of the supplied geometry.

This built-in does not support 3D geometries, use the change_dimension built-in to convert to 2D before passing them in.

Does not support multi-part geometries made up of different types.

     Note: The centroid is not guaranteed to be in/on the geometry, unlike the get_point builtin.

  • The input geometry.

change_dimension

Allows geometry to be changed from one dimensionality to another.

Takes any geometry as input, and changes it to the dimensionality specified (one of 2, 2.5 or 3).

The value of Z coordinates in the resulting geometry can be set using an optional argument. This can either be a real, which will be used to set vertices to a constant height, or a secondary geometry defining a plane, which will be used to align the new geometry. When changing to 2D, or from 3D to 3D, this argument is ignored.

If this argument is not supplied, the following cases exist:

  • When changing from 2D to heighted 2D, the Z coordinates will be set to NULL.

  • When changing from 2D to 3D, an error will occur.

  • When changing from heighted 2D to heighted 2D, existing values will be used.

  • When changing from heighted 2D to 3D, the existing values will be used, but an error will occur if any null values exist.

  • When changing from 3D to heighted 2D, the resulting geometry will be an approximation of the underside of the original geometry.

Measures can be added to the geometry if required - these will be set to NULL unless specified using an optional argument. Trying to add measures when changing to heighted 2D will result in an error.

If the input geometry already has measures:

  • Setting add measures to false will remove them.

  • Setting add measures to true but not providing the optional value will copy them to the new geometry.

  • Setting add measures to true and providing a value will overwrite them.

  • The input geometry.

  • The coordinate dimension to change to (2, 2.5, or 3).

  • (Optional) A boolean flag specifying whether a measure should be added. Defaults to false.

  • (Optional) A real value or planar geometry to set new Z coordinates, or if none is supplied, the value to use for measures.

  • (optional) The value to use for measures if the 4th argument has been used for setting Z coordinates.

convex_hull

Returns the smallest convex area geometry that contains the input geometry.

The return value will be a simple area geometry with no inner rings.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The input geometry.

convex_hull_of_classes

Returns an approximate convex hull polygon based on the MBRs of the primary geometries for the classes named, or all the classes if none are named.

  • (optional) A comma separated list of classes to include (omit, or null, for all).

  • (optional) A comma separated list of classes to exclude (omit, or null, for none).

count_areas

Returns the number of areas in a geometry including those that are part of a surface or solid. With a complex geometry, it returns the sum of the area counts over all components.

  • The input geometry.

count_inner_rings

Counts the clockwise digitised rings of a simple or complex geometry.

  • For a simple area this is the number of inner rings.
  • For a complex geometry this is the sum of inner ring counts for all the simple area components.
  • For a point or line geometry this is 0.
  • If the object passed was not a geometry, returns null.
  • The input geometry.

count_parts

Returns the number of parts in a geometry.

  • For a clear geometry this is 0.
  • For a simple geometry this is 1.
  • A complex geometry will have one or more parts.
  • If the object passed was not a geometry, returns null.
  • The input geometry.

count_surfaces

Returns the total number of surfaces in a geometry. With a complex geometry, returns the sum of the surface counts over each of its components.

  • The input geometry.

count_vertices

Returns the total number of vertices in a simple or complex geometry.

The number of points in a ring does not include a duplicate point that closes the ring.

  • For an area geometry, the sum of the vertex counts for each of its rings will be returned.
  • For a complex geometry, the sum of the vertex counts over each of its components will be returned.
  • For anything other than a geometry an exception will be thrown.
  • The input geometry.

create_geometry_from_wkt

Creates a geometry from a geometric well-known text string (WKT).

Supported types are:

  • Point
  • MultiPoint
  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection
  • PolyhedralSurface (3D output only)
  • Solid (3D output only)
  • MultiSolid (3D output only)

Empty geometries are supported. Input which specifies its dimension as Z or M is supported and will return a heighted or measured geometry. Input which specifies its dimension as ZM is only supported when the 2nd boolean argument is set to true and will return a 3D geometry.

  • A geometric WKT string.

difference

Returns the difference between two geometries; all the parts of the first geometry that are not in the second geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The first geometry.

  • The second geometry (to be subtracted from the first geometry).

difference_between_bearings

Given two bearings (the angle of lines, calculated in degrees, usually using line_get_angle_at_point) then return the difference between them in degrees, ignoring the direction.

This is used to work out how parallel two lines are. The result will be an angle in degrees between 0 and 90 where 0 is parallel and 90 is perpendicular.

  • The first bearing: An angle in radians between -pi and pi.

  • The second bearing: An angle in radians between -pi and pi.

difference_by_dimension

Returns the difference between two geometries, which match the passed in dimensionality.

The result will be a geometry consisting of all the parts of the first geometry which are not in the second geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The required dimensionality of the result.

    • 0 - for GeomCombineResultType.POINTS
    • 1 - for GeomCombineResultType.LINES
    • 2 - for GeomCombineResultType.AREAS
  • The first geometry.

  • The second geometry (to be subtracted from the first geometry).

dimension

Returns the dimension of the input geometry. The dimension of a point is 0, the dimension of a line is 1, the dimension of an area or surface is 2 and the dimension of a solid is 3.

The dimension of a multi-part geometry is the largest dimension of any of its parts.

  • A geometry.

distance

Returns the distance between two geometries. This is the smallest distance between any point on the first geometry and any other point on the second geometry.

If the two geometries intersect, the distance will be 0.

If both the input geometries are 3D, then the result will be calculated in 3D space, otherwise the result will only be calculated in 2D plan view.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • A geometry.

  • Another geometry.

douglas_peucker

Returns a simplified version of a geometry formed by applying the Douglas-Peucker smoothing algorithm to each piece of line-work in the geometry.

The result will be a geometry which approximates the original geometry using fewer vertices.

The line-work of the resulting geometry will lie entirely within the specified tolerance of the original geometry's line-work.

  • The geometry to simplify.

  • The required tolerance (must be a positive number).

drag_vertex

Returns a geometry formed by moving a specified vertex on a simple line geometry to a new location.

The vertex to be moved will be the one closest to the point specified by the second parameter. The third parameter specifies the point to which the vertex will be moved.

It uses a scale and rotate algorithm to try to preserve the shape of the geometry on either side of the vertex being moved.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • A simple line geometry.

  • A simple point geometry identifying the vertex on the line to be moved.

  • A simple point geometry identifying the new location for the vertex.

end_of

Returns a point geometry at the location of the end of a simple line geometry.

  • A simple line geometry.

ends_of

Returns the endpoints of a simple line geometry.

If the line is closed, the result will be a simple point geometry. Otherwise the result will be a complex geometry containing two points.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • A simple line geometry.

extrude

Extrude a geometry to a given height along the Z-axis.

The input geometry will be duplicated at the specified height, with each vertex connected to its counterpart in the original to form a higher dimension shape.

Depending on the input, the output geometry will be as follows:

  • For points, the output is a vertical line with length equal to the input height.

  • For lines, the output is a vertical surface with the specified height following the path of the line.

  • For areas, the output is a solid of the specified height with a footprint of the input geometry.

  • For complex geometries, the result will be a complex geometry containing extruded versions of all its components.

  • For solids, an error will occur.

Additionally:

  • A negative height value will result in the geometry being extruded downwards instead of upwards.

  • For 2D geometries, the Z coordinates of the input geometry will be set to 0.

  • For heighted 2D geometries, the initial Z coordinates will be retained; however, any NULL heights will result in an error.

  • If a non-planar heighted 2D area is used, the footprint of the resulting solid will be arbitrary.

  • For 3D geometries, the initial Z coordinates will be retained.

  • Any measures on the input geometry are discarded.

  • The geometry to extrude

  • The distance to extrude by

find_duplicates

Returns a collection of point geometries, representing any duplicate points within a geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to test.

  • (optional) The tolerance (in dataset units) for points to be classed as duplicate.

    If not specified uses the default geometric tolerance.

find_kickbacks

Returns a collection of point geometries, representing the locations of any kickbacks within a geometry.

Kickbacks are a type of geometric error where a line segment changes direction twice by approximately 180 degrees (like a z shape) to repeat part of the line. They are usually detected with larger angles than spikes which is why there is a separate built-in to find them.

  • The geometry to test.

  • (optional) The maximum value for the sine of the angles in the kickback.

    If omitted, this defaults to the sine of 1 degree.

  • (optional) The maximum width of the kickback.

    If omitted, kickbacks with any width will be returned.

find_self_intersections

Returns a multi-point geometry representing the points at which a line, or the rings of an area, self-intersect.

If a section of the line overlaps another section of the line, the points at the start and end of the overlapping line section are returned.

If the line has the same start and end point and does not intersect another section of the line at this point, this point is not returned.

  • The geometry to test.

find_small_rings

Returns a descriptor for the complex line geometry containing small rings.

One or more of the following criteria may be used to determine if a ring is to be considered small:

  • The length of the diagonal if the ring's MBR.

  • The area of the ring.

  • The ratio of the ring's area to the square of its perimeter. This is always less than 1/4pi and is actually independent of the size of the ring but will be small if its shape is irregular.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to test.

  • The maximum MBR diagonal length.

  • (optional) The maximum ring area.

  • (optional) The maximum area to square perimeter ratio.

     Note: If any of these parameters is negative it is ignored.

find_spikes

Returns a descriptor for the point complex geometry containing spike points.

A spike is defined to be three consecutive points (A, B, C) such that:

  1. The distance AB is less than the distance BC.
  2. The sine of the angle ABC is less than a maximum value which may be specified by the second parameter.
  3. (Optionally) the distance AB is less than a maximum "length" value specified by the third parameter.
  • The geometry to test.

  • (optional) The maximum value for the sine of the angle in the spike (a real number in the range [0, 1]).

         Note: If omitted, this defaults to the sine of 1 degree (approximately 0.017).

  • (optional) The maximum length of the spike.

get_geometry_as_wkt

Returns the given geometry as a WKT string.

     Note: This function does not currently support arbitrary precision. Only 5 and 15 decimal places are allowed. Requesting more than 15 decimal places will result in the ordinates being returned in rational form (a/b).

  • A geometry.

  • (optional) The number of decimal places to use for coordinates:

    • Pass 5 (or less) to use 5 decimal places.

    • Pass 6-15 to use 15 decimal places.

    • Pass 16 (or more) to use the rational coordinate form.

get_job_extent

Obtains the extent of the current session.

     Note: This does not calculate the minimum bounding rectangle (MBR) of the loaded data.

This is calculated from the following (in order of priority):

  • If the session is partitioned, the extent of the partition.
  • If an extent such as a bounding box or polygon has been specified for a session, the specified extent.
  • If there are any extents present in the spatial metadata for the loaded data, the MBR of all such extents.
  • A default, arbitrary extent (the whole world if data is in degrees, else a 10,000 width square).
 

get_point

Returns a point guaranteed to lie on the specified geometry.

The point is not necessarily near to the centre of the geometry, but is guaranteed to lie inside it.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

get_x

Returns the x co-ordinate of a point on a simple or complex geometry.

For a point geometry the return will be the x co-ordinate of that geometry.

For other types of geometry the return will be the x co-ordinate of an arbitrary point on the input geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

get_y

Returns the y co-ordinate of a point on a simple or complex geometry.

For a point geometry the return will be the y co-ordinate of that geometry.

For other types of geometry the return will be the y co-ordinate of an arbitrary point on the input geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

get_z

Returns the z-coordinate of a representative point within a geometry.

If the input geometry does not contain any height information, null will be returned. If the input geometry is heighted, the return will be the height value of the representative 2d point within its geometry, which may be null.

  • The input geometry.

has_duplicates

Tests to see if a geometry has any consecutive coincident vertices.

For a heighted 2D geometry, consecutive points must have duplicate heights as well as duplicate plan co-ordinates to be considered to have duplicate points.

Returns a Boolean value, true if the geometry has any consecutive coincident vertices and false if it does not.

  • Any geometry.

has_kickbacks

Test whether a geometry has kickbacks.

A kickback is defined to be 4 consecutive points (A, B, C, D) such that:

  • The distance BC is less than the distances AB and CD.

  • The sines of the angles ABC and BCD are both less than a maximum value which may be specified by the second parameter.

  • (Optionally) the distances from B to the line CD and from C to the line AB are both less than a maximum "width" value specified by the third parameter.

Kickbacks are also known as snap-backs.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to test.

  • (optional) The maximum value for the sine of the angles in the kickback.

         Note: If omitted, this defaults to the sine of 1 degree.

  • (optional) The maximum width of the kickback.

has_small_rings

Checks whether a geometry has any small rings (pig tails).

Returns true if the geometry has small rings and false if it does not.

One or more of the following criteria may be used to determine if a ring is to be considered small:

  • The length of the diagonal if the ring's MBR.

  • The area of the ring.

  • The ratio of the ring's area to the square of its perimeter.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to test.

  • The maximum MBR diagonal length.

  • (optional) The maximum ring area.

  • (optional) The maximum area to square perimeter ratio.

     Note: If any of these parameters is negative it is ignored.

has_spikes

Checks whether a geometry has any spikes.

Returns true if the geometry has spikes and false if it does not.

A spike is defined to be three consecutive points (A, B, C) such that:

  1. The distance AB is less than the distance BC.
  2. The sine of the angle ABC is less than a maximum value which may be specified by the second parameter.
  3. (Optionally) the distance AB is less than a maximum "length" value specified by the third parameter.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to test.

  • (optional) The maximum value for the sine of the angle in the spike (a real number in the range [0, 1]).

         Note: If omitted, this defaults to the sine of 1 degree (approximately 0.017).

  • (optional) The maximum length of the spike.

height

Returns the height of a heighted 2D geometry at a particular point. If the point does not coincide with a vertex on the heighted 2D geometry, then the nearest vertex is chosen.

  • A heighted 2D geometry.

  • (optional)A 2D geometry specifying the point on the heighted 2D geometry whose height is to be returned. If this parameter is omitted, then a vertex on the heighted 2D geometry is chosen at random.

inner_rings

Returns the inner rings of a simple area geometry, or the inner rings of all areas in a complex geometry.

If there is only one inner ring, that ring is returned as a simple line. If there are several, they are returned as components of a complex line geometry.

Returns null if applied to a null geometry, a non-area geometry, an area geometry without inner rings or a complex geometry containing areas with no inner rings.

The result has the same dimensionality (2D or 2.5D) as the input geometry.

  • A simple or complex 2D or 2.5D geometry.

intersection

Returns the intersection of two or more geometries - the parts in common between all of them.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

  • Another geometry to intersect with the first.

  • (optional) Additional geometries to intersect.

intersection_by_dimension

Returns the intersection of two or more geometries, which match the passed in dimensionality.

All points in the returned geometry will also lie in all of the input geometries.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The required dimensionality of the result.

    • 0 - for GeomCombineResultType.POINTS
    • 1 - for GeomCombineResultType.LINES
    • 2 - for GeomCombineResultType.AREAS
  • Any geometry.

  • Another geometry to intersect with the first.

  • (optional) Additional geometries to intersect.

is_aligned

Align function takes two simple lines and returns true if they are aligned. Exact test varies according to input geometries; If both are rings there are aligned if they have the same orientation. If only one is a ring, an ordering test is performed on the points on the ring that are nearest to the start, middle and end of non-ring geometry.

If neither lines are rings one of three tests are used:

  • If their ends touch this is used to determine alignment

  • If their ends do not touch and one line is more than one an a half times the length of the other then a order test is performed on the points on the longer line that are nearest the start and end of the shorter line.

  • If neither line is 1.5 times the length of the other, a distance test is performed between the start and end points of the lines.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • First simple line geometry (must not be null).

  • Second simple line geometry (must not be null).

is_boundary_left

Tests whether a point, line or area geometry is to the left of a line geometry with respect to the direction of the line geometry.

Returns true if the boundary left relationship holds and false otherwise.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The line geometry.

  • The area geometry.

is_boundary_right

Tests whether a point, line or area geometry is to the right of a line geometry with respect to the direction of the line geometry.

Returns true if the boundary right relationship holds and false otherwise.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The line geometry.

  • The area geometry.

is_closed

Tests whether a geometry is closed. Returns true if the geometry is a simple area or if it is a simple line with coincident end points.

  • Any geometry.

is_downhill

Test whether a heighted 2D line geometry is digitised in a downhill direction.

An optional tolerance may be supplied to use when comparing the heights of vertices on the line. The line is considered to be downhill if each vertex is lower than all the preceding vertices, to within tolerance.

Returns a boolean value, true if the geometry is a heighted 2D line which slopes downwards and false otherwise.

  • A heighted 2D line geometry to test.

  • (optional) A numerical value specifying the tolerance to apply to the line's z values.

is_level

Test whether a heighted 2D line geometry has a constant height along its length.

An optional tolerance may be supplied to use when comparing the heights of vertices on the line.

The line is considered to be level if the maximum height minus the minimum height along the line is less than or equal to the tolerance.

Returns a boolean value, true if the geometry is a heighted 2D line is level and false otherwise. Returns null if the input geometry is null and throws an exception if the input geometry is not a heighted 2D geometry.

  • A heighted 2D line geometry to test.

  • (optional) A numerical value specifying the tolerance to apply to the line's z values.

is_noded

Tests if two line geometries intersect at common vertices.

Returns true if the geometries are noded and false otherwise.

  • The first line geometry.

  • The second line geometry.

  • (optional) An optional boolean value indicating for heighted 2D geometries whether or not to check z values at intersections (defaults to true).

is_simple

Tests to see if a geometry is simple according to the OGC definition.

Returns a Boolean value, true if the geometry is simple according to the OGC definition and false if it is not.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

is_uphill

Test whether a heighted 2D line geometry is digitised in an uphill direction.

An optional tolerance may be supplied to use when comparing the heights of vertices on the line.

The line is considered to be uphill if each vertex is higher than all the preceding vertices, to within tolerance.

Returns a boolean value, true if the geometry is a heighted 2D line which slopes upwards and false otherwise.

  • A heighted 2D line geometry to test.

  • (optional) A numerical value specifying the tolerance to apply to the line's z values.

is_valid

Tests to see if a geometry is valid. The validity criteria are:

  • Clear geometries are invalid (no geometric data).

  • A simple-point or complex-point geometry is valid.

  • A simple-line geometry is valid if it has at least two points and no adjacent duplicate vertices.

A simple-area geometry is valid if:

  • It has an outer ring

  • The outer ring encloses any inner rings

  • No ring crosses itself or any other ring (a point-touch is acceptable)

  • No ring has a line-touch with itself or any other ring

  • Each ring is a valid closed simple-line geometry

  • The outer ring is digitised in an anti-clockwise direction

  • Any inner rings are digitised in a clockwise direction.

     Note: Any areas with OGC-style rings that point-touch other rings will be converted to or from the Radius Studio format of rings that point-touch themselves during Open Data, Commit and Copy To tasks.

  • 3D geometries are currently validated using SFCGAL rules.

  • A complex geometry of a single or mixed type is valid if each component is valid.

  • Any geometry.
  • (optional) A double value representing the maximum deviation value to be used for validation. This controls the maximum distance at which certain geometric irregularities - e.g. deviation of the rings of a 3D area from strict coplanarity - will be ignored. This value is only guaranteed to be used if the input geometry is a 3D geometry, otherwise it may be ignored and substituted by the geometry tolerance. A negative value may be passed to use the default geometry tolerance.

  • (optional) A double value representing the linear resolution to be used for validation. This controls the minimum distance at which two points are not considered to be unique, and small geometries may degenerate. This value is only guaranteed to be used if the input geometry is a 3D geometry, otherwise it will be ignored and substituted by the geometry tolerance. A negative value may be passed to use the default geometry tolerance.

line

Returns a line geometry constructed from points supplied in parameters.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The start of the line as a simple point geometry.

  • The second vertex of the line as a simple point geometry.

  • optional) Subsequent vertices in the line as point geometries .

line_bearing_at_point

Returns the angle of the line at a point between -pi and pi, measured in radians anti-clockwise from east (positive x axis).

  • The line geometry for which to measure the angle.

  • The point geometry for the point that is on or near the point on the line at which the angle is to be measured.

line_length

Returns the length of a line.

  • If the geometry passed is not a line, then the length returned will be 0.

  • If it is a complex geometry, the length returned will be the sum of the lengths of each simple line in the complex geometry.

         Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

line_segment

Returns a segment cut out of a simple line geometry.

The start and end points of the segment are specified by distances along the line from its start.

With a heighted 2D line geometry, distances are in plan; if the start or end of the segment is between two vertices with height values, the segment end-vertex is given an interpolated height.

  • Any geometry.
  • A distance along the line for the segment start point.
  • A distance along the line for the segment end point.

make_2d

     Note: Use change_Dimension instead

Returns a 2D geometry.

If the argument is not valid, then null is returned.

  • The geometry to convert to 2D.

make_3d

Returns a heighted 2D geometry from any geometry.

It can optionally specify three non-collinear 3D points defining the plane for the new geometry.

  • The geometry to convert to 3D.
  • (optional) The x-coordinate value for the first 3D point.
  • (optional) The y-coordinate value for the first 3D point.
  • (optional) The z-coordinate value for the first 3D point.
  • (optional) The x-coordinate value for the second 3D point.
  • (optional) The y-coordinate value for the second 3D point.
  • (optional) The z-coordinate value for the second 3D point.
  • (optional) The x-coordinate value for the third 3D point.
  • (optional) The y-coordinate value for the third 3D point.
  • (optional) The z-coordinate value for the third 3D point.

max_deflection_angle

Returns the maximum deflection angle between adjacent line segments in a geometry. Given an arbitrary geometry finds the maximum deflection (change in direction, clockwise or anti-clockwise, between adjacent vectors).

  • For a point this is always 0.

  • For heighted 2D geometries, the heights are ignored.

  • For Measured geometries, the measures are ignored.

  • For an area it the maximum deflection in any of its rings.

  • For a complex geometry it is the maximum deflection in any of its simple parts.

  • The input geometry.

max_height

Returns the maximum height of a heighted 2D geometry.

The return value is the maximum z value on any of the vertices of the geometry.

  • A heighted 2D geometry.

mbr

Returns the minimum bounding rectangle (MBR) of one or more geometries.

The result is the smallest rectangle, with sides parallel to the X and Y axes, that contains all the input geometries.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

min_height

Returns the minimum height of a heighted 2D geometry.

The return value is the minimum z value on any of the vertices of the geometry.

  • A heighted 2D geometry.

min_intersection_angle

Returns the minimum intersection angle between two geometries.

Given any two geometries - not necessarily of the same type - finds the minimum angle at which a vector from one intersects a a vector from the other. A point or a clear geometry is not considered to intersect with anything.

Returns -1 if the two geometries do not intersect.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • First input geometry.

  • Second input geometry.

move_vertex

Returns a geometry formed by moving a vertex on a simple line geometry.

This function will only move one vertex on the geometry and so may leave a spike. For smoother results, consider the drag_vertex function.

     Note: For heighted or measured geometries: If the new point has a height/measure then the height/measure from the point will be applied. If the new location point is 2D then the height/measure value on the original vertex is retained.

  • A point or line geometry.

  • A simple point geometry identifying the vertex on the line to be moved.

  • A simple point geometry identifying the new location for the vertex.

nearest_point

Returns a geometry representing the nearest point(s) on a provided geometry from an originating point geometry. This will be complex if multiple points are equally close to the originating point.

If neither parameter is a geometry an exception is thrown.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • An originating point.
  • A destination geometry (to search), either point, line, area, or complex whose nearest point(s) to parameter 1 are returned.
  • (optional) A Boolean value, true to return an arbitrary single nearest point or false to return all nearest points as a complex geometry. The default value is false.

nearest_vertex

Returns a point geometry at the nearest vertex on a geometry. Described by the nearest known X, Y or point geometry positions.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry on which to find the vertex.

  • The nearest known X position, or a point geometry.

  • The nearest known Y position. Only used if parameter two is not a point geometry.

offset

Offsets (translates) a geometry by a fixed distance without changing its shape, size or orientation.

  • The geometry to offset.

  • The distance to move the geometry in the x direction.

  • The distance to move the geometry in the y direction.

  • (optional) The distance to move the geometry in the z direction.

outer_ring

Returns the outer ring of a simple area geometry. The result will be a closed simple line geometry.

For a complex geometry with more than one outer ring, a complex line is returned containing all of the outer rings.

  • A simple or complex area geometry.

outer_shell

Returns the outer shell of a simple solid geometry, as a simple surface geometry.

For a complex geometry with more than one outer shell, a complex surface is returned containing all of the outer shells.

  • A simple or complex solid geometry.

perimeter

Returns the perimeter of an area geometry.

If the geometry is a point or a line, the result will be 0.

If the geometry is a complex geometry, the result will be the sum of the perimeters of each simple area geometry in the complex geometry.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

point

Builds a 2D point (if passing x and y values) or a 2.5D point (if passing x, y and z values).

  • The x-coordinate value of the point.
  • The y-coordinate value of the point.
  • (optional) The z-coordinate value of the point.

point_along_line

Returns a point on a line geometry at a distance along it expressed as a proportion of the total length of the line.

For a heighted 2D geometry, the point position is located by applying the proportion to the geometry in plan. The located point has its height calculated by interpolating between vertices.

  • A line geometry.

  • Proportional distance along the line, a real number in the range [0,1].

    • value <= 0 locates the start point of the line.

    • value >= 1 locates the end point of the line.

    • 0 < value < 1 locates a point within the line.

point_at_projection

Returns a 2D point that is the specified bearing and distance from the point passed in.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The origin point geometry from which to measure the location of the new point.

  • An angle (in degrees anti-clockwise from east) representing the bearing to the new point from the origin point.

  • A distance from the origin point (in dataset units) at which to create the new point.

point_on_line

Finds a point on a line geometry, a given distance along it from its start or end point. For a heighted geometry, distance is interpreted as a distance in plan.

With a heighted line, the height will be interpolated between vertices.

Returns a point geometry, or null if the distance parameter is out of range or if the input geometry is not a simple line.

  • The input geometry.
  • Distance from the start of the line. A negative value indicates distance from the end of the line.

polygon

Forms an area geometry from a simple closed line geometry, a complex line geometry containing one or more rings, a simple area, or a complex area geometry.

This can be used to form polygons from existing line-work or to correct problems in an existing area geometry. Any duplicate points, spikes, kickbacks and small rings should be corrected before calling this function. It will fail if any of the rings are open, self-intersect or intersect other rings.

Returns null if the rings do not form a valid area geometry.

  • A simple closed line geometry, a complex line geometry containing one or more rings, a simple area or a complex area geometry.

polygons_from_lines

A function that takes a simple or multi line geometry and creates a simple or complex polygon formed by the lines.

This will form polygons wherever there are areas enclosed by one or more input lines which do not need to form clean rings. To create a polygon from well-formed, nested rings, use the polygon built in instead.

If a polygon can be formed within another, then the outer polygon will be created with a hole and a separate polygon formed within the hole.

Returns the polygon(s) formed by the lines.

     Note: If the lines do not form any polygon, then NULL is returned.

  • A simple or multi line geometry to create a simple or complex polygon from.

proportion_along_line

Finds the nearest position on a line to a given point, and calculates its distance along the line, expressed as a proportion of the total length of the line.

For a heighted geometry, the nearest point and its distance are calculated on the line geometry in plan, ignoring z-values.

  • A line geometry.
  • A point geometry.

remove_duplicates

Removes any duplicate vertices from a geometry.

Any occurrence of consecutive, coincident vertices is replaced with a single vertex at the same location.

  • Any geometry.

remove_kickbacks

Removes any kickbacks from a geometry.

A kickback is defined to be 4 consecutive points (A, B, C, D) such that:

  • The distance BC is less than the distances AB and CD.

  • The sines of the angles ABC and BCD are both less than a maximum value which may be specified by the second parameter.

  • (Optionally) the distances from B to the line CD and from C to the line AB are both less than a maximum "width" value specified by the third parameter.

For each such kickback, the points B and C will be replaced by a new vertex midway between them.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The input geometry.

  • (optional) The maximum value for the sine of the angles in the kickback. If omitted, this defaults to the sine of 1 degree.

  • (optional) The maximum width of the kickback.

remove_small_rings

Removes any small rings from a geometry.

Returns null if all of the rings are too small.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The input geometry.

  • The maximum MBR diagonal length.

  • (optional) The maximum ring area.

  • (optional) The maximum area to square perimeter ratio.

remove_spikes

Removes any spikes from a geometry.

A spike is defined to be three consecutive points (A, B, C) such that:

  1. The distance AB is less than the distance BC.
  2. The sine of the angle ABC is less than a maximum value which may be specified by the second parameter.
  3. (Optionally) the distance AB is less than a maximum "length" value specified by the third parameter.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The input geometry.

  • (optional) The maximum value for the sine of the angle in the spike.

         Note: If omitted, this defaults to the sine of 1 degree.

  • (optional) The maximum length of the spike.

report_invalid

Validates the input geometry and returns a list of problems found or null if no problems found. The returned list can be iterated over and the following builtins used to obtain the invalidity reason and geometry:

  • report_invalid_get_reason

  • report_invalid_get_geometry

     Note: The geometry returned by report_invalid_get_geometry may be null for certain types of geometry invalidity.

  • A geometry.

  • A double value representing the maximum deviation value to be used for validation. This controls the maximum distance at which certain geometric irregularities - e.g. deviation of the rings of a 3D area from strict coplanarity - will be ignored. This value is only guaranteed to be used if the input geometry is a 3D geometry, otherwise it may be ignored and substituted by the geometry tolerance. A negative value may be passed to use the default geometry tolerance.

  • (optional) A double value representing the linear resolution to be used for validation. This controls the minimum distance at which two points are not considered to be unique, and small geometries may degenerate. This value is only guaranteed to be used if the input geometry is a 3D geometry, otherwise it will be ignored and substituted by the geometry tolerance. A negative value may be passed to use the default geometry tolerance.

report_invalid_get_geometry

Returns a geometry related to a single invalidity report.

This should be used on the elements obtained by running a "Loop over a Collection or Geometry" over the output of report_invalid.

  • An element within the report_invalid returned list.

report_invalid_get_reason

Returns the string containing a descriptive reason in English for a single invalidity report.

This should be used on the elements obtained by running a "Loop over a Collection or Geometry" over the output of report_invalid.

Example:

Geometry 0 (Solid) is invalid: PolyhedralSurface (shell) 0 is invalid: Polygon 8 is invalid: Ring 0 self-intersects.

  • An element within the report_invalid returned list.

reverse_line

Reverses the order of the vertices in a simple line geometry.

Returns a copy of the line geometry, with the same vertices but running in the opposite direction.

Returns null if parameter is not a simple line geometry.

  • Any simple line geometry.

round_geom

Returns a copy of the input geometry, rounded to the specified precision.

Precision is specified as the number of digits allowed after the decimal point in the coordinates of the returned geometry, with negative values being treated as an instruction to round before the decimal point.

  • A geometry to round.

  • Precision to round to, as an integer.

  • (optional) Whether or not to check if the geometry is valid after rounding. Default is true.

scale_and_rotate

Returns a 2D copy of the input geometry scaled and rotated.

  • The geometry to scale and rotate. It can be 2D or heighted 2D, of any type.

  • The Point geometry to scale and rotate about, must be a 2D or heighted 2D simple point.

  • The scale factor to use.

  • The angle to rotate the object, in radians.

segment

Returns a segment from a line as two consecutive vertices.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The line geometry from which the segment is taken

  • The index of the vertex to extract, or 0 for the last segment.

         Note: A negative index will return the segment counting from the last segment.

segments

Obtains the segments from a geometry as a Complex Line.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The geometry to take the segments from, can be of any type.

solid

Creates a solid from a surface geometry by using it as the outer shell. With a complex geometry, non-surface geometries are ignored. If the geometry contains more than one surface, returns null. If the resulting solid is invalid, returns null unless the optional "check validity" parameter is set to false.

  • A geometry

  • (optional) a boolean specifying whether to check for validity on the resulting solid. Default is true.

split_geometry

Returns a geometry created by splitting the first geometry, using the second geometry. Either geometry can be single or multi-part.

  • An area can be split by lines that cross it.

  • A line can be split by lines where they intersect it.

  • A closed ring, such as a polygon boundary is only spilt into parts if there is more than one split point. If there is only a single split point for a closed ring then the split point becomes the new start/end location and the ring is marked as 'open', which allows either end to be moved independently to each other.

If the second geometry does not split the first, then the original geometry is returned unsplit.

Returns a geometry of the same type as the first geometry, split into multiple parts where possible.

  • The geometry to split.

  • The geometry that the first geometry should be split by.

start_of

Returns a point geometry at the location of the start of a simple line geometry.

  • A simple line geometry.

symmetric_difference

Returns a geometry equal to geometry1 XOR geometry2.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The first geometry.

  • The second geometry (to be XOR'd with the first geometry).

symmetric_difference_by_dimension

Returns a geometry equal to geometry1 XOR geometry2.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The required dimensionality of the result.

    • 0 - for GeomCombineResultType.POINTS
    • 1 - for GeomCombineResultType.LINES
    • 2 - for GeomCombineResultType.AREAS
  • The first geometry.

  • The second geometry (to be XOR'd with the first geometry).

true_distance

Returns the distance along the surface of the earth between the 2 points.

     Note: The distance will be returned in metres.

  • The longitude of point 1 in degrees.

  • The latitude of point 1 in degrees.

  • The longitude of point 2 in degrees.

  • The latitude of point 2 in degrees.

  • The earth spheroid model to use.

         Note: Allowed values are: 1: WGS-84 2: GRS-80 3: Airy (1830) 4: Int'l 1924 5: Clarke (1880) 6: GRS-67

union

Returns the union of two or more geometries.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • Any geometry.

  • Another geometry to combine with the first.

  • (optional) Additional geometries to add to the union.

union_by_dimension

Returns a geometry equal to the union of all the input geometries.

     Note: Any heighted 2D geometries will be projected down to 2 dimensions.

  • The required dimensionality of the result.

    • 0 - for GeomCombineResultType.POINTS
    • 1 - for GeomCombineResultType.LINES
    • 2 - for GeomCombineResultType.AREAS
  • Any geometry.

  • Another geometry to combine with the first.

vertices

Obtains the vertices of a geometry, returned as a Complex Point. If no vertices are present, this geometry will be clear.

     Note: This function does not currently fully support measured geometries. Any measured geometries will be projected down to 2 dimensions.

  • The geometry from which to take the vertices.

volume

Returns the volume of a geometry.

  • If the geometry passed is not a solid, then the volume returned will be 0.

  • If it is a complex geometry, the volume returned will be the sum of the volumes of each simple solid in the complex geometry.

  • The volume of the geometry.

Identity

Function

Description

Parameter(s)

generate_uuid

Generates a (version 4) random UUID string in lower-case 8-4-4-4-12 hexadecimal format (e.g. 125d4167-c85b-43d4-b416-523625244020).

None

object_source_data_store

Returns the name of the Data Store that loaded the object, or the full path if the second input parameter is set to true.

Will return null if the object was not read from a data store.

  • (Object) The object

  • (Boolean) Set to true to return the full Data Store path and name. If false then only the name of theData Store will be returned.

read_sequence

Returns the next value in the sequence (as an integer).

  • The database to read the sequence from, specified by a JNDI location (as a string).

  • The sequence name (as a string).

  • (optional) The schema name, if different from the default (as a string).

rule_name

Returns the name (and optionally the path) of the currently running rule, or of the rule which triggered the current action if running an action map.

     Note: Paths are returned without a type prefix, for example: "/Production/Mandatory/Water Network/Pipe pressure must match the valve".

  • (optional) Set to "true" to return the full path and name of the rule. Otherwise just the name will be returned.

Lookup

Function

Description

Parameter(s)

get_session_parameter_value

Returns the value of a named parameter in a session.

     Note: If you try and use a session parameter that has not been defined on a session then you get an error.

Name of the parameter to retrieve.

metadata_store_lookup

Looks up the value of a key in a specific table within in a metadata store.

The query will match all keys in the table that equals the input value. If there are multiple matches, the first value found in the table is returned.

     Note: The returned value is the same as a Lookup Value using the same metadata store, table and key.

     Note: This built-in function is the reverse of metadata_store_reverse_lookup.

  • The full path to the metadata store (without the DATASTORE:// prefix) e.g. TEST/CONSTANT_STORE.
  • The name of the table in the metadata store.
  • The key string.
  • (optional) The default value to return if the query does not find any result.

metadata_store_reverse_lookup

Look up the key of a value in a specific table within in a metadata store.

The query will match all values in the table that equals the input value. If there are multiple matches, the first key found in the table is returned.

     Note: This built-in function is the reverse of metadata_store_lookup.

  • The full path to the metadata store (without the DATASTORE:// prefix) e.g. TEST/CONSTANT_STORE.
  • The name of the table in the metadata store.
  • The value string.
  • (optional) The default key to return if the query does not find any result.

Mathematical

Function

Description

Parameter(s)

abs

Returns the absolute value of the input parameter.

If the parameter is negative, it is returned with its sign reversed so that it becomes positive. Otherwise it is returned unchanged.

  • Any numerical value.

acos

Returns the inverse cosine in radians (0.0 to pi).

  • A numerical value in the range [-1,1].

asin

Returns the inverse sine in radians. The result will be an angle in the range between -pi/2 and pi/2.

  • A numerical value in the range [-1,1].

atan

Returns the inverse tangent in radians. The result will be an angle in the range between –pi/2 and pi/2.

  • Any numerical value.

atan2

Converts Cartesian x and y co-ordinates to polar co-ordinates and returns the polar angle, measured counter-clockwise from the positive x-axis.

The result will be an angle in radians in the range between -pi and pi.

  • The x-coordinate value.

  • The y-coordinate value.

ceil

Rounds a numerical value up to the nearest integer value greater than or equal to the input value.

  • Any numerical value.

cos

Returns the cosine of an angle in radians (in the range [-1,1]).

  • Any numerical value.

exp

Returns the inverse natural logarithm of a number (i.e Euler's number raised to the power of the input parameter, ex).

  • Any numerical value.

floor

Rounds a numerical value down to the nearest integer value less than or equal to the input value.

  • Any numerical value.

is_infinite

Tests if a number is infinite in magnitude.

Returns true if the number is positive or negative infinity, and false otherwise.

  • Any numerical value.

is_NaN

The special numerical value "not a number" results from certain mathematical operations such as dividing 0.0 by 0.0, which cannot be computed.

Returns true if the number has the special value "not a number" and false if it is a valid (finite or infinite) number.

  • Any numerical value.

log

Returns the natural logarithm (base e) of a number.

  • A numerical value greater than 0.

log10

Returns the logarithm to base 10 of a number.

  • A numerical value greater than 0.

max

Returns the largest of 2 or more values.

  • A numerical, boolean or string value.

  • Another numerical, boolean or string value.

  • (optional) Additional numerical, boolean or string values.

min

Returns the smallest of 2 or more values.

  • A numerical, boolean or string value.

  • Another numerical, boolean or string value.

  • (optional) Additional numerical, boolean or string values.

pow

Returns the value of one number raised to the power of another number (ab).

  • Any numerical value (a).

  • Any numerical value (b).

round

Returns a number rounded to the nearest integer value.

  • A numerical value (a).

  • (optional) Number of decimal places to round to (b). If omitted, rounding is to the nearest integer.

sin

Returns the sine of an angle in radians (in the range [-1,1]).

  • A numerical value representing an angle in radians.

sqrt

Returns the (positive) square root of a number.

  • A numerical value greater than 0.

tan

Returns the tangent of an angle (specified in radians).

  • A numerical value representing an angle in radians.

Measured Geometry

Function

Description

Parameter(s)

get_measure_maximum

Returns the maximum measure value of a geometry.

The maximum value may not necessarily be found at the start/end of the geometry.

Measures can be null so the maximum may be null. If the input parameter is null, the value returned will be null.

If the input geometry is not a measured geometry, an exception will be thrown.

  • A measured geometry.

get_measure_minimum

Returns the minimum measure value of a geometry.

The minimum value may not necessarily be found at the start/end of the geometry.

Measures can be null so the minimum may be null. If the input parameter is null, the value returned will be null.

If the input geometry is not a measured geometry, an exception will be thrown.

  • A measured geometry.

is_measured_line_monotonic_increasing

Returns a boolean to indicate if the input measured geometry is a simple line and measured with values increasing in the digitised direction along its length.

If the input geometry is not a simple measured line, an exception will be thrown.

  • A measured line geometry.
  • (optional) A boolean to indicate if null measure values should be ignored.

line_segment_from_measures

Returns the segment of linework between 2 particular measure values.

The returned line geometry will be in direction based on the order of the specified measure values, rather than the geometric order of the input line.

  • A measured simple line geometry.

  • The value of the measure to signify the start point for the output segment.

  • The value of the measure to signify the end point for the output segment.

  • (optional) The tolerance for measures being outside the range present (in measure units).

         Note: If not specified then the horizontal spatial tolerance will be used which may not be applicable for the units of the measures.

measure_from_point

Returns the measure value located at the nearest position on the input line to the point geometry.

Linear interpolation between stored measure values (located at vertices) will be used to identify the exact measure value along the input line where the nearest location (in 2D plan form) to the point is found.

If the measure value at the specified vertex is null or if either of the measure values adjacent to the point geometry are null, the return value will be null.

If the input geometry is not a simple measured line, an exception will be thrown.

  • A measured line geometry.

  • The location from which the measure will be retrieved.

    If the input geometry is a simple measured line, the location can be defined as either the nearest point on line to the specified point or as the 1-based integer index of the vertex within the line.

    If the input geometry is a complex measured line, the location must be defined as the nearest point on the line.

measured_point

Builds a measured point from x, y and m values.

  • The x-coordinate value of the point.
  • The y-coordinate value of the point.
  • The measure value of the point. May be null.

point_from_measure

Returns a point geometry located at the first position on the input line where the measure value is found.

Linear interpolation between stored measure values (located at vertices) will be used to identify the exact position along the line where the specified measure value is found.

If the input geometry is not a simple measured line, an exception will be thrown.

If the measure value is not found in the input geometry, an exception will be thrown.

  • A measured simple line geometry.

  • The measure value to find (double).

  • (optional) The tolerance for measures being outside the range present (in measure units).

         Note: If not specified then the horizontal spatial tolerance will be used which may not be applicable for the units of the measures.

set_measure

Returns a copy of the input geometry with a measure set at the specified location.

     Note: This will overwrite any existing measure value at that location.

Setting a null measure value is supported.

  • A measured geometry.

  • The vertex on which to set the measure.

         Note: This is defined as either the nearest vertex to the specified point or as the 1-based integer index of the vertex within the line.

Placekey

Function

Description

Parameter(s)

get_placekey_from_address

Returns the Placekey (https://www.placekey.io/) for a location defined by an address and optionally a POI name. Returns null if there was no match.

     Note: Looks up the placekey.io online API so requires external web access.

If some parameters passed in are null or empty string then an attempt to fuzzily match will be made

  • The Placekey api key to allow access via your Placekey account

  • An ISO country code as a string e.g. "US"

  • A postal or zip code e.g. "94102"

  • A Region e.g. "CA"

  • A City e.g. "San Francisco"

  • A Street Address e.g. "1 Dr Carlton B Goodlet Pl"

  • (optional) A POI or Location name e.g. "San Francisco City Hall"

get_placekey_from_point

Returns the Placekey (https://www.placekey.io/) for a location defined by either a point geometry, or x and y values in WGS84 lon/lat coordinates. Returns null if there was no match. If a point geometry, then it can be 2D or heighted 2D (Z values are ignored).

     Note: Looks up the placekey.io online API so requires external web access.

  • The Placekey api key to allow access via your Placekey account

  • Either: 1) A point geometry with WGS84 coordinates in lat/lon or 2) the WGS84 longitude (x) as a double value.

  • If parameter 2 is a longitude double value then this parameter must be the latitude (y) as a double value.

Shifting

Function

Description

Parameter(s)

shift_geometry

A shifted version of the geometry (see Positional Data Shifting).

This will be a geometry of the same type as the input geometry with the same number of vertices.

     Note: Ensure that the name used for the register_shift_vector built-in operation is used here.

  • A name to identify a set of shift vectors.

  • The geometry to be shifted, can be of any type

Sorting

     Note: The tsort_* functions are used to implement iterating through objects in dependency order. Please contact 1Spatial Support for further guidance on their use.

Function

Parameter(s)

tsort_blocked_objects

  • The name of the topological sort. If not provided, or null, the default topological sort will be used.

tsort_blocked_predecessors

  • The successor.

  • The name of the topological sort.

         Note: If not provided, or null, the default topological sort will be used.

tsort_blocked_successors

  • The blocked predecessor.

  • The name of the topological sort.

         Note: If not provided, or null, the default topological sort will be used.

tsort_ordered_objects

  • The name of the topological sort.

         Note: If not provided, or null, the default topological sort will be used.

String

Function

Description

Parameter(s)

index_of

Searches in a string for occurrences of another string and returns the index of the first match found (where the first character is at index 0).

Returns -1 if the string could not be found.

  • The string in which to search.

  • The string to search for.

  • (optional) The 0-based index in the first string to start the search from. If omitted, the search starts from the beginning of the first string.

jaro_winkler_similarity

Returns a double value representing the Jaro-Winkler similarity score between two words.

If both strings are null or empty then they are considered an exact match.

  • The first word to compare.
  • The second word to compare.
  • (optional) Ignore case. If true (default), words are converted to upper case before comparison.
  • (optional) Length of maximum common prefix in the range 0 to 4. If null default 4 is used.
  • (optional) Scaling factor in the range 0 to 0.25 indicating how much the score is adjusted upwards for having common prefixes. If null, default 0.1 is used.
  • (optional) Boost threshold to adjust the Jaro distance with the Winkler modification to give emphasis to common prefixes. If null default 0.7 is used.

length

Returns the length of a string (number of characters).

  • Any string.

levenshtein_distance

Returns an integer for the difference, 0 if identical.

  • The first string.

  • The second string.

re_search

Performs a regular expression search for a Java-style regular expression inside a string.

If a match is found, the matching string (a substring of the first string) is returned. Otherwise null is returned.

  • The string to search in.

  • A string containing the regular expression to search for.

re_subs_all

Replaces all occurrences of patterns matching a Java-style regular expression in a string with the specified replacement string.

  • The string to search and replace in.

  • A string containing the regular expression to search for.

  • The replacement string, for each match found for the regular expression.

re_subs_first

Replaces the first occurrence of a pattern matching a Java-style regular expression in a string with the specified replacement string.

  • The string to search and replace in.

  • A string containing the regular expression to search for.

  • The replacement string, for the first match found for the regular expression.

soundex

Returns the soundex code for the word, or null if the word cannot be mapped to a soundex.

  • The word (string) to be tested.

split_string

Split a string into parts based on a delimiter. If an index is provided, then this will return the element at that index.<br><br> NOTE: Start, end, or double delimiters will return empty strings (e.g the first two elements for ',,A,B' delimited by ',' will be empty strings).

  • The string to be split.

  • The delimiter to use to split the string.

  • (optional) The zero-based index of the element.

substring

Returns substring of the input string between the specified character indexes (where the first character is at index 0).

  • The input string.

  • The 0-based start index specifying where the substring should start.

  • (optional) The 0-based end index specifying where the substring should end.

to_lowercase

Converts a string to lower case.

  • The input string.

to_uppercase

Converts a string to upper case (capital letters).

  • The input string.

trim

Returns a trimmed String, or null if a null object was passed in.

  • The input string.

Timestamp

Function

Description

Parameter(s)

add_date

Adds a date and time in the TIMESTAMP date format yyyy-MM-dd HH:mm:ss.SSS.

     Note: Some Data Stores may not hold the same precision levels for time data as the TIMESTAMP. For example, if the TIMESTAMP value is exported to a Data Store with less accurate time, the TIMESTAMP value in will reflect that in the target Data Store.

  • The Timestamp to increment.

    The Timestamp is obtained from the following values:

    • static value
    • dynamic value
    • get_current_date function
  • The number of milliseconds to add to the Timestamp.

current_datetime

Returns the current date and time as a string.

  • (optional) A string describing the date format.

get_current_date

Returns the current date and time in the TIMESTAMP date format yyyy-MM-dd HH:mm:ss.SSS.

None

to_timestamp

Converts a date/time formatted string, or time in milliseconds, into a timestamp datatype.

The default date/time format is "yyyy-MM-dd hh:mm:ss.SSS z". The default format allows just the date with no time to be specified. For example 2017-03-17 14:25:03 GMT or 2017-03-17.

The time specified in milliseconds is from January 1, 1970, 00:00:00 GMT.

     Note: For more information about the format rules, refer to the Oracle documentation.

  • The date/time formatted (String), or time in milliseconds (Long).
  • (optional) Format of the date/time string. If not specified the default format is used.

timestamp_to_millis

Converts the provided timestamp to millis since the epoch.

  • The timestamp to convert to millis.

Topology

Function

Description

Parameter(s)

is_structured

Tests if an object is topologically structured.

Returns true if the object is structured and false otherwise.

  • The object to be tested

Validation

Function

Description

Parameter(s)

rule_hotspot_attributes

Only relevant when used in an Action within an ActionMap.

Returns the list of the names of the attributes that caused the non-conformance.

For geometry checks this is the name of the geometry and for attribute checks it is the names of the attribute(s) that were implicated.

 

rule_hotspot_geometry

Only relevant when used in an Action within an ActionMap.

Returns the hotspots from the rule that triggers this action. Hotspots are the locations of non-conformances, inferred from the rule. e.g. If a rule checks that geometries should not intersect, then a non-conformance hotspot geometry will be the geometry of the intersection.

Not all rules will be able to infer a hotspot geometry so there is an optional parameter to provide the geometry to report when there is no hotspot, typically set to the original object's geometry.

  • (optional) A default value if no hotspots are found. The default value must be geometric.

Web Services

Function Description Parameter(s)

base64_decode

Decode a string from base64.

The encoded string to decode.

base64_encode

Encode a string as base64.

The string to encode.

http_request

Execute HTTP request.

Returns the request response. Use the http_request_get_response_status_code and http_request__get_responsebody built-ins to extract parts of the response.

  • The HTTP method to use. Must be one of GET, POST, PUT, or DELETE.

  • The URL to execute the request against.

  • The authorisation for the service or null if no authorisation needed. This sets the value in the Authorization header of the request. For example, "Bearer <token>"

  • A string containing request body to send. Only used for POST and PUT. Set to null for no body.

  • A string containing the 'Content-Type' to set for the body. Must only be set when a body is also set. Set to null to use the default of 'application/json'

  • (Optional) Any additional headers to set on the request, of the form KEY=VALUE.

http_request_get_response_body

Returns the body of the HTTP response.

The response returned by HTTP request.

http_request_get_response_header

Returns the header of the HTTP response.

The response returned by http_request.

The header to retrieve the value from.

http_request_get_response_status_code

Returns the status code of the HTTP response.

The response returned by http_request.

json_read

Extract a value from a JSON array or object.

Returns the JSON value indicated by the provided path through the JSON structure.

  • The JSON as a string.

  • The key or index to use to extract a value from the JSON structure.

  • (Optional) Any extra keys or indexes to use to further navigate through the JSON structure.