> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://ocient.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ocient.ferndocs.com/_mcp/server.

# Linestring Constructors

> Create and manage linestrings in OcientGeo, suitable for spatial data representation and analysis.

OcientGeo™ LINESTRING constructors use geospatial data to create a LINESTRING object.

# ST_LINEFROMTEXT

Alias for ST_LINESTRING(CHAR).

Creates a `LINESTRING` from a specified `CHAR`. The `CHAR` must be a `LINESTRING` value in WKT format.

**Syntax**

```sql
ST_LINEFROMTEXT(char)
```

| **Argument** | **Data** **Type** | **Description**                                                      |
| ------------ | ----------------- | -------------------------------------------------------------------- |
| `char`       | `CHAR`            | A character value in WKT format to be used to create a `LINESTRING`. |

**Example**

```sql
SELECT ST_LINEFROMTEXT('LINESTRING(1 2)');
```

*Output*: `LINESTRING(1.000000 2.000000)`

# ST_LINEFROMWKB

Alias for ST_LINESTRING(BINARY).

Creates a `LINESTRING` from the specified `BINARY`. The `BINARY` value must be a `LINESTRING` in WKB format.

**Syntax**

```sql
ST_LINEFROMWKB(binary)
```

| **Argument** | **Data** **Type** | **Description**                                                   |
| ------------ | ----------------- | ----------------------------------------------------------------- |
| `binary`     | `BINARY`          | A binary value in WKB format to be used to create a `LINESTRING`. |

**Example**

```sql
SELECT ST_LINEFROMWKB(
        BINARY(
'0x010200000002000000000000000000f03f000000000000004000000000000008400000000000001040'
        )
    );
```

*Output*: `LINESTRING(1 2,3 4)`

# ST_LINEFROMEWKT

Creates a `LINESTRING` from the specified `CHAR`.

The `CHAR` value must be a `LINESTRING` in EWKT format.

`ST_LINEFROMEWKT` is functionally the same as `ST_LINESTRING(CHAR)`.

The input string must include an `SRID=…​;` value. However, the database ignores this component as all Ocient® geography types are SRID 4326.

**Syntax**

```sql
ST_LINEFROMEWKT('SRID=value;char')
```

| **Argument** | **Data** **Type** | **Description**                                                                                                                                                    |
| ------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `char`       | `CHAR`            | A `LINESTRING` value in WKT format to be used to create a `LINESTRING`. To function properly, you must prefix this argument with an SRID value in the same string. |
| `value`      | `INTEGER`         | Any integer value. This is required, however, the database ignores this component and defaults to SRID 4326.                                                       |

**Example**

```sql
SELECT ST_LINEFROMEWKT('SRID=4326;LINESTRING(1 2)');
```

*Output*: `LINESTRING(1.000000 2.000000)`

# ST_LINEFROMGEOJSON

Creates a `LINESTRING` represented by the specified GeoJSON. The specified GeoJSON can represent a GeoJSON `POINT` or `LINESTRING` type.

