请注意:
下文中的一些示例引用自 ClickHouse 社区文档 并经过一定修改确保可以在 ByteHouse 中正常使用。
Decodes any geohash-encoded string into longitude and latitude.
Syntax
geohashDecode(encoded_string)
Arguments
encoded_string
- geohash-encoded string.Returned values
Example
SELECT geohashDecode('ezs42d000000') as res;
┌─res─────────────────────────────────────┐ │ (-5.603027176111937, 42.59399422444403) │ └─────────────────────────────────────────┘
Encodes latitude and longitude as a geohash-string.
Syntax
geohashEncode(longitude, latitude, [precision])
Arguments
[-180°, 180°]
[-90°, 90°]
12
. Integer in range [1, 12]
. Any value less than 1
or greater than 12
is silently converted to 12
.Returned values
String
of encoded coordinate (modified version of the base32-encoding alphabet is used).Example
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
┌─res──────────┐ │ ezs42d000000 │ └──────────────┘
Calculates the distance between two points on the Earth’s surface using the great-circle formula .
Syntax
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Arguments
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°]
.Returned value
Example
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673);
┌─greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)─┐ │ 1.4132374194975413e+07 │ └───────────────────────────────────────────────────────────────────┘
Checks whether the point belongs to at least one of the ellipses.
Coordinates are geometric in the Cartesian coordinate system.
Syntax
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
Arguments
x, y
— Coordinates of a point on the plane.xᵢ, yᵢ
— Coordinates of the center of the i
-th ellipsis.aᵢ, bᵢ
— Axes of the i
-th ellipsis in units of x, y coordinates.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 is not.Example
SELECT pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)
┌─pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)─┐ │ 1 │ └─────────────────────────────────────────────────┘
Checks whether the point belongs to the polygon on the plane.
Syntax
pointInPolygon((x, y), [(a, b), (c, d) ...], ...)
Arguments
(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.Returned values
1
if the point is inside the polygon, 0
if it is 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 │ └─────┘