Geo functions¶
Geo functions are used to perform geographical calculations on spatial data. These functions are essential for applications that require distance measurements, location-based queries, and other geospatial operations.
greatCircleDistance¶
Calculates the distance between two points on the Earth’s surface using the great-circle formula.
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Input parameters¶
lon1Deg
: Longitude of the first point in degrees. Range:[-180°, 180°]
.lat1Deg
: Latitude of the first point in degrees. Range:[-90°, 90°]
.lon2Deg
: Longitude of the second point in degrees. Range:[-180°, 180°]
.lat2Deg
: Latitude of the second point in degrees. Range:[-90°, 90°]
.
Positive values correspond to North latitude and East longitude, and negative values correspond to South latitude and West longitude.
Returned value¶
The distance between two points on the Earth’s surface, in meters.
Generates an exception when the input parameter values fall outside of the range.
Example¶
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673) AS greatCircleDistance
┌─greatCircleDistance─┐ │ 14128352 │ └─────────────────────┘
geoDistance¶
Similar to greatCircleDistance
but calculates the distance on WGS-84 ellipsoid instead of sphere. This is more precise approximation of the Earth Geoid. The performance is the same as for greatCircleDistance
(no performance drawback). It is recommended to use geoDistance
to calculate the distances on Earth.
Technical note: for close enough points, you can calculate the distance using planar approximation with the metric on the tangent plane at the midpoint of the coordinates.
geoDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Input parameters¶
lon1Deg
: Longitude of the first point in degrees. Range:[-180°, 180°]
.lat1Deg
: Latitude of the first point in degrees. Range:[-90°, 90°]
.lon2Deg
: Longitude of the second point in degrees. Range:[-180°, 180°]
.lat2Deg
: Latitude of the second point in degrees. Range:[-90°, 90°]
.
Positive values correspond to North latitude and East longitude, and negative values correspond to South latitude and West longitude.
Returned value¶
The distance between two points on the Earth’s surface, in meters.
Generates an exception when the input parameter values fall outside of the range.
Example¶
SELECT geoDistance(38.8976, -77.0366, 39.9496, -75.1503) AS geoDistance
┌─geoDistance─┐ │ 212458.73 │ └─────────────┘
greatCircleAngle¶
Calculates the central angle between two points on the Earth’s surface using the great-circle formula.
greatCircleAngle(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Input parameters¶
lon1Deg
: Longitude of the first point in degrees.lat1Deg
: Latitude of the first point in degrees.lon2Deg
: Longitude of the second point in degrees.lat2Deg
: Latitude of the second point in degrees.
Returned value¶
The central angle between two points in degrees.
Example¶
SELECT greatCircleAngle(0, 0, 45, 0) AS arc
┌─arc─┐ │ 45 │ └─────┘
pointInEllipses¶
Checks whether the point belongs to at least one of the ellipses. Coordinates are geometric in the Cartesian coordinate system.
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
Input parameters¶
x, y
: Coordinates of a point on the plane.xᵢ, yᵢ
: Coordinates of the center of thei
-th ellipsis.aᵢ, bᵢ
: Axes of thei
-th ellipsis in units of x, y coordinates.
The input parameters must be 2+4⋅n
, where n
is the number of ellipses.
Returned values¶
1
if the point is inside at least one of the ellipses; 0
if it's not.
Example¶
SELECT pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)
┌─pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)─┐ │ 1 │ └─────────────────────────────────────────────────┘
pointInPolygon¶
Checks whether the point belongs to the polygon on the plane.
pointInPolygon((x, y), [(a, b), (c, d) ...], ...)
Input values¶
(x, y)
: Coordinates of a point on the plane. Data type: Tuple: A tuple of two numbers.[(a, b), (c, d) ...]
: Polygon vertices. Data type: Array. Each vertex is represented by a pair of coordinates(a, b)
. Vertices should be specified in a clockwise or counterclockwise order. The minimum number of vertices is 3. The polygon must be constant.- The function also supports polygons with holes (cut out sections). In this case, add polygons that define the cut out sections using additional arguments of the function. The function doesn't support non-simply-connected polygons.
Returned values¶
1
if the point is inside the polygon, 0
if it's not. If the point is on the polygon boundary, the function may return either 0 or 1.
Example¶
SELECT pointInPolygon((3., 3.), [(6, 0), (8, 4), (5, 8), (0, 2)]) AS res
┌─res─┐ │ 1 │ └─────┘
Geohash¶
Geohash is the geocode system, which subdivides Earth’s surface into buckets of grid shape and encodes each cell into a short string of letters and digits. It is a hierarchical data structure, so the longer the geohash string is, the more precise the geographic location will be.
If you need to manually convert geographic coordinates to geohash strings, you can use geohash.org.
geohashEncode¶
Encodes latitude and longitude as a geohash-string.
Syntax¶
geohashEncode(longitude, latitude, [precision])
Input values¶
longitude
: Longitude part of the coordinate you want to encode. Floating in range[-180°, 180°]
. Float.latitude
: Latitude part of the coordinate you want to encode. Floating in range[-90°, 90°]
. Float.precision
(optional): Length of the resulting encoded string. Defaults to12
. Integer in the range[1, 12]
. Int8.
- All coordinate parameters must be of the same type: either
Float32
orFloat64
. - For the
precision
parameter, any value less than1
or greater than12
is silently converted to12
.
Returned values¶
- Alphanumeric string of the encoded coordinate (modified version of the base32-encoding alphabet is used). String.
Example¶
Query:
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res
Result:
┌─res──────────┐ │ ezs42d000000 │ └──────────────┘
geohashDecode¶
Decodes any geohash-encoded string into longitude and latitude.
Syntax¶
geohashDecode(hash_str)
Input values¶
hash_str
: Geohash-encoded string.
Returned values¶
- Tuple
(longitude, latitude)
ofFloat64
values of longitude and latitude. Tuple(Float64)
Example¶
SELECT geohashDecode('ezs42') AS res
┌─res─────────────────────────────┐ │ (-5.60302734375,42.60498046875) │ └─────────────────────────────────┘
geohashesInBox¶
Returns an array of geohash-encoded strings of given precision that fall inside and intersect boundaries of given box, basically a 2D grid flattened into array.
Syntax¶
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)
Arguments¶
longitude_min
: Minimum longitude. Range:[-180°, 180°]
. Float.latitude_min
: Minimum latitude. Range:[-90°, 90°]
. Float.longitude_max
: Maximum longitude. Range:[-180°, 180°]
. Float.latitude_max
: Maximum latitude. Range:[-90°, 90°]
. Float.precision
: Geohash precision. Range:[1, 12]
. UInt8.
All coordinate parameters must be of the same type: either Float32
or Float64
.
Returned values¶
- Array of precision-long strings of geohash-boxes covering provided area, you should not rely on order of items. Array(String).
[]
- Empty array if minimum latitude and longitude values aren’t less than corresponding maximum values.
Function throws an exception if resulting array is over 10’000’000 items long.
Example¶
Query:
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos
Result:
┌─thasos──────────────────────────────────────┐ │ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │ └─────────────────────────────────────────────┘
H3 Index¶
H3 is a geographical indexing system where Earth’s surface divided into a grid of even hexagonal cells. This system is hierarchical, i. e. each hexagon on the top level ("parent") can be split into seven even but smaller ones ("children"), and so on.
The level of the hierarchy is called resolution
and can receive a value from 0
till 15
, where 0
is the base
level with the largest and coarsest cells.
A latitude and longitude pair can be transformed to a 64-bit H3 index, identifying a grid cell.
The H3 index is used primarily for bucketing locations and other geospatial manipulations.
The full description of the H3 system is available at the Uber Engineering site.
h3IsValid¶
Verifies whether the number is a valid H3 index.
Syntax¶
h3IsValid(h3index)
Parameters¶
h3index
: Hexagon index number. UInt64.
Returned values¶
- 1: The number is a valid H3 index. UInt8.
- 0: The number isn't a valid H3 index. UInt8.
Example¶
Query:
SELECT h3IsValid(630814730351855103) AS h3IsValid
Result:
┌─h3IsValid─┐ │ 1 │ └───────────┘
h3GetResolution¶
Defines the resolution of the given H3 index.
Syntax¶
h3GetResolution(h3index)
Parameters¶
h3index
: Hexagon index number. UInt64.
Returned values¶
- Index resolution. Range:
[0, 15]
. UInt8. - If the index isn't valid, the function returns a random value. Use h3IsValid to verify the index. UInt8.
Example¶
Query:
SELECT h3GetResolution(639821929606596015) AS resolution
Result:
┌─resolution─┐ │ 14 │ └────────────┘
h3EdgeAngle¶
Calculates the average length of the H3 hexagon edge in grades.
Syntax¶
h3EdgeAngle(resolution)
Parameters¶
resolution
: Index resolution. UInt8. Range:[0, 15]
.
Returned values¶
- The average length of the H3 hexagon edge in grades. Float64.
Example¶
Query:
SELECT h3EdgeAngle(10) AS edgeAngle
Result:
┌───────h3EdgeAngle(10)─┐ │ 0.0005927224846720883 │ └───────────────────────┘
h3EdgeLengthM¶
Calculates the average length of the H3 hexagon edge in meters.
Syntax¶
h3EdgeLengthM(resolution)
Parameters¶
resolution
: Index resolution. UInt8. Range:[0, 15]
.
Returned values¶
- The average length of the H3 hexagon edge in meters. Float64.
Example¶
Query:
SELECT h3EdgeLengthM(15) AS edgeLengthM
Result:
┌─edgeLengthM─┐ │ 0.509713273 │ └─────────────┘
h3EdgeLengthKm¶
Calculates the average length of the H3 hexagon edge in kilometers.
Syntax¶
h3EdgeLengthKm(resolution)
Parameters¶
resolution
: Index resolution. UInt8. Range:[0, 15]
.
Returned values¶
- The average length of the H3 hexagon edge in kilometers. Float64.
Example¶
Query:
SELECT h3EdgeLengthKm(15) AS edgeLengthKm
Result:
┌─edgeLengthKm─┐ │ 0.000509713 │ └──────────────┘
geoToH3¶
Returns H3 point index (lon, lat)
with specified resolution.
Syntax¶
geoToH3(lon, lat, resolution)
Arguments¶
lon
: Longitude. Float64.lat
: Latitude. Float64.resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned values¶
- Hexagon index number. UInt64.
- 0 in case of error. UInt64.
Example¶
Query:
SELECT geoToH3(37.79506683, 55.71290588, 15) AS h3Index
Result:
┌────────────h3Index─┐ │ 644325524701193974 │ └────────────────────┘
h3ToGeo¶
Returns the centroid longitude and latitude corresponding to the provided H3 index.
Syntax¶
h3ToGeo(h3Index)
Arguments¶
h3Index
: H3 Index. UInt64.
Returned values¶
- A tuple consisting of two values:
tuple(lon,lat)
.lon
: Longitude. Float64.lat
: Latitude. Float64.
Example¶
Query:
SELECT h3ToGeo(644325524701193974) AS coordinates
Result:
┌─coordinates───────────────────────────┐ │ (37.79506616830252,55.71290243145668) │ └───────────────────────────────────────┘
h3ToGeoBoundary¶
Returns array of pairs (lon, lat)
, which corresponds to the boundary of the provided H3 index.
Syntax¶
h3ToGeoBoundary(h3Index)
Arguments¶
h3Index
: H3 Index. UInt64.
Returned values¶
- Array of pairs '(lon, lat)'. Array(Float64, Float64).
Example¶
Query:
SELECT h3ToGeoBoundary(644325524701193974) AS coordinates
Result:
┌─h3ToGeoBoundary(599686042433355775)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [(37.2713558667319,-121.91508032705622),(37.353926450852256,-121.8622232890249),(37.42834118609435,-121.92354999630156),(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044),(37.26319797461824,-122.02910130919001)] │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
h3kRing¶
Lists all the H3 hexagons in the raduis of k
from the given hexagon in random order.
Syntax¶
h3kRing(h3index, k)
Arguments¶
h3index
: Hexagon index number. UInt64.k
: Radius. integer
Returned values¶
- Array of H3 indexes. Array(UInt64).
Example¶
Query:
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index
Result:
┌────────────h3index─┐ │ 644325529233966508 │ │ 644325529233966497 │ │ 644325529233966510 │ │ 644325529233966504 │ │ 644325529233966509 │ │ 644325529233966355 │ │ 644325529233966354 │ └────────────────────┘
h3GetBaseCell¶
Returns the base cell number of the H3 index.
Syntax¶
h3GetBaseCell(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Hexagon base cell number. UInt8.
Example¶
Query:
SELECT h3GetBaseCell(612916788725809151) AS basecell
Result:
┌─basecell─┐ │ 12 │ └──────────┘
h3HexAreaM2¶
Returns average hexagon area in square meters at the given resolution.
Syntax¶
h3HexAreaM2(resolution)
Parameters¶
resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned value¶
- Area in square meters. Float64.
Example¶
Query:
SELECT h3HexAreaM2(13) AS area
Result:
┌─area─┐ │ 43.9 │ └──────┘
h3HexAreaKm2¶
Returns average hexagon area in square kilometers at the given resolution.
Syntax¶
h3HexAreaKm2(resolution)
Parameters¶
resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned value¶
- Area in square kilometers. Float64.
Example¶
Query:
SELECT h3HexAreaKm2(13) AS area
Result:
┌──────area─┐ │ 0.0000439 │ └───────────┘
h3IndexesAreNeighbors¶
Returns whether or not the provided H3 indexes are neighbors.
Syntax¶
h3IndexesAreNeighbors(index1, index2)
Arguments¶
index1
: Hexagon index number. UInt64.index2
: Hexagon index number. UInt64.
Returned value¶
1
: Indexes are neighbours. UInt8.0
: Indexes aren't neighbours. UInt8.
Example¶
Query:
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n
Result:
┌─n─┐ │ 1 │ └───┘
h3ToChildren¶
Returns an array of child indexes for the given H3 index.
Syntax¶
h3ToChildren(index, resolution)
Arguments¶
index
: Hexagon index number. UInt64.resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned values¶
- Array of the child H3-indexes. Array(UInt64).
Example¶
Query:
SELECT h3ToChildren(599405990164561919, 6) AS children
Result:
┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
h3ToParent¶
Returns the parent (coarser) index containing the given H3 index.
Syntax¶
h3ToParent(index, resolution)
Arguments¶
index
: Hexagon index number. UInt64.resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned value¶
- Parent H3 index. UInt64.
Example¶
Query:
SELECT h3ToParent(599405990164561919, 3) AS parent
Result:
┌─────────────parent─┐ │ 590398848891879423 │ └────────────────────┘
h3ToString¶
Converts the H3Index
representation of the index to the string representation.
h3ToString(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- String representation of the H3 index. String.
Example¶
Query:
SELECT h3ToString(617420388352917503) AS h3_string
Result:
┌─h3_string───────┐ │ 89184926cdbffff │ └─────────────────┘
stringToH3¶
Converts the string representation to the H3Index
(UInt64) representation.
Syntax¶
stringToH3(index_str)
Parameters¶
index_str
: String representation of the H3 index. String.
Returned value¶
- Hexagon index number. Returns 0 on error. UInt64.
Example¶
Query:
SELECT stringToH3('89184926cc3ffff') AS index
Result:
┌──────────────index─┐ │ 617420388351344639 │ └────────────────────┘
h3GetResolution¶
Returns the resolution of the H3 index.
Syntax¶
h3GetResolution(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Index resolution. Range:
[0, 15]
. UInt8.
Example¶
Query:
SELECT h3GetResolution(617420388352917503) AS res
Result:
┌─res─┐ │ 9 │ └─────┘
h3IsResClassIII¶
Returns whether H3 index has a resolution with Class III orientation.
Syntax¶
h3IsResClassIII(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
1
: Index has a resolution with Class III orientation. UInt8.0
: Index doesn't have a resolution with Class III orientation. UInt8.
Example¶
Query:
SELECT h3IsResClassIII(617420388352917503) AS res
Result:
┌─res─┐ │ 1 │ └─────┘
h3IsPentagon¶
Returns whether this H3 index represents a pentagonal cell.
Syntax¶
h3IsPentagon(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
1
: Index represents a pentagonal cell. UInt8.0
: Index doesn't represent a pentagonal cell. UInt8.
Example¶
Query:
SELECT h3IsPentagon(644721767722457330) AS pentagon
Result:
┌─pentagon─┐ │ 0 │ └──────────┘
h3GetFaces¶
Returns icosahedron faces intersected by a given H3 index.
Syntax¶
h3GetFaces(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned values¶
- Array containing icosahedron faces intersected by a given H3 index. Array(UInt64).
Example¶
Query:
SELECT h3GetFaces(599686042433355775) AS faces
Result:
┌─faces─┐ │ [7] │ └───────┘
h3CellAreaM2¶
Returns the exact area of a specific cell in square meters corresponding to the given input H3 index.
Syntax¶
h3CellAreaM2(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Cell area in square meters. Float64.
Example¶
Query:
SELECT h3CellAreaM2(579205133326352383) AS area
Result:
┌───────────────area─┐ │ 4106166334463.9233 │ └────────────────────┘
h3CellAreaRads2¶
Returns the exact area of a specific cell in square radians corresponding to the given input H3 index.
Syntax¶
h3CellAreaRads2(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Cell area in square radians. Float64.
Example¶
Query:
SELECT h3CellAreaRads2(579205133326352383) AS area
Result:
┌────────────────area─┐ │ 0.10116268528089567 │ └─────────────────────┘
h3ToCenterChild¶
Returns the center child (finer) H3 index contained by given H3 at the given resolution.
Syntax¶
h3ToCenterChild(index, resolution)
Parameters¶
index
: Hexagon index number. UInt64.resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned values¶
- H3 index of the center child contained by given H3 at the given resolution. UInt64.
Example¶
Query:
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild
Result:
┌──────centerToChild─┐ │ 581496515558637567 │ └────────────────────┘
h3ExactEdgeLengthM¶
Returns the exact edge length of the unidirectional edge represented by the input h3 index in meters.
Syntax¶
h3ExactEdgeLengthM(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Exact edge length in meters. Float64.
Example¶
Query:
SELECT h3ExactEdgeLengthM(1310277011704381439) AS exactEdgeLengthM
Result:
┌───exactEdgeLengthM─┐ │ 195449.63163407316 │ └────────────────────┘
h3ExactEdgeLengthKm¶
Returns the exact edge length of the unidirectional edge represented by the input h3 index in kilometers.
Syntax¶
h3ExactEdgeLengthKm(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Exact edge length in kilometers. Float64.
Example¶
Query:
SELECT h3ExactEdgeLengthKm(1310277011704381439) AS exactEdgeLengthKm
Result:
┌──exactEdgeLengthKm─┐ │ 195.44963163407317 │ └────────────────────┘
h3ExactEdgeLengthRads¶
Returns the exact edge length of the unidirectional edge represented by the input h3 index in radians.
Syntax¶
h3ExactEdgeLengthRads(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- Exact edge length in radians. Float64.
Example¶
Query:
SELECT h3ExactEdgeLengthRads(1310277011704381439) AS exactEdgeLengthRads
Result:
┌──exactEdgeLengthRads─┐ │ 0.030677980118976447 │ └──────────────────────┘
h3NumHexagons¶
Returns the number of unique H3 indices at the given resolution.
Syntax¶
h3NumHexagons(resolution)
Parameters¶
resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned value¶
- Number of H3 indices. Int64.
Example¶
Query:
SELECT h3NumHexagons(3) AS numHexagons
Result:
┌─numHexagons─┐ │ 41162 │ └─────────────┘
h3PointDistM¶
Returns the "great circle" or "haversine" distance between pairs of GeoCoord points (latitude/longitude) pairs in meters.
Syntax¶
h3PointDistM(lat1, lon1, lat2, lon2)
Arguments¶
lat1
,lon1
: Latitude and Longitude of point1 in degrees. Float64.lat2
,lon2
: Latitude and Longitude of point2 in degrees. Float64.
Returned values¶
- Haversine or great circle distance in meters.Float64.
Example¶
Query:
select h3PointDistM(-10.0 ,0.0, 10.0, 0.0) as h3PointDistM
Result:
┌──────h3PointDistM─┐ │ 2223901.039504589 │ └───────────────────┘
h3PointDistKm¶
Returns the "great circle" or "haversine" distance between pairs of GeoCoord points (latitude/longitude) pairs in kilometers.
Syntax¶
h3PointDistKm(lat1, lon1, lat2, lon2)
Arguments¶
lat1
,lon1
: Latitude and Longitude of point1 in degrees. Float64.lat2
,lon2
: Latitude and Longitude of point2 in degrees. Float64.
Returned values¶
- Haversine or great circle distance in kilometers. Float64.
Example¶
Query:
select h3PointDistKm(-10.0 ,0.0, 10.0, 0.0) as h3PointDistKm
Result:
┌─────h3PointDistKm─┐ │ 2223.901039504589 │ └───────────────────┘
h3PointDistRads¶
Returns the "great circle" or "haversine" distance between pairs of GeoCoord points (latitude/longitude) pairs in radians.
Syntax¶
h3PointDistRads(lat1, lon1, lat2, lon2)
Arguments¶
lat1
,lon1
: Latitude and Longitude of point1 in degrees. Float64.lat2
,lon2
: Latitude and Longitude of point2 in degrees. Float64.
Returned values¶
- Haversine or great circle distance in radians. Float64.
Example¶
Query:
select h3PointDistRads(-10.0 ,0.0, 10.0, 0.0) as h3PointDistRads
Result:
┌────h3PointDistRads─┐ │ 0.3490658503988659 │ └────────────────────┘
h3GetRes0Indexes¶
Returns an array of all the resolution 0 H3 indexes.
Syntax¶
h3GetRes0Indexes()
Returned values¶
- Array of all the resolution 0 H3 indexes. Array(UInt64).
Example¶
Query:
select h3GetRes0Indexes as indexes
Result:
┌─indexes─────────────────────────────────────┐ │ [576495936675512319,576531121047601151,....]│ └─────────────────────────────────────────────┘
h3GetPentagonIndexes¶
Returns all the pentagon H3 indexes at the specified resolution.
Syntax¶
h3GetPentagonIndexes(resolution)
Parameters¶
resolution
: Index resolution. Range:[0, 15]
. UInt8.
Returned value¶
- Array of all pentagon H3 indexes. Array(UInt64).
Example¶
Query:
SELECT h3GetPentagonIndexes(3) AS indexes
Result:
┌─indexes────────────────────────────────────────────────────────┐ │ [590112357393367039,590464201114255359,590816044835143679,...] │ └────────────────────────────────────────────────────────────────┘
h3Line¶
Returns the line of indices between the two indices that are provided.
Syntax¶
h3Line(start,end)
Parameters¶
start
: Hexagon index number that represents a starting point. UInt64.end
: Hexagon index number that represents an ending point. UInt64.
Returned value¶
Array of h3 indexes representing the line of indices between the two provided indices. Array(UInt64).
Example¶
Query:
SELECT h3Line(590080540275638271,590103561300344831) as indexes
Result:
┌─indexes────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [590080540275638271,590080471556161535,590080883873021951,590106516237844479,590104385934065663,590103630019821567,590103561300344831] │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
h3Distance¶
Returns the distance in grid cells between the two indices that are provided.
Syntax¶
h3Distance(start,end)
Parameters¶
start
: Hexagon index number that represents a starting point. UInt64.end
: Hexagon index number that represents an ending point. UInt64.
Returned value¶
- Number of grid cells. Int64.
Returns a negative number if finding the distance fails.
Example¶
Query:
SELECT h3Distance(590080540275638271,590103561300344831) as distance
Result:
┌─distance─┐ │ 7 │ └──────────┘
h3HexRing¶
Returns the indexes of the hexagonal ring centered at the provided origin h3Index and length k.
Returns 0 if no pentagonal distortion was encountered.
Syntax¶
h3HexRing(index, k)
Parameters¶
index
: Hexagon index number that represents the origin. UInt64.k
: Distance. UInt64.
Returned values¶
- Array of H3 indexes. Array(UInt64).
Example¶
Query:
SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing
Result:
┌─hexRing─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [590080815153545215,590080471556161535,590080677714591743,590077585338138623,590077447899185151,590079509483487231] │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
h3GetUnidirectionalEdge¶
Returns a unidirectional edge H3 index based on the provided origin and destination and returns 0 on error.
Syntax¶
h3GetUnidirectionalEdge(originIndex, destinationIndex)
Parameters¶
originIndex
: Origin Hexagon index number. UInt64.destinationIndex
: Destination Hexagon index number. UInt64.
Returned value¶
- Unidirectional Edge Hexagon Index number. UInt64.
Example¶
Query:
SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) as edge
Result:
┌────────────────edge─┐ │ 1248204388774707199 │ └─────────────────────┘
h3UnidirectionalEdgeIsValid¶
Determines if the provided H3Index is a valid unidirectional edge index. Returns 1 if it's a unidirectional edge and 0 otherwise.
Syntax¶
h3UnidirectionalEdgeisValid(index)
Parameters¶
index
: Hexagon index number. UInt64.
Returned value¶
- 1: The H3 index is a valid unidirectional edge. UInt8.
- 0: The H3 index isn't a valid unidirectional edge. UInt8.
Example¶
Query:
SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) as validOrNot
Result:
┌─validOrNot─┐ │ 1 │ └────────────┘
h3GetOriginIndexFromUnidirectionalEdge¶
Returns the origin hexagon index from the unidirectional edge H3Index.
Syntax¶
h3GetOriginIndexFromUnidirectionalEdge(edge)
Parameters¶
edge
: Hexagon index number that represents a unidirectional edge. UInt64.
Returned value¶
- Origin Hexagon Index number. UInt64.
Example¶
Query:
SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707197) as origin
Result:
┌─────────────origin─┐ │ 599686042433355773 │ └────────────────────┘
h3GetDestinationIndexFromUnidirectionalEdge¶
Returns the destination hexagon index from the unidirectional edge H3Index.
Syntax¶
h3GetDestinationIndexFromUnidirectionalEdge(edge)
Parameters¶
edge
: Hexagon index number that represents a unidirectional edge. UInt64.
Returned value¶
- Destination Hexagon Index number. UInt64.
Example¶
Query:
SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707197) as destination
Result:
┌────────destination─┐ │ 599686043507097597 │ └────────────────────┘
h3GetIndexesFromUnidirectionalEdge¶
Returns the origin and destination hexagon indexes from the given unidirectional edge H3Index.
Syntax¶
h3GetIndexesFromUnidirectionalEdge(edge)
Parameters¶
edge
: Hexagon index number that represents a unidirectional edge. UInt64.
Returned value¶
A tuple consisting of two values tuple(origin,destination)
:
origin
: Origin Hexagon index number. UInt64.destination
: Destination Hexagon index number. UInt64.
Returns (0,0)
if the provided input isn't valid.
Example¶
Query:
SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) as indexes
Result:
┌─indexes─────────────────────────────────┐ │ (599686042433355775,599686043507097599) │ └─────────────────────────────────────────┘
h3GetUnidirectionalEdgesFromHexagon¶
Provides all of the unidirectional edges from the provided H3Index.
Syntax¶
h3GetUnidirectionalEdgesFromHexagon(index)
Parameters¶
index
: Hexagon index number that represents a unidirectional edge. UInt64.
Returned value¶
Array of h3 indexes representing each unidirectional edge. Array(UInt64).
Example¶
Query:
SELECT h3GetUnidirectionalEdgesFromHexagon(1248204388774707199) as edges
Result:
┌─edges─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [1248204388774707199,1320261982812635135,1392319576850563071,1464377170888491007,1536434764926418943,1608492358964346879] │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
h3GetUnidirectionalEdgeBoundary¶
Returns the coordinates defining the unidirectional edge.
Syntax¶
h3GetUnidirectionalEdgeBoundary(index)
Parameters¶
index
: Hexagon index number that represents a unidirectional edge. UInt64.
Returned value¶
- Array of pairs '(lon, lat)'. Array(Float64, Float64).
Example¶
Query:
SELECT h3GetUnidirectionalEdgeBoundary(1248204388774707199) as boundary
Result:
┌─boundary────────────────────────────────────────────────────────────────────────┐ │ [(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044)] │ └─────────────────────────────────────────────────────────────────────────────────┘
WKT¶
Returns a WKT (Well Known Text) geometric object from various Geo data types. Supported WKT objects are:
- POINT
- POLYGON
- MULTIPOLYGON
- LINESTRING
- MULTILINESTRING
Syntax¶
WKT(geo_data)
Parameters¶
geo_data
can be one of the following Geo data types or their underlying primitive types:
- Point
- Ring
- Polygon
- MultiPolygon
- LineString
- MultiLineString
Returned value¶
- WKT geometric object
POINT
is returned for a Point. - WKT geometric object
POLYGON
is returned for a Polygon - WKT geometric object
MULTIPOLYGON
is returned for a MultiPolygon. - WKT geometric object
LINESTRING
is returned for a LineString. - WKT geometric object
MULTILINESTRING
is returned for a MultiLineString.
Examples¶
POINT from tuple:
SELECT wkt((0., 0.))
POINT(0 0)
POLYGON from an array of tuples or an array of tuple arrays:
SELECT wkt([(0., 0.), (10., 0.), (10., 10.), (0., 10.)])
POLYGON((0 0,10 0,10 10,0 10))
MULTIPOLYGON from an array of multi-dimensional tuple arrays:
SELECT wkt([[[(0., 0.), (10., 0.), (10., 10.), (0., 10.)], [(4., 4.), (5., 4.), (5., 5.), (4., 5.)]], [[(-10., -10.), (-10., -9.), (-9., 10.)]]])
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,5 4,5 5,4 5,4 4)),((-10 -10,-10 -9,-9 10,-10 -10)))
readWKTMultiPolygon¶
Converts a WKT (Well Known Text) MultiPolygon into a MultiPolygon type.
Example¶
SELECT toTypeName(readWKTMultiPolygon('MULTIPOLYGON(((2 0,10 0,10 10,0 10,2 0),(4 4,5 4,5 5,4 5,4 4)),((-10 -10,-10 -9,-9 10,-10 -10)))')) AS type, readWKTMultiPolygon('MULTIPOLYGON(((2 0,10 0,10 10,0 10,2 0),(4 4,5 4,5 5,4 5,4 4)),((-10 -10,-10 -9,-9 10,-10 -10)))') AS output FORMAT Markdown
type | output |
---|---|
MultiPolygon | [[[(2,0),(10,0),(10,10),(0,10),(2,0)],[(4,4),(5,4),(5,5),(4,5),(4,4)]],[[(-10,-10),(-10,-9),(-9,10),(-10,-10)]]] |
Input parameters¶
String starting with MULTIPOLYGON
Returned value¶
MultiPolygon
readWKTPolygon¶
Converts a WKT (Well Known Text) MultiPolygon into a Polygon type.
Example¶
SELECT toTypeName(readWKTPolygon('POLYGON((2 0,10 0,10 10,0 10,2 0))')) AS type, readWKTPolygon('POLYGON((2 0,10 0,10 10,0 10,2 0))') AS output FORMAT Markdown
type | output |
---|---|
Polygon | [[(2,0),(10,0),(10,10),(0,10),(2,0)]] |
Input parameters¶
String starting with POLYGON
Returned value¶
Polygon
readWKTPoint¶
The readWKTPoint
function in Tinybird parses a Well-Known Text (WKT) representation of a Point geometry and returns a point in the internal format.
Syntax¶
readWKTPoint(wkt_string)
Arguments¶
wkt_string
: The input WKT string representing a Point geometry.
Returned value¶
The function returns an internal representation of the Point geometry.
Example¶
SELECT readWKTPoint('POINT (1.2 3.4)')
(1.2,3.4)
readWKTLineString¶
Parses a Well-Known Text (WKT) representation of a LineString geometry and returns it in the internal format.
Syntax¶
readWKTLineString(wkt_string)
Arguments¶
wkt_string
: The input WKT string representing a LineString geometry.
Returned value¶
The function returns an internal representation of the linestring geometry.
Example¶
SELECT readWKTLineString('LINESTRING (1 1, 2 2, 3 3, 1 1)')
[(1,1),(2,2),(3,3),(1,1)]
readWKTMultiLineString¶
Parses a Well-Known Text (WKT) representation of a MultiLineString geometry and returns it in the internal format.
Syntax¶
readWKTMultiLineString(wkt_string)
Arguments¶
wkt_string
: The input WKT string representing a MultiLineString geometry.
Returned value¶
The function returns an internal representation of the multilinestring geometry.
Example¶
SELECT readWKTMultiLineString('MULTILINESTRING ((1 1, 2 2, 3 3), (4 4, 5 5, 6 6))')
[[(1,1),(2,2),(3,3)],[(4,4),(5,5),(6,6)]]
readWKTRing¶
Parses a Well-Known Text (WKT) representation of a Polygon geometry and returns a ring (closed linestring) in the internal format.
Syntax¶
readWKTRing(wkt_string)
Arguments¶
wkt_string
: The input WKT string representing a Polygon geometry.
Returned value¶
The function returns an internal representation of the ring (closed linestring) geometry.
Example¶
SELECT readWKTRing('POLYGON ((1 1, 2 2, 3 3, 1 1))')
[(1,1),(2,2),(3,3),(1,1)]
polygonsWithinSpherical¶
Returns true or false depending on whether or not one polygon lies completely inside another polygon. Reference https://www.boost.org/doc/libs/1_62_0/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
Example¶
select polygonsWithinSpherical([[[(4.3613577, 50.8651821), (4.349556, 50.8535879), (4.3602419, 50.8435626), (4.3830299, 50.8428851), (4.3904543, 50.8564867), (4.3613148, 50.8651279)]]], [[[(4.346693, 50.858306), (4.367945, 50.852455), (4.366227, 50.840809), (4.344961, 50.833264), (4.338074, 50.848677), (4.346693, 50.858306)]]])
0
Input parameters¶
Returned value¶
UInt8, 0 for false, 1 for true
polygonsDistanceSpherical¶
Calculates the minimal distance between two points where one point belongs to the first polygon and the second to another polygon. Spherical means that coordinates are interpreted as coordinates on a pure and ideal sphere, which isn't true for the Earth. Using this type of coordinate system speeds up execution, but of course isn't precise.
Example¶
SELECT polygonsDistanceSpherical([[[(0, 0), (0, 0.1), (0.1, 0.1), (0.1, 0)]]], [[[(10., 10.), (10., 40.), (40., 40.), (40., 10.), (10., 10.)]]])
0.24372872211133834
Input parameters¶
Two polygons
Returned value¶
Float64
polygonsDistanceCartesian¶
Calculates distance between two polygons
Example¶
SELECT polygonsDistanceCartesian([[[(0, 0), (0, 0.1), (0.1, 0.1), (0.1, 0)]]], [[[(10., 10.), (10., 40.), (40., 40.), (40., 10.), (10., 10.)]]])
14.000714267493642
Input parameters¶
Two polygons
Returned value¶
Float64
polygonsEqualsCartesian¶
Returns true if two polygons are equal
Example¶
SELECT polygonsEqualsCartesian([[[(1., 1.), (1., 4.), (4., 4.), (4., 1.)]]], [[[(1., 1.), (1., 4.), (4., 4.), (4., 1.), (1., 1.)]]])
1
Input parameters¶
Two polygons
Returned value¶
UInt8, 0 for false, 1 for true
polygonsSymDifferenceSpherical¶
Calculates the spatial set theoretic symmetric difference (XOR) between two polygons
Example¶
SELECT wkt(arraySort(polygonsSymDifferenceSpherical([[(50., 50.), (50., -50.), (-50., -50.), (-50., 50.), (50., 50.)], [(10., 10.), (10., 40.), (40., 40.), (40., 10.), (10., 10.)], [(-10., -10.), (-10., -40.), (-40., -40.), (-40., -10.), (-10., -10.)]], [[(-20., -20.), (-20., 20.), (20., 20.), (20., -20.), (-20., -20.)]])))
MULTIPOLYGON(((-20 -10.3067,-10 -10,-10 -20.8791,-20 -20,-20 -10.3067)),((10 20.8791,20 20,20 10.3067,10 10,10 20.8791)),((50 50,50 -50,-50 -50,-50 50,50 50),(20 10.3067,40 10,40 40,10 40,10 20.8791,-20 20,-20 -10.3067,-40 -10,-40 -40,-10 -40,-10 -20.8791,20 -20,20 10.3067)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
polygonsSymDifferenceCartesian¶
The same as polygonsSymDifferenceSpherical
, but the coordinates are in the Cartesian coordinate system; which is more close to the model of the real Earth.
Example¶
SELECT wkt(polygonsSymDifferenceCartesian([[[(0, 0), (0, 3), (1, 2.9), (2, 2.6), (2.6, 2), (2.9, 1), (3, 0), (0, 0)]]], [[[(1., 1.), (1., 4.), (4., 4.), (4., 1.), (1., 1.)]]]))
MULTIPOLYGON(((1 2.9,1 1,2.9 1,3 0,0 0,0 3,1 2.9)),((1 2.9,1 4,4 4,4 1,2.9 1,2.6 2,2 2.6,1 2.9)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
polygonsIntersectionSpherical¶
Calculates the intersection (AND) between polygons, coordinates are spherical.
Example¶
SELECT wkt(arrayMap(a -> arrayMap(b -> arrayMap(c -> (round(c.1, 6), round(c.2, 6)), b), a), polygonsIntersectionSpherical([[[(4.3613577, 50.8651821), (4.349556, 50.8535879), (4.3602419, 50.8435626), (4.3830299, 50.8428851), (4.3904543, 50.8564867), (4.3613148, 50.8651279)]]], [[[(4.346693, 50.858306), (4.367945, 50.852455), (4.366227, 50.840809), (4.344961, 50.833264), (4.338074, 50.848677), (4.346693, 50.858306)]]])))
MULTIPOLYGON(((4.3666 50.8434,4.36024 50.8436,4.34956 50.8536,4.35268 50.8567,4.36794 50.8525,4.3666 50.8434)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
polygonsWithinCartesian¶
Returns true if the second polygon is within the first polygon.
Example¶
SELECT polygonsWithinCartesian([[[(2., 2.), (2., 3.), (3., 3.), (3., 2.)]]], [[[(1., 1.), (1., 4.), (4., 4.), (4., 1.), (1., 1.)]]])
1
Input parameters¶
Two polygons
Returned value¶
UInt8, 0 for false, 1 for true
polygonConvexHullCartesian¶
Calculates a convex hull. Reference
Coordinates are in Cartesian coordinate system.
Example¶
SELECT wkt(polygonConvexHullCartesian([[[(0., 0.), (0., 5.), (5., 5.), (5., 0.), (2., 3.)]]]))
POLYGON((0 0,0 5,5 5,5 0,0 0))
Input parameters¶
MultiPolygon
Returned value¶
Polygon
polygonAreaSpherical¶
Calculates the surface area of a polygon.
Example¶
SELECT round(polygonAreaSpherical([[[(4.346693, 50.858306), (4.367945, 50.852455), (4.366227, 50.840809), (4.344961, 50.833264), (4.338074, 50.848677), (4.346693, 50.858306)]]]), 14)
9.387704e-8
Input parameters¶
Polygon
Returned value¶
Float
polygonsUnionSpherical¶
Calculates a union (OR).
Example¶
SELECT wkt(polygonsUnionSpherical([[[(4.3613577, 50.8651821), (4.349556, 50.8535879), (4.3602419, 50.8435626), (4.3830299, 50.8428851), (4.3904543, 50.8564867), (4.3613148, 50.8651279)]]], [[[(4.346693, 50.858306), (4.367945, 50.852455), (4.366227, 50.840809), (4.344961, 50.833264), (4.338074, 50.848677), (4.346693, 50.858306)]]]))
MULTIPOLYGON(((4.36661 50.8434,4.36623 50.8408,4.34496 50.8333,4.33807 50.8487,4.34669 50.8583,4.35268 50.8567,4.36136 50.8652,4.36131 50.8651,4.39045 50.8565,4.38303 50.8429,4.36661 50.8434)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
polygonPerimeterSpherical¶
Calculates the perimeter of the polygon.
Returned value¶
polygonsIntersectionCartesian¶
Calculates the intersection of polygons.
Example¶
SELECT wkt(polygonsIntersectionCartesian([[[(0., 0.), (0., 3.), (1., 2.9), (2., 2.6), (2.6, 2.), (2.9, 1.), (3., 0.), (0., 0.)]]], [[[(1., 1.), (1., 4.), (4., 4.), (4., 1.), (1., 1.)]]]))
MULTIPOLYGON(((1 2.9,2 2.6,2.6 2,2.9 1,1 1,1 2.9)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
polygonAreaCartesian¶
Calculates the area of a polygon
Example¶
SELECT polygonAreaCartesian([[[(0., 0.), (0., 5.), (5., 5.), (5., 0.)]]])
25
Input parameters¶
Polygon
Returned value¶
Float64
polygonPerimeterCartesian¶
Calculates the perimeter of a polygon.
Example¶
SELECT polygonPerimeterCartesian([[[(0., 0.), (0., 5.), (5., 5.), (5., 0.)]]])
15
Input parameters¶
Polygon
Returned value¶
Float64
polygonsUnionCartesian¶
Calculates the union of polygons.
Example¶
SELECT wkt(polygonsUnionCartesian([[[(0., 0.), (0., 3.), (1., 2.9), (2., 2.6), (2.6, 2.), (2.9, 1), (3., 0.), (0., 0.)]]], [[[(1., 1.), (1., 4.), (4., 4.), (4., 1.), (1., 1.)]]]))
MULTIPOLYGON(((1 2.9,1 4,4 4,4 1,2.9 1,3 0,0 0,0 3,1 2.9)))
Input parameters¶
Polygons
Returned value¶
MultiPolygon
S2Index¶
S2 is a geographical indexing system where all geographical data is represented on a three-dimensional sphere (similar to a globe).
In the S2 library points are represented as the S2 Index - a specific number which encodes internally a point on the surface of a unit sphere, unlike traditional (latitude, longitude) pairs. To get the S2 point index for a given point specified in the format (latitude, longitude) use the geoToS2 function. Also, you can use the s2ToGeo function for getting geographical coordinates corresponding to the specified S2 point index.
geoToS2¶
Returns S2 point index corresponding to the provided coordinates (longitude, latitude)
.
Syntax¶
geoToS2(lon, lat)
Arguments¶
lon
: Longitude. Float64.lat
: Latitude. Float64.
Returned values¶
- S2 point index. UInt64.
Example¶
Query:
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index
Result:
┌─────────────s2Index─┐ │ 4704772434919038107 │ └─────────────────────┘
s2ToGeo¶
Returns geo coordinates (longitude, latitude)
corresponding to the provided S2 point index.
Syntax¶
s2ToGeo(s2index)
Arguments¶
s2index
: S2 Index. UInt64.
Returned values¶
- A tuple consisting of two values:
lon
. Float64.lat
. Float64.
Example¶
Query:
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates
Result:
┌─s2Coodrinates────────────────────────┐ │ (37.79506681471008,55.7129059052841) │ └──────────────────────────────────────┘
s2GetNeighbors¶
Returns S2 neighbor indexes corresponding to the provided S2. Each cell in the S2 system is a quadrilateral bounded by four geodesics. So, each cell has 4 neighbors.
Syntax¶
s2GetNeighbors(s2index)
Arguments¶
s2index
: S2 Index. UInt64.
Returned value¶
- An array consisting of 4 neighbor indexes:
array[s2index1, s2index3, s2index2, s2index4]
. Array(UInt64).
Example¶
Query:
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors
Result:
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐ │ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │ └───────────────────────────────────────────────────────────────────────────────────┘
s2CellsIntersect¶
Determines if the two provided S2 cells intersect or not.
Syntax¶
s2CellsIntersect(s2index1, s2index2)
Arguments¶
siIndex1
,s2index2
: S2 Index. UInt64.
Returned value¶
1
: If the cells intersect. UInt8.0
: If the cells don't intersect. UInt8.
Example¶
Query:
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect
Result:
┌─intersect─┐ │ 1 │ └───────────┘
s2CapContains¶
Determines if a cap contains a S2 point. A cap represents a part of the sphere that has been cut off by a plane. It is defined by a point on a sphere and a radius in degrees.
Syntax¶
s2CapContains(center, degrees, point)
Arguments¶
center
: S2 point index corresponding to the cap. UInt64.degrees
: Radius of the cap in degrees. Float64.point
: S2 point index. UInt64.
Returned value¶
1
: If the cap contains the S2 point index. UInt8.0
: If the cap doesn't contain the S2 point index. UInt8.
Example¶
Query:
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains
Result:
┌─capContains─┐ │ 1 │ └─────────────┘
s2CapUnion¶
Determines the smallest cap that contains the given two input caps. A cap represents a portion of the sphere that has been cut off by a plane. It is defined by a point on a sphere and a radius in degrees.
Syntax¶
s2CapUnion(center1, radius1, center2, radius2)
Arguments¶
center1
,center2
: S2 point indexes corresponding to the two input caps. UInt64.radius1
,radius2
: Radius of the two input caps in degrees. Float64.
Returned values¶
center
: S2 point index corresponding the center of the smallest cap containing the two input caps. UInt64.radius
: Radius of the smallest cap containing the two input caps. Float64.
Example¶
Query:
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion
Result:
┌─capUnion───────────────────────────────┐ │ (4534655147792050737,60.2088283994957) │ └────────────────────────────────────────┘
s2RectAdd¶
Increases the size of the bounding rectangle to include the given S2 point. In the S2 system, a rectangle is represented by a type of S2Region called a S2LatLngRect
that represents a rectangle in latitude-longitude space.
Syntax¶
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
Arguments¶
s2PointLow
: Low S2 point index corresponding to the rectangle. UInt64.s2PointHigh
: High S2 point index corresponding to the rectangle. UInt64.s2Point
: Target S2 point index that the bound rectangle should be grown to include. UInt64.
Returned values¶
s2PointLow
: Low S2 cell id corresponding to the grown rectangle. UInt64.s2PointHigh
: Height S2 cell id corresponding to the grown rectangle. UInt64.
Example¶
Query:
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd
Result:
┌─rectAdd───────────────────────────────────┐ │ (5179062030687166815,5177056748191934217) │ └───────────────────────────────────────────┘
s2RectContains¶
Determines if a given rectangle contains a S2 point. In the S2 system, a rectangle is represented by a type of S2Region called a S2LatLngRect
that represents a rectangle in latitude-longitude space.
Syntax¶
s2RectContains(s2PointLow, s2PointHi, s2Point)
Arguments¶
s2PointLow
: Low S2 point index corresponding to the rectangle. UInt64.s2PointHigh
: High S2 point index corresponding to the rectangle. UInt64.s2Point
: Target S2 point index. UInt64.
Returned value¶
1
: If the rectangle contains the given S2 point.0
: If the rectangle doesn't contain the given S2 point.
Example¶
Query:
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains
Result:
┌─rectContains─┐ │ 0 │ └──────────────┘
s2RectUnion¶
Returns the smallest rectangle containing the union of this rectangle and the given rectangle. In the S2 system, a rectangle is represented by a type of S2Region called a S2LatLngRect
that represents a rectangle in latitude-longitude space.
Syntax¶
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Arguments¶
s2Rect1PointLow
,s2Rect1PointHi
: Low and High S2 point indexes corresponding to the first rectangle. UInt64.s2Rect2PointLow
,s2Rect2PointHi
: Low and High S2 point indexes corresponding to the second rectangle. UInt64.
Returned values¶
s2UnionRect2PointLow
: Low S2 cell id corresponding to the union rectangle. UInt64.s2UnionRect2PointHi
: High S2 cell id corresponding to the union rectangle. UInt64.
Example¶
Query:
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion
Result:
┌─rectUnion─────────────────────────────────┐ │ (5179062030687166815,5177056748191934217) │ └───────────────────────────────────────────┘
s2RectIntersection¶
Returns the smallest rectangle containing the intersection of this rectangle and the given rectangle. In the S2 system, a rectangle is represented by a type of S2Region called a S2LatLngRect
that represents a rectangle in latitude-longitude space.
Syntax¶
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Arguments¶
s2Rect1PointLow
,s2Rect1PointHi
: Low and High S2 point indexes corresponding to the first rectangle. UInt64.s2Rect2PointLow
,s2Rect2PointHi
: Low and High S2 point indexes corresponding to the second rectangle. UInt64.
Returned values¶
s2UnionRect2PointLow
: Low S2 cell id corresponding to the rectangle containing the intersection of the given rectangles. UInt64.s2UnionRect2PointHi
: High S2 cell id corresponding to the rectangle containing the intersection of the given rectangles. UInt64.
Example¶
Query:
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection
Result:
┌─rectIntersection──────────────────────────┐ │ (5178914411069187297,5177056748191934217) │ └───────────────────────────────────────────┘
Svg¶
Returns a string of select SVG element tags from Geo data.
Syntax¶
Svg(geometry,[style])
Aliases: SVG
, svg
Parameters¶
geometry
: Geo data. Geo.style
: Optional style name. String.
Returned value¶
- The SVG representation of the geometry. String.
- SVG circle
- SVG polygon
- SVG path
Examples¶
Circle¶
Query:
SELECT SVG((0., 0.))
Result:
<circle cx="0" cy="0" r="5" style=""/>
Polygon¶
Query:
SELECT SVG([(0., 0.), (10, 0), (10, 10), (0, 10)])
Result:
<polygon points="0,0 0,10 10,10 10,0 0,0" style=""/>
Path¶
Query:
SELECT SVG([[(0., 0.), (10, 0), (10, 10), (0, 10)], [(4., 4.), (5, 4), (5, 5), (4, 5)]])
Result:
<g fill-rule="evenodd"><path d="M 0,0 L 0,10 L 10,10 L 10,0 L 0,0M 4,4 L 5,4 L 5,5 L 4,5 L 4,4 z " style=""/></g>