Valid GeoJSON formats follow IETF®[**standards**](https://datatracker.ietf.org/doc/rfc7946/), and you can generate them by using [**ST_ASGEOJSON**](/guides/sql-reference/geospatial-functions/conversion-functions). If you specify an invalid GeoJSON, the behavior of the function is undefined.

**Syntax**

```sql
ST_LINEFROMGEOJSON(geojson [, geodesic ])
```

| **Argument** | **Data** **Type** | **Description**                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `geojson`    | `CHAR`            | A GeoJSON value that represents a `POINT` or `LINESTRING` type that is used to create a `LINESTRING`. If `geojson` is NULL, the function returns NULL.                                                                                                                                                                                                                                                  |
| `geodesic`   | `BOOLEAN`         | Optional. A `BOOLEAN` value that determines if the specified `geojson` should be converted from a planar to a geodesic representation. If you specify `geodesic` as `TRUE`, the function adds points to the resulting `LINESTRING` such that it remains within 10 meters of the original planar line. If unspecified, `geodesic` defaults to `FALSE`. If `geodesic` is NULL, the function returns NULL. |

**Examples**

In this example, the function converts an empty GeoJSON value of a `LINESTRING`.

```sql
SELECT ST_LINEFROMGEOJSON('{"type":"LineString","coordinates":[]}',false);
```

*Output*:  `LINESTRING EMPTY`

In this example, the function converts a GeoJSON value of a `LINESTRING`.

```sql
SELECT ST_LINEFROMGEOJSON(
        '{"type":"LineString","coordinates":[[1,1],[1,5],[5,5],[5,1]]}',
        false);
```

*Output*:  `LINESTRING(1 1, 1 5, 5 5, 5 1)`

# ST_LINESTRING

Alias for ST_MAKELINE.

Creates a `LINESTRING` based on the specified inputs.

## ST_LINESTRING(geoArray)

Creates a `LINESTRING` from the specified array of either `LINESTRING` or `POINT` values.

**Syntax**

```sql
ST_LINESTRING(geo_array)
```

| **Argument** | **Data** **Type**                                              | **Description**                                                                         |
| ------------ | -------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `geo_array`  | `ARRAY` of geographies, either `LINESTRING` or `POINT` values. | An array of `LINESTRING` or `POINT` values to be used to create a unified `LINESTRING`. |

**Example**

```sql
SELECT ST_LINESTRING(
        ST_LINESTRING [](ST_LINESTRING(ST_POINT(1, 2), ST_POINT(3, 4))));
```

*Output*: `LINESTRING(1.000000 2.000000, 3.000000 4.000000)`

## ST_LINESTRING(binary)

Creates a `LINESTRING` from the specified `BINARY`. The `BINARY` value must be a `LINESTRING` in WKB format.

**Syntax**

```sql
ST_LINESTRING(binary)
```

| **Argument** | **Data** **Type** | **Description**                                                                                                |
| ------------ | ----------------- | -------------------------------------------------------------------------------------------------------------- |
| `binary`     | `BINARY`          | A `BINARY` value to be used to create a `LINESTRING`. The `BINARY` value must be a `LINESTRING` in WKB format. |

**Example**

```sql
SELECT ST_LINESTRING(BINARY('0x010200000002000000000000000000f03f000000000000004000000000000008400000000000001040'));
```

*Output*: `LINESTRING(1 2,3 4)`

## ST_LINESTRING(char)

Creates a `LINESTRING` from the specified `CHAR`. The `CHAR` value must be a `LINESTRING` in WKT format.

**Syntax**

```sql
ST_LINESTRING(char)
```

| **Argument** | **Data** **Type** | **Description**                                                                                        |
| ------------ | ----------------- | ------------------------------------------------------------------------------------------------------ |
| `char`       | `CHAR`            | A `CHAR` value to be used to create a `LINESTRING`. The argument must be a `LINESTRING` in WKT format. |

**Example**

```sql
SELECT ST_LINESTRING('LINESTRING(1 2)');
```

*Output*: `LINESTRING(1.000000 2.000000)`

## ST_LINESTRING(geo1, geo2)

Creates a `LINESTRING` consisting of two separate geographic arguments, both of which must be either a `POINT` or `LINESTRING`. You can mix geographic types, meaning one argument can be a `POINT` while the other is a `LINESTRING`.

**Syntax**

```sql
ST_LINESTRING(geo1, geo2)
```

| **Argument**   | **Data** **Type**       | **Description**                                                                                                               |
| -------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `geo1`, `geo2` | `POINT` or `LINESTRING` | Two separate geographic arguments to be consolidated into a single `LINESTRING`.  Inputs can be the same type or one of each. |

**Example**

```sql
SELECT ST_LINESTRING(ST_POINT(1, 2), ST_POINT(1,3));
```

*Output*: `LINESTRING(1.000000 2.000000, 1.000000 3.000000)`

# ST_MAKELINE

Alias for [**ST_LINESTRING**](#stlinestring).

## ST_MAKELINE(geo1, geo2)

Alias for [**ST_LINESTRING(geo1, geo2)**](#stlinestringgeo1-geo2).

## ST_MAKELINE(CHAR)

Alias for [**ST_LINESTRING(char)**](#stlinestringchar).

## ST_MAKELINE(geoArray)

Alias for [**ST_LINESTRING(geoArray)**](#stlinestringgeoarray).

# Related Links

[**Geospatial Data Types**](/guides/sql-reference/data-types)

[**Linestring Functions**](/guides/sql-reference/geospatial-functions/linestring-functions)

[**Conversion Functions**](/guides/sql-reference/geospatial-functions/conversion-functions)