Geohash Functions

Beta feature

Studio provides a set of functions to manipulate, process, and derive new Geohash spatial indices.

FunctionDescription
geohashToBounds(geohash, closed?)Returns a geojson containing the SW/NE lat/lng bounds of specified Geohash.
geohashToGeo(geohash)Returns a [lat, lng] pair representing the approximate center of the Geohash cell at reasonable precision.
geohashToNeighbor(geohash, direction)Returns the adjacent Geohash cell in the given direction (N, S, E, W).
geohashToNeighbors(geohash)Returns a Geohash array containing the 8 adjacent cells to specified Geohash.
geohashIsValid(geohash)Returns true if the given Geohash string is valid, or false if the Geohash string is invalid.
geoToGeohash(lat, lng, precision?)
geoToGeohash([lat, lng], precision?)
Encodes a lat/lng pair to Geohash, either to specified precision or to an automatically evaluated precision.

Note: Arguments that end with a question mark (e.g., closed?) are not required, but may be necessary for your use case.



geohashToBounds

Returns a geojson containing the SW/NE lat/lng bounds of specified Geohash.

Method

geohashToBounds(geohash: string, closed?: boolean): geojson;

Parameters

ParameterTypeDescription
geohashstringGeohash cell from which to derive bounds.
closedboolIf true, the first vertex will be duplicated at the end.

Returns

Returns a geojson polygon representing the bounds of the Geohash.

Example

For this example, we will call geohashtoBounds() on a single Geohash cell. In Studio, users are expected to call functions on columns.

Create a geojson polygon representing the bounds of Geohash cell 'u120fw'.

geohashToBounds("u120fxw");

Returns the following geojson object:

{
  "type": "Feature",
  "properties": null,
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [0.10986328125, 52.196044921875],
        [0.10986328125, 52.2015380859375],
        [0.120849609375, 52.2015380859375],
        [0.120849609375, 52.196044921875],
        [0.10986328125, 52.196044921875]
      ]
    ]
  }
}


geohashToGeo

Derive a [lat, lng] pair from the approximate center of the Geohash cell at reasonable precision.

Method

geohashToGeo(geohash: string): number[];

Parameters

ParameterTypeDescription
geohashstringGeohash cell from which to derive the approximate center point.

Returns

Returns a [lat, lng] pair representing the approximate center of the Geohash cell at reasonable precision.

Example

For this example, we will call geohashToGeo() on a single Geohash cell. In Studio, users are expected to call functions on columns.

Find the center of Geohash cell 'u120fxw'.

geoHashToGeo("u120fxw"); // => `[52.205, 0.1188]`.


geohashToNeighbor

Find the adjacent Geohash cell in the given direction (N, S, E, W).

Method

geohashToNeighbor(geohash: string, direction: string): string;

Parameters

ParameterTypeDescription
geohashstringGeohash cell from which to find the specified neighbor.
directionstringDirection to search from the specified Geohash cell ('N'/'S'/'E'/'W').

Returns

Returns the adjacent Geohash cell in the given direction (N, S, E, W).

Example

For this example, we will call geohashToNeighbor() on a single Geohash cell. In Studio, users are expected to call functions on columns.

Find the northern neighbor of Geohash cell '9q592mxz37202'.

geohashToNeighbor("9q592mxz37202", "N"); // => `'9q592mxz37208'`


geohashToNeighbors

Find the 8 adjacent cells to specified Geohash.

Method

geohashToNeighbors(geohash: string): string[];

Parameters

ParameterTypeDescription
geohashstringGeohash cell from which to find adjacent neighbors.

Returns

Returns a Geohash array containing the 8 adjacent cells to specified Geohash.

Example

For this example, we will call geohashToNeighbors() on a single Geohash cell. In Studio, users are expected to call functions on columns.

Find all adjacent neighbors of Geohash cell 'dp3w'.

geohashToNeighbors("dp3w"); // => `[dp3x,dp3z,dp3y,dp3v,dp3t,dp3m,dp3q,dp3r]`


geohashIsValid

Determine whether the given Geohash cell is valid.

Method

geohashIsValid(value: string): boolean;

Parameters

ParameterTypeDescription
valuestringValue to test for Geohash validity.

Returns

Returns true if the value can be a Geohash, or false if it is not a Geohash.

Example

For these examples, we will call geohashIsValid() on a single Geohash cell. In Studio, users are expected to call functions on columns.

geohashIsValid(`u120fw`); // => true
geohashIsValid(`i120fw`); // => false


geoToGeohash

Encodes a lat/lng pair to Geohash, either to specified precision or to automatically evaluated precision.

Method

geoToGeohash(lngLat: number[], precision?: number): string;

Parameters

ParameterTypeDescription
lngnumberLongitude in degrees.
latnumberLatitude in degrees.
lngLatnumber[]Longitude, latitude pair in an array.
precisionnumberOptional. Number of characters in resulting geohash.

Returns

Returns a Geohash cell from the supplied latitude/longitude coordinates.

Example

For this example, we will call geoToGeohash() on a single pair of coordinates. In Studio, users are expected to call functions on columns.

Find the Geohash cell for coordinates [0.119, 52.205] at resolution 7 (seven Geohash digits):

geoToGeohash([0.119, 52.205], 7); // => 'u120fxw'

Find the Geohash cell for coordinate pair 0.119, 52.205 at resolution 7 (seven Geohash digits). This is the same function as the one above, except lng and lat are in separate columns.

geoToGeohash(0.119, 52.205, 7); // => 'u120fxw'

Find the Geohash cell for coordinates [0.119, 52.205] at an automatic resolution:

geoToGeohash([0.119, 52.205]); // => 'u120fxwshvkg'