Skip to main content

Geo functions

These functions can be used when working with and analysing geospatial data.

FunctionDescription
geo::area()Calculates the area of a geometry
geo::bearing()Calculates the bearing between two geolocation points
geo::centroid()Calculates the centroid of a geometry
geo::distance()Calculates the distance between two geolocation points
geo::​hash::decode()Decodes a geohash into a geometry point
geo::​hash::encode()Encodes a geometry point into a geohash

geo::area

The geo::area function calculates the area of a geometry.

API DEFINITION
geo::area(geometry) -> number

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::area({
type: "Polygon",
coordinates: [[
[-0.38314819, 51.37692386], [0.1785278, 51.37692386],
[0.1785278, 51.61460570], [-0.38314819, 51.61460570],
[-0.38314819, 51.37692386]
]]
});

0.13350018278702186

If the argument is not a geometry type, then an EMPTY value will be returned:

RETURN geo::area(12345);

null

geo::bearing

The geo::bearing function calculates the bearing between two geolocation points.

API DEFINITION
geo::bearing(point, point) -> number

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::area({
RETURN geo::bearing( (51.509865, -0.118092), (-0.118092, 51.509865) );

-31.913259585079818

If either argument is not a geolocation point, then an EMPTY value will be returned:

RETURN geo::bearing(12345, true);

null

geo::centroid

The geo::centroid function calculates the centroid between two geolocation points.

API DEFINITION
geo::centroid(geometry) -> number

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::centroid({
type: "Polygon",
coordinates: [[
[-0.38314819, 51.37692386], [0.1785278, 51.37692386],
[0.1785278, 51.61460570], [-0.38314819, 51.61460570],
[-0.38314819, 51.37692386]
]]
});


{
"type": "Point",
"coordinates": [
-0.10231019499999999,
51.49576478
]
}

If either argument is not a geometry type, then an EMPTY value will be returned:

RETURN geo::centroid(12345);

null

geo::distance

The geo::distance function calculates the haversine distance, in metres, between two geolocation points.

API DEFINITION
geo::distance(point, point) -> number

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::distance( (51.509865, -0.118092), (-0.118092, 51.509865) );

7491494.807105545

If either argument is not a geolocation point, then an EMPTY value will be returned:

RETURN geo::distance(12345, true);

null

geo::hash::decode

The geo::hash::decode function converts a geohash into a geolocation point.

API DEFINITION
geo::hash::decode(point) -> string

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::hash::decode("mpuxk4s24f51");


{
"type": "Point",
"coordinates": [
51.50986494496465,
-0.11809204705059528
]
}

If the argument is not a geolocation point, then an EMPTY value will be returned:

RETURN geo::hash::decode(12345);

null

geo::hash::encode

The geo::hash::encode function converts a geolocation point into a geohash.

API DEFINITION
geo::hash::encode(point) -> string

The function accepts a second argument, which determines the accuracy and granularity of the geohash.

API DEFINITION
geo::hash::encode(point, number) -> string

The following example shows this function, and its output, when used in a RETURN statement:

RETURN geo::hash::encode( (51.509865, -0.118092) );

"mpuxk4s24f51"

The following example shows this function with two arguments, and its output, when used in a select statement:

RETURN geo::hash::encode( (51.509865, -0.118092), 5 );

"mpuxk"

If the first argument is not a geolocation point, then an EMPTY value will be returned:

RETURN geo::hash::encode(12345);

null