mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-14 19:45:11 +00:00
71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
|
# Functions for working with geographical coordinates
|
||
|
|
||
|
## greatCircleDistance
|
||
|
|
||
|
Calculate the distance between two points on the Earth's surface using [the great-circle formula](https://en.wikipedia.org/wiki/Great-circle_distance).
|
||
|
|
||
|
```
|
||
|
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
|
||
|
```
|
||
|
|
||
|
**Input parameters**
|
||
|
|
||
|
- `lon1Deg` — Latitude of the first point in degrees. Range: `[-90°, 90°]`.
|
||
|
- `lat1Deg` — Longitude of the first point in degrees. Range: `[-180°, 180°]`.
|
||
|
- `lon2Deg` — Latitude of the second point in degrees. Range: `[-90°, 90°]`.
|
||
|
- `lat2Deg` — Longitude of the second point in degrees. Range: `[-180°, 180°]`.
|
||
|
|
||
|
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**
|
||
|
|
||
|
```sql
|
||
|
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
┌─greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)─┐
|
||
|
│ 14132374.194975413 │
|
||
|
└───────────────────────────────────────────────────────────────────┘
|
||
|
```
|
||
|
|
||
|
## pointInEllipses
|
||
|
|
||
|
Checks whether the point belongs to at least one of the ellipses.
|
||
|
|
||
|
```
|
||
|
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
|
||
|
```
|
||
|
|
||
|
**Input parameters**
|
||
|
|
||
|
- `x` — Latitude of the point.
|
||
|
- `y` — Longitude of the point.
|
||
|
- `xᵢ, yᵢ` — Coordinates of the center of the `i`-th ellipsis.
|
||
|
- `aᵢ, bᵢ` — Axes of the `i`-th ellipsis in meters.
|
||
|
|
||
|
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 is not.
|
||
|
|
||
|
**Examples:**
|
||
|
|
||
|
```sql
|
||
|
SELECT pointInEllipses(55.755831, 37.617673, 55.755831, 37.617673, 1.0, 2.0)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
┌─pointInEllipses(55.755831, 37.617673, 55.755831, 37.617673, 1., 2.)─┐
|
||
|
│ 1 │
|
||
|
└─────────────────────────────────────────────────────────────────────┘
|
||
|
```
|
||
|
|