How the LineFromWKB() function works in Mariadb?

The LineFromWKB() function is a spatial function that converts a binary representation of a line to a geometry value.

Posted on

The LineFromWKB() function is a spatial function that converts a binary representation of a line to a geometry value. It can be used to create a line geometry from a well-known binary (WKB) format, such as 0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840. The LineFromWKB() function is a synonym for the ST_LineFromWKB() function and can be used interchangeably.

Syntax

The syntax of the LineFromWKB() function is as follows:

LineFromWKB(wkb, [srid])

The wkb is the binary representation of the line in the WKB format. It must start with a byte order marker, followed by a geometry type code, followed by a number of points, followed by a list of point coordinates. Each point coordinate consists of two or more numeric values, representing the x, y, and optionally z and m dimensions. For example, 0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840 is a valid WKB representation of a line.

The srid is an optional parameter that specifies the spatial reference system identifier (SRID) of the geometry. It can be any positive integer value that corresponds to a valid SRID in the spatial_ref_sys table. If the srid is not specified, the function assumes a default SRID of 0.

The LineFromWKB() function returns a geometry value that represents the line geometry constructed from the binary representation. If the input binary is not a valid WKB representation of a line, the function returns NULL.

Examples

In this section, we will show some examples of how to use the LineFromWKB() function in Mariadb.

Example 1: Creating a line geometry from a binary representation

The following example shows how to use the LineFromWKB() function to create a line geometry from a binary representation in the WKB format.

SELECT LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840);

The output is:

LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0x0000000001030000000300000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840

As you can see, the LineFromWKB() function returns a geometry value that represents the line geometry constructed from the binary representation. The geometry value is displayed in a hexadecimal format, which can be converted to a human-readable format using the ST_AsText() function, as shown below:

SELECT ST_AsText(LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840));

The output is:

ST_AsText(LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840))
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LINESTRING(0 0,1 1,2 2)

Example 2: Creating a line geometry from a binary representation with a specified SRID

The following example shows how to use the LineFromWKB() function to create a line geometry from a binary representation in the WKB format with a specified SRID.

SELECT LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840, 4326);

The output is:

LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840, 4326)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0x00000000010A0000000300000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840

As you can see, the LineFromWKB() function returns a geometry value that represents the line geometry constructed from the binary representation with a specified SRID of 4326, which is the SRID for the WGS 84 coordinate system. The geometry value is displayed in a hexadecimal format, which can be converted to a human-readable format using the ST_AsText() function, as shown below:

SELECT ST_AsText(LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840, 4326));

The output is:

ST_AsText(LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840, 4326))
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LINESTRING(0 0,1 1,2 2)

Example 3: Creating a line geometry from an invalid binary representation

The following example shows how to use the LineFromWKB() function to create a line geometry from an invalid binary representation in the WKB format.

SELECT LineFromWKB(0x0102000000020000000000000000000000000000000000000000000000000000000000F03F000000000000F03F);

The output is:

LineFromWKB(0x0102000000020000000000000000000000000000000000000000000000000000000000F03F000000000000F03F)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
NULL

As you can see, the LineFromWKB() function returns NULL, because the input binary is not a valid WKB representation of a line. The input binary has an invalid number of points, which is 2 instead of 3 or more.

There are some other functions that are related to the LineFromWKB() function in Mariadb. They are:

  • The LineFromText() function: This function converts a text representation of a line to a geometry value. It is similar to the LineFromWKB() function, but it takes a well-known text (WKT) format as the input, such as 'LINESTRING(0 0, 1 1, 2 2)'.
  • The ST_AsText() function: This function converts a geometry value to a text representation in the WKT format. It is the inverse of the LineFromText() function. For example, ST_AsText(LineFromWKB(0x0102000000030000000000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840)) returns 'LINESTRING(0 0, 1 1, 2 2)'.
  • The ST_AsWKB() function: This function converts a geometry value to a binary representation in the WKB format. It is the inverse of the LineFromWKB() function.