postgreSql查询两个经纬度之间的距离
时间: 2024-09-06 11:02:08 浏览: 113
PostgreSQL中可以使用`earthdistance`模块来查询两个经纬度之间的距离。首先需要确保数据库中安装并启用了`earthdistance`扩展。以下是一个使用该模块的基本示例:
1. 创建一个包含经纬度的表:
```sql
CREATE TABLE locations (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
latitude FLOAT,
longitude FLOAT
);
```
2. 插入一些地理位置数据:
```sql
INSERT INTO locations (name, latitude, longitude) VALUES ('地点A', 30.65866, 104.06472);
INSERT INTO locations (name, latitude, longitude) VALUES ('地点B', 34.05223, -118.24368);
```
3. 使用`earthdistance`模块的`point`和`earth_box`函数来查询两个地点之间的距离:
```sql
SELECT
name || ' 和 ' || name2 AS 地点对,
round((earth_box(earth, ll_to_earth(latitude, longitude), radius)::geography).diameter / 2) AS 距离(米)
FROM
(SELECT id, name, latitude, longitude FROM locations) AS loc1,
(SELECT id, name, latitude, longitude FROM locations) AS loc2
WHERE
loc1.id != loc2.id
ORDER BY
距离(米) ASC
LIMIT 10;
```
这个查询将会返回两个地点之间的距离,并且按照距离由近及远排序,返回距离最近的10对地点。
注意,在使用`earthdistance`模块之前,需要创建该模块:
```sql
CREATE EXTENSION IF NOT EXISTS earthdistance;
```
阅读全文