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) | Returns |
---|---|---|---|
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. |
|
The bitwise AND of the two integers. |
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. |
|
The bitwise complement of the integer. |
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. |
|
The bitwise OR of the integers. |
bit_shift |
Returns an integer value computed by shifting the binary bits of the input value. |
|
The integer formed by shifting the bits of the first parameter as specified by the second 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. |
|
The bitwise XOR of the integers. |
Classes and Attributes
Function | Description | Parameter(s) | Returns |
---|---|---|---|
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 and class_is_attribute_null. |
|
Return the type of the provided attribute. |
class_get_attribute_value |
Return the value of an attribute for an object. |
|
The value of the attribute. |
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 input mapping target names. |
|
The collection of attribute names. |
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. |
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 and class_get_attribute_type. |
|
Return TRUE if an attribute is NULL otherwise return FALSE. |
compare_attributes |
Compares 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:
|
|
Returns a list of mismatches, or null values if the objects are identical. |
compare_attributes_get_name |
Returns the attribute name that failed the comparison. This should be used on the elements obtained by running a "Loop over a Collection or Geometry" over the output of compare_attributes. |
|
An attribute name. |
compare_attributes_get_value_source |
Returns the attribute value in the source 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. |
|
The attribute value in the source object. |
compare_attributes_get_value_target |
Returns the attribute value in the target object that failed the comparison. This should be used on the elements obtained by running a "Loop over a Collection or Geometry" over the output of compare_attributes. |
|
The attribute value in the target object. |
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. 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". |
|
A collection of class names. |
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. |
Collection
Function | Description | Parameter(s) | Returns |
---|---|---|---|
count |
Returns the size of a collection. |
|
The number of elements in the collection. |
Conversion
Function | Description | Parameter(s) | Returns |
---|---|---|---|
to_degrees |
Converts an angle specified in radians to degrees. |
|
A numerical value representing the same angle measured in degrees. |
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. Timestamp values are returned as the number of milliseconds since 00:00:00 UTC on 1 January 1970. |
|
An integer value or null. |
to_radians |
Converts an angle specified in degrees to radians. |
|
A numerical value representing the same angle measured in radians. |
to_real |
Converts a numerical, boolean or string value to a real (floating point) number. Note: The boolean values true and false are converted into 1.0 and 0.0 respectively. |
|
A floating point number. |
to_string |
Converts any value to a string. |
|
A string representation of that value. |
Geometric
Function | Description | Parameter(s) | Returns |
---|---|---|---|
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 real value in the range [0,pi] ( or [0,180]). |
area |
Returns the area of a geometry.
Note: Any heighted 2D geometries will be projected down to 2 dimensions. |
|
The area of the geometry. |
boundary |
Returns the boundary of a geometry.
This function can be used in combination with the polygon() function to correct badly formed areas, as long as the rings do not self-intersect or intersect each other. If the areas may contain duplicate points, kickbacks or small loops, these should be eliminated before extracting the boundary and reforming the polygon. |
|
A geometry representing the boundary of the input geometry. |
buffer |
Returns a geometry formed by taking a buffer zone around the input geometry at a fixed distance. |
|
A geometry representing the buffer around the input geometry. |
centroid |
Returns a point geometry at the 2D centroid of the supplied geometry. 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. |
|
A 2D point geometry at the centroid. |
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:
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:
|
|
A new geometry with the specified dimension. |
convex_hull |
Returns the convex hull of the input geometry, which is the smallest convex geometry that contains the input geometry. The return value will be a simple area geometry with no inner rings. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The convex hull of that 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. |
|
The approximate convex hull polygon of the geometries. |
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 number of areas. |
count_inner_rings |
Counts the clockwise digitised rings of a simple or complex geometry:
|
|
The number of inner rings. |
count_parts |
Returns the number of parts in a geometry.
|
|
The number of parts in the 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 number of surfaces. |
count_vertices |
Returns the total number of vertices in a geometry:
|
|
The number of vertices. |
create_geometry_from_wkt |
Creates a geometry from a geometric Well-known text String. |
|
A geometry created from the provided WKT. |
difference |
Returns the difference between two geometries. The result will be a geometry consisting of all the parts of the first geometry which are not in the second geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to geometry1 AND NOT geometry2. |
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. |
|
An angle in degrees between 0 and 90. |
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: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to geometry1 AND NOT geometry2. |
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. |
|
The dimension of the input geometry (0 to 2) or -1 if input is null. |
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: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The minimum distance between the two geometries. |
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 (hopefully) fewer vertices. The line-work of the resulting geometry will lie entirely within the specified tolerance of the original geometry's line-work. |
|
The simplified geometry. |
drag_vertex |
Returns a geometry formed by moving a vertex on a simple line geometry. 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. This function uses a scale and rotate algorithm to try to preserve the shape of the geometry on either side of the vertex being moved. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The resulting simple line geometry after the vertex has been moved to the specified location. |
end_of |
Returns the end point of a simple line geometry. |
|
A simple point geometry located at the end of the line. |
ends_of |
Returns the end points 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. |
|
A simple or complex point geometry containing the start and end of the line. |
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:
Additional information:
|
|
A new 3D geometry of the extrusion. |
find_duplicates |
Find duplicates in a given geometry within a given tolerance. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A multi-part point geometry representing the locations of duplicate points or null if there are no duplicate vertices. |
find_kickbacks |
Find the locations of 'kickbacks' within a geometry. Kickbacks are z-shapes on a line with a short segment in between. They are usually detected with larger angles than spikes which is why there is a separate built-in to find them. A kickback is defined to be 4 consecutive points (A, B, C, D) such that:
|
|
A multi-point geometry representing the location(s) of the kickback(s), or null if there are no kickbacks. |
find_self_intersections |
Finds the intersection 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. |
|
A multi-part point geometry showing the location of each self-intersection points, or null if there are no self-intersections. |
find_small_rings |
Find small rings in an area geometry. One or more of the following criteria may be used to determine if a ring is to be considered small:
If any of these parameters is negative it is ignored. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
Descriptor for the complex line geometry containing small rings. |
find_spikes |
Find locations of 'spikes' in the line-work of a geometry. A spike is defined to be 3 consecutive points (A, B, C) such that:
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
Descriptor for the point complex geometry containing spike points. |
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 decimals places will result in the ordinates being returned in rational form (a/b). |
|
A string containing the WKT encoding of the geometry. |
get_job_extent |
Obtain the extent of the current Session. From highest priority to lowest, this is calculated as:
Note: This does not calculate the MBR of the loaded data. |
The Session extent. |
|
get_point |
Returns a representative point guaranteed to lie on the specified geometry. The returned point will be of the same dimension as the input geometry. Note: The point is not necessarily near to the centre of the geometry, but is guaranteed to lie inside it. |
|
A simple point geometry inside the input geometry. |
get_x |
Returns the x-coordinate of a representative point within a geometry. |
|
The x-coordinate of a representative point within the geometry (or null). |
get_y |
Returns the y-coordinate of a representative point within a geometry. |
|
The y-coordinate of a representative point within the geometry (or null). |
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 z-coordinate of a representative point within the geometry (or null). |
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. |
|
A boolean value. True if the geometry has any consecutive coincident vertices. |
has_kickbacks |
Test whether a geometry has kickbacks. A kickback is defined to be 4 consecutive points (A, B, C, D) such that:
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value, true if the geometry has kickbacks and false if it does not. |
has_small_rings |
Test whether a geometry has small rings. One or more of the following criteria may be used to determine if a ring is to be considered small:
If any of these parameters is negative it is ignored. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value, true if the geometry has small rings and false if it does not. |
has_spikes |
Checks whether a geometry has spikes. A spike is defined to be 3 consecutive points (A, B, C) such that:
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value, true if the geometry has spikes and false if it does not. |
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. |
|
The height of the nearest vertex on the heighted 2D geometry. |
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. It returns null if applied to a null geometry, a non-area geometry, an area without inner rings or complex geometry containing areas with no inner rings. The result has the same dimensionality (2D or 3D) as the input geometry. |
|
A simple line if there is only one inner ring, a complex line containing all of the inner rings or null. |
intersection |
Returns the intersection of two or more geometries (the parts in common between all of them). All points in the returned geometry will also lie in all of the input geometries. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to the intersection of all the input geometries, or null if the intersection is empty. |
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: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to the intersection of all the input geometries, or null if the intersection is empty. |
is_aligned |
Align function takes two simple lines and returns true if they are aligned. Exact test varies according to input geometries:
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
True if and only if the geometries are aligned. |
is_boundary_left |
Test whether a line and an area have the boundary left relationship. That is, the area is on the left of the line, and the line is contained in the boundary of the area. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value, true if the boundary left relationship holds and false otherwise. |
is_boundary_right |
Test whether a line and an area have the boundary right relationship. That is, the area is on the right of the line, and the line is contained in the boundary of the area. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value, true if the boundary right relationship holds and false otherwise. |
is_closed |
Test whether a geometry is closed. |
|
A boolean value, true if the geometry is a simple area or a simple line whose end points are coincident and false otherwise. |
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. |
|
A boolean value, true if the geometry is a heighted 2D line which slopes downwards and false otherwise. |
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. |
|
A boolean value, true if the geometry is a heighted 2D line that 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. |
is_noded |
Test if two line geometries intersect at common vertices. If both geometries are heighted 2D, also test whether the heights at the vertices are equal. If there are no points of intersection then the geometries are considered to pass the test. The optional third parameter can be set to false to indicate that the check on z values for heighted 2D geometries should not be made. |
|
A boolean value, true if the geometries are noded and false otherwise. |
is_simple |
Determines whether a geometry is simple according to the criteria in "OpenGIS(r) Implementation Specification for Geographic information Simple feature access - Part 1: Common architecture". For heighted 2D geometries, only the 2D part is considered. The criteria applied are:
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A boolean value. True if the geometry is simple according to the OGC definition. |
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. |
|
A boolean value, true if the geometry is a heighted 2D line which slopes upwards and false otherwise. |
is_valid |
Tests to see if a geometry is valid. The validity criteria are:
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. |
|
A boolean value. True if the geometry is valid. |
line |
Returns a simple line geometry constructed from the points supplied by the parameters. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A simple line geometry based on the input parameters, or null if not successful. |
line_bearing_at_point |
Built-in function that gets the angle of a line at the point specified. Angle is +/- pi in radians anti-clockwise from east (x axis). If the point is not on the line the it uses the nearest point that is on the line. |
|
The angle of the line at this point between -pi and pi, measured in radians anti-clockwise from east (positive x axis). |
line_length |
Returns the length of a line.
Note: Any heighted 2D geometries will be projected down to 2 dimensions. |
|
The length of the 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. |
|
The line segment geometry, or null if the distance parameters are out of range. |
make_2d |
DEPRECATED: please use change_dimension instead. |
|
A 2d geometry. The object is always a newly created object that will have to be freed by the caller. If the argument is not valid, then null is returned. |
make_3d |
DEPRECATED: please use change_dimension instead. |
|
A heighted 2D geometry. |
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).
|
|
The maximum deflection angle in degrees. |
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. |
|
The maximum height of the geometry. |
mbr |
Returns the MBR (minimum bounding rectangle) of one or more geometries. The result is the smallest rectangle, with sides parallel to the x and y axes, containing the input geometries. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to the MBR of the input geometries. |
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. |
|
The minimum height of the 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 vector from the other. A point or a clear geometry is not considered to intersect with anything. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The minimum intersection angle in degrees (-1 if the two geometries do not intersect). |
move_vertex |
Returns a geometry formed by moving a vertex on a point or line geometry. 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. 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. |
|
The resulting point or line geometry after the vertex has been moved to the specified location. |
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 geomtry an exception will be thrown. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry representing the closest point(s). (This will be complex if multiple points are equally close to the originating point). |
nearest_vertex |
Return a point geometry representing the position of the nearest vertex on the input geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A point geometry which has the same X, Y as the nearest vertex on the input geometry. |
offset |
Offset (translate) a geometry by a fixed distance without changing its shape, size or orientation. |
|
The resulting translated geometry. |
outer_ring |
Returns the outer ring of a simple area geometry, as 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. |
|
The out ring geometry if there is only one, or a complex geometry containing all of the outer rings. |
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. |
|
The outer shell geometry if there is only one, otherwise a complex geometry containing all of the outer shells. |
perimeter |
Returns the perimeter of an area geometry.
Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The total length of the inner and outer rings of the geometry. |
point |
Builds a 2D point if passing x and y values, or a heighted 2D point if passing x, y and z. |
|
A point geometry. |
point_along_line |
Returns a point on a line geometry at a distance along it expressed as a proportion of the 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 point geometry. Null if the first argument supplied is not a simple line geometry, or if the second argument is not a numeric value. |
point_at_projection |
Returns a 2D point that is the specified bearing and distance from the point passed in. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A new 2D point, the specified bearing and distance from the origin point. |
point_on_line |
Finds a point on a line geometry at 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. |
|
A point geometry, or null if the distance parameter is out of range, or if the input geometry is not a simple line. |
polygon |
Attempts to form a valid geometry from a 2D or heighted 2D line or area geometry. Calculates which are inner and outer rings, and if necessary reverses the direction of digitising. 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. |
|
An area geometry, possibly complex, or null if the rings do not form a valid 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. Note: If the lines do not form any polygon, then NULL is returned. |
|
The polygon(s) formed by the lines. If the lines do not form any polygon then NULL is returned. |
proportion_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 geometry, the nearest point and its distance are calculated on the line geometry in plan, ignoring z-values. |
|
Proportional distance along the line, a real number in the range [0,1]. |
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. Note: For heighted 2D geometries, both the plan co-ordinates and the height must be equivalent (within geometric tolerance) to be considered duplicate. |
|
A copy of the geometry with all duplicate vertices removed. |
remove_kickbacks |
Removes any kickbacks from a geometry. A kickback is defined to be 4 consecutive points (A, B, C, D) such that:
For each such kickback, the points B and C will be replaced by a new vertex midway between them. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The resulting geometry with kickbacks removed. |
remove_small_rings |
Removes any small rings from a geometry. One or more of the following criteria may be used to determine if a ring is to be considered small:
If any of these parameters is negative it is ignored. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The resulting geometry with small rings removed, or null if all of the rings are too small. |
remove_spikes |
Removes any spikes from a geometry. A spike is defined to be 3 consecutive points (A, B, C) such that:
For each such spike, the vertex B will be removed. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
The resulting geometry with spikes removed. |
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 built-ins used to obtain the invalidity reason and geometry:
An example Action to use this might look like:
Note: The geometry returned by report_invalid_get_geometry may be null for certain types of geometry invalidity. |
|
A list of validity problems found with the input geometry or null if no geometric problems are found. |
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. |
|
A geometry related to the invalidity, or null if no geometry present. |
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. |
|
A string description of the invalidity. |
reverse_line |
Reverses the order of the vertices of a simple line geometry. |
|
A copy of the line geometry, with the same vertices but running in the opposite direction. |
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. |
|
The rounded geometry. |
scale_and_rotate |
Returns a 2D copy of the input geometry scaled and rotated. |
|
A 2D copy of the input geometry scaled and rotated. |
segment |
Returns a segment from a line geometry as a simple line geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A simple line segment based on two consecutive vertices. |
segments |
Obtains the segments from a geometry as a Complex Line. Note: This function does not currently fully support measured geometries. Any measured geometries will be projected down to 2 dimensions. |
|
The segments of the geometry returned as a Complex Line, if no segments are present this geometry will be clear. |
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 simple solid with the given surface as its outer shell. |
split_geometry |
Returns a geometry created by splitting the first geometry using the second geometry. Either geometry can be single or multi-part.
If the second geometry does not split the first, then the original geometry is returned unsplit. |
|
A geometry of the same type as the first geometry, split into multiple parts where possible. |
start_of |
Returns the start point of a simple line geometry. |
|
A simple point geometry located at the start of the line. |
symmetric_difference |
Returns the symmetric difference between two geometries. This means any part of the geometries that are in one geometry, but not in both geometries. If both geometries are null or both geometries are equal then returns null. If only one geometry is null then returns the non-null geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to geometry1 XOR geometry2. |
symmetric_difference_by_dimension |
Returns the symmetric difference between two geometries, which match the passed in dimensionality. This means any part of the geometries that are in one or other geometry but not in both geometries. If both geometries are null or both geometries are equal then returns null. If only one geometry is null then returns the non-null geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to geometry1 XOR geometry2. |
true_distance |
Calculates the distance along the surface of the earth between 2 points, taking into account the fact that the earth is not perfectly spherical. |
|
The distance along the surface of the earth between the 2 points. |
union |
Returns the union of two or more geometries. Any point which lies in any of the input geometries will also lie in the returned geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to the union of all the input geometries. |
union_by_dimension |
Returns the union of two or more geometries, which match the passed in dimensionality. Any point which lies in any of the input geometries will also lie in the returned geometry. Note: This function does not currently fully support heighted or measured 2D geometries. Any such geometries will be projected down to 2 dimensions. |
|
A geometry equal to the union of all the input geometries. |
vertices |
Obtains the vertices of a geometry as a Complex Point. Note: This function does not currently fully support measured geometries. Any measured geometries will be projected down to 2 dimensions. |
|
The vertices of the geometry returned as Complex Point, if no vertices are present this geometry will be clear. |
volume |
Returns the volume of a geometry.
|
|
The volume of the geometry. |
Identity
Function | Description | Parameter(s) | Returns |
---|---|---|---|
generate_uuid |
Generates a (version 4) random UUID string in lower-case 8-4-4-4-12 hexadecimal format. Example: 125d4167-c85b-43d4-b416-523625244020 |
A randomly generated UUID as a String. |
|
object_source_data_store |
Get the name of the Data store that loaded the object. |
|
String. Null if the object was not read from a Data Store (i.e. it was created by an Action), otherwise the name of the Data Store, or the full path if the second input parameter is true. |
read_sequence |
Read the next value from a sequence in a database. Currently only Oracle databases are supported by this built-in. |
|
The next value in the sequence (as an integer). |
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. Paths are returned without a type prefix, for example: "/Production/Mandatory/Water Network/Pipe pressure must match the valve" |
|
The name (default) or path of the Rule. |
Lookup
Function | Description | Parameter(s) | Returns |
---|---|---|---|
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. |
|
The value set for the parameter for this Session. |
Mathematical
Function | Description | Parameter(s) | Returns |
---|---|---|---|
abs |
Returns the absolute value of the parameter passed in. If the parameter is negative, it is returned with its sign reversed so that it becomes positive. Otherwise it is returned unchanged. |
|
Absolute value of the parameter - numerical value in the range [0,infinity). |
acos |
Returns the inverse cosine of the parameter passed in in radians. The result will be an angle in the range between 0 and pi. |
|
A real value in the range [0,pi]. |
asin |
Returns the inverse sine of the parameter passed in. The result will be an angle in the range between -pi/2 and pi/2. |
|
A real value in the range [-pi/2,pi/2]. |
atan |
Returns the inverse tangent of the parameter passed in. The result will be an angle in the range between -pi/2 and pi/2. |
|
A real value in the range (-pi/2,pi/2). |
atan2 |
Converts Cartesian x and y coordinates to polar coordinates and returns the polar angle, measured counter-clockwise from the positive x-axis. The result will be an angle in the range between -pi and pi. |
|
The resulting angle relative to the x-axis, in the range (-pi,pi]. |
ceil |
Rounds a numerical value up to the nearest integer value greater than or equal to the input value. |
|
The smallest integer value that is not less than the input parameter. |
cos |
Returns the cosine of an angle. |
|
A numerical value in the range [-1,1]. |
exp |
Returns the inverse natural logarithm of a number. |
|
Euler's number e raised to the power of the input parameter. |
floor |
Rounds a numerical value down to the nearest integer value less than or equal to the input value. |
|
The largest integer value that is not greater than the input parameter. |
is_NaN |
Test whether a number has the special value "not a number". The special numerical value "not a number" results from certain mathematical operations such as dividing 0.0 by 0.0, which cannot be computed. |
|
A boolean value, true if the number has the special value "not a number" and false if it is a valid (finite or infinite) number. |
is_infinite |
Test whether a number is infinite in magnitude. |
|
A boolean value, true if the number is positive or negative infinity and false otherwise. |
log |
Returns the natural logarithm (base e) of a number. |
|
The natural logarithm of that number - a real number in the range (-infinity,infinity). |
log10 |
Returns the logarithm to base 10 of a number. |
|
The log to base 10 of that number - a real number in the range (-infinity,infinity). |
max |
Returns the largest of two or more values. The values may be either numerical values, booleans or strings. Boolean values are regarded as being equal to either 1 for true or 0 for false. Strings are compared lexicographically. If numbers are compared to strings, they are converted to strings before being compared. |
|
The largest of all the parameters. |
min |
Returns the smallest of two or more values. The values may be either numerical, booleans or strings. Boolean values are regarded as being equal to either 1 for true or 0 for false. Strings are compared lexicographically. If numbers are compared to strings, they are converted to strings before being compared. |
|
The smallest of all the parameters. |
pow |
Returns the value of one number, raised to the power of another number. |
|
The first parameter raised to the power of the second (ab). |
round |
Returns a number rounded to the nearest integer value or to a specified number of decimal places. Numbers halfway between two rounding values are rounded up. For example, 23.5 rounds up to 24. |
|
A number equal to floor(a+0.5) or (floor(a*10^b + 0.5))/10^b. |
sin |
Returns the sine of an angle. |
|
A numerical value in the range [-1,1]. |
sqrt |
Returns the (positive) square root of a number. |
|
A numerical value in the range [0,infinity). |
tan |
Returns the tangent of an angle. |
|
A (possibly infinite) numerical value. |
Measured
Function | Description | Parameter(s) | Returns |
---|---|---|---|
get_measure_maximum |
Returns the maximum measure value of a geometry. Measures can be null, so the maximum may be null. The maximum value may not necessarily be found at the start/end of the geometry. If the argument passed in is null, the value returned will be null. Note: If the argument passed in is not a measured geometry, an exception will be thrown. |
|
The maximum measure value in the 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 argument passed in is null, the value returned will be null. If the argument passed in is not a measured geometry, an exception will be thrown. |
|
The minimum measure value in the geometry. |
is_measured_line_monotonic_increasing |
If the input geometry is a measured simple line, returns a boolean to indicate whether the measure values are increasing in the digitised direction along its length. If the input geometry is a measured complex line, returns a boolean to indicate whether the measured values are increasing across all of the parts in order, as well as whether the values are increasing along the length of each of the parts. If the input geometry is not a measured line, an exception will be thrown. |
|
A boolean to indicate if the monotonic test passed. |
line_segment_from_measures |
Returns the segment of linework between 2 particular measure values. The returned line geometry will be in the direction based on the order of the specified measure values, rather than the geometric order of the input line. The start and end of the line segment are located using the same approach as point_from_measure. For each point:
|
|
A measured line geometry. |
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 input geometry is not a measured line, an exception will be thrown. 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. |
|
The found measure value (double). |
measured_point |
Builds a measured point from x, y and m values. |
|
A measured point geometry. |
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. The tolerance is useful when measure attributes are stored to a different precision than the measures and a measure at the start or end of a line may be evaluated as being off the line by a tiny amount. Additional information:
|
|
A measured point geometry. |
set_measure |
Returns a copy of the input geometry with the measure value set at the specified location. This will overwrite any existing measure value at that location. Setting a null measure value is supported. If the input geometry is not a measured line, an exception will be thrown. |
|
A copy of the input geometry with the measure value set at the specified vertex. |
Placekey
Function | Description | Parameter(s) | Returns |
---|---|---|---|
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. If some parameters passed in are null or empty string then an attempt to fuzzily match will be made. Note: Looks up the placekey.io online API so requires external web access. |
|
The Placekey for a location or null if no match. |
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 a 2D or a 3D point (z values are ignored). Note: Looks up the placekey.io online API so requires external web access. |
|
The Placekey for a location or null if no match. |
Shifting
Note: Shift operations are used to perform Positional Data Shifting (see Positional Data Shifting).
Function | Description | Parameter(s) | Returns |
---|---|---|---|
shift_geometry |
Shifts a given geometry using the named set of shift vectors. A shift vector is a place with a known shift that has already been registered with the named set using the register_shift_vector built-in operation. This function must only be called after all of the required shift vectors have been registered with the shift vector set. This function will error if the geometry to be shifted is outside of the triangulation created by the shift vectors. The output geometry will have the same number of vertices as the input geometry. Only the x and y values of the vertices are affected by the shift, any heights on the vertices will be unchanged. |
|
A shifted version of the geometry. This will be a geometry of the same type as the input geometry with the same number of vertices. |
Sorting
Note: The tsort_*
operations are used to implement iterating through objects in dependency order. Please contact 1Spatial Support for further guidance on their use.
Function | Description | Parameter(s) | Returns |
---|---|---|---|
tsort_blocked_objects |
List of all the objects added to the topological sort that were blocked (normally because of cyclic dependency constraints). |
|
List of blocked objects in meaningless, but deterministic, order. |
tsort_blocked_predecessors |
Set of all of the predecessors in a topological sort that are blocked. This is normally because they are involved in a cyclic dependency. |
|
List of blocked predecessors. |
tsort_blocked_successors |
Set of a topological sort's blocked object's (the predecessor) successors. The successors are also all blocked. |
|
List of blocked successors. |
tsort_ordered_objects |
List of all the objects added to the topological sort in an order that satisfies the supplied dependency constraints. |
|
List of objects in order. Will not contain any objects that were blocked (normally because of cyclic dependency constraints). |
String
Function | Description | Parameter(s) | Returns |
---|---|---|---|
index_of |
Searches in a string for occurrences of another string and returns the 0-based index of the first match found. |
|
The 0-based index of the start of the first match found or -1 if the string could not be found. |
jaro_winkler_similarity |
Calculates the Jaro-Winkler similarity score between two words. It doesn't consider character-specific information, but makes assumptions about typical lengths and the significance of initial matches. It is best suited for short strings such as names. The score is normalised such that 0.0 equates to no similarity and 1.0 is an exact match. If both strings are null or empty then they are considered an exact match.
|
|
A double representing the Jaro-Winkler similarity score between two words. |
length |
Returns the length of a string. |
|
The number of characters in the string. |
levenshtein_distance |
Returns the Levenshtein distance (i.e. the difference as an integer) between two strings. |
|
Integer for the difference, 0 if identical. |
re_search |
Performs a regular expression search for a Java-style regular expression inside a string. If matches are found, the first matching string (a substring of the first string) is returned. Otherwise null is returned. |
|
The matching substring found, or null. |
re_subs_all |
Replaces all occurrences of patterns matching a Java-style regular expression in a string with the specified replacement string. |
|
The resulting string with all matches for the regular expression replaced with the replacement string. |
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 resulting string with the first match for the regular expression replaced with the replacement string. |
soundex |
Calculates the soundex code for a given word. The Soundex code was developed to help negate the effects of all the spelling variations that can occur for similar sounding names (Meyer, Meier, Mire, and Smith, Smithe, Smythe, etc.). This way, indexers can index records based on a Soundex code (how a surname sounds) and *not* by how it is spelled. |
|
The soundex code for the word or null if the word cannot be mapped to a soundex. |
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. Note: Start, end, or double delimiters will return empty strings. Example: Tthe central element for 'A,,B' delimited by ',' will be an empty string. |
|
A collection of strings generated from splitting the string with the delimiter. |
substring |
Returns substring of the input string between the specified character indexes. The substring begins at the character specified by the 0-based start index. If an end index is specified, the substring ends at the character immediately before this end index. Thus the length of the substring is endIndex-startIndex. If the end index is omitted, the substring goes to the end of the input string. |
|
A substring of the input string. |
to_lowercase |
Converts a string to lowercase. |
|
A copy of the input string with all characters converted to lowercase. |
to_uppercase |
Converts a string to uppercase. |
|
A copy of the input string with all characters converted to capitals. |
trim |
Trim a String of leading and trailing white spaces. |
|
A trimmed String, or null if a null object was passed in. |
Timestamp
Function | Description | Parameter(s) | Returns |
---|---|---|---|
add_date |
Adds a number of milliseconds to a Timestamp. |
|
A new Timestamp. |
current_datetime |
Return the current date and time (Default format is yyyyMMdd). In the following formatting examples the date and time is 20th April 2009 at 12:11:
The default time zone is always used. |
|
The current date and time as a string. |
get_current_date |
Returns the current date and time as a timestamp. |
The current date in the format format yyyy-MM-dd HH:mm:ss.SSS. |
|
timestamp_to_millis |
Converts the provided timestamp to milliseconds since the epoch. |
|
Long value representing the milliseconds since the epoch. |
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". For example 2017-03-17 14:25:03 GMT. For more information about the format rules, refer to https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html. The time specified in milliseconds is from January 1, 1970, 00:00:00 GMT. |
|
Timestamp datatype. |
Topology
Function | Description | Parameter(s) | Returns |
---|---|---|---|
is_structured |
Tests whether an object is topologically structured. |
|
A boolean value, true if the object is structured and false otherwise. |
Validation
Function | Description | Parameter(s) | Returns |
---|---|---|---|
rule_hotspot_attributes |
Note: 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. |
A collection of attributes names implicated in the non-conformances of the triggering Rule. |
|
rule_hotspot_geometry |
Note: 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. Example: 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. |
|
A geometry collection containing the hotspots from this feature for the triggering Rule, or null. If an optional default is provided, will return the default instead of null. |
Web Services
Function | Description | Parameter(s) | Returns |
---|---|---|---|
base64_decode |
Decode a string from base64. |
|
A string decoded from base64. |
base64_encode |
Encode a string as base64. |
|
A string encoded as base64. |
http_request |
Execute HTTP request. |
|
The request response. Use the http_request_status_code and http_request_body builtins to extract parts of the response. |
http_request_get_response_body |
Returns the body of the HTTP response. |
|
The body of the HTTP response. |
http_request_get_response_header |
Returns the header value of the HTTP response. |
|
The header value of the HTTP response. |
http_request_get_response_status_code |
Returns the status code of the HTTP response. |
|
The status code of the HTTP response. |
json_read |
Extract a value from a JSON array or object. |
|
The JSON value indicated by the provided path through the JSON structure. |