postgis+空间查询
时间: 2024-01-05 16:21:09 浏览: 32
PostGIS是一个开源的地理信息系统(GIS)扩展,它允许在PostgreSQL数据库中存储和查询地理空间数据。使用PostGIS,您可以执行各种空间查询操作,如点、线、面的相交、包含、距离计算等。
以下是一个使用PostGIS进行空间查询的示例:
```sql
-- 创建一个包含空间数据的表
CREATE TABLE cities (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
location GEOMETRY(Point, 4326)
);
-- 插入一些示例数据
INSERT INTO cities (name, location) VALUES
('New York', ST_SetSRID(ST_MakePoint(-74.0060, 40.7128), 4326)),
('London', ST_SetSRID(ST_MakePoint(-0.1276, 51.5074), 4326)),
('Tokyo', ST_SetSRID(ST_MakePoint(139.6917, 35.6895), 4326));
-- 查询距离指定点最近的城市
SELECT name
FROM cities
ORDER BY location <-> ST_SetSRID(ST_MakePoint(-73.935242, 40.730610), 4326)
LIMIT 1;
```
上述示例中,我们首先创建了一个名为`cities`的表,其中包含`name`和`location`两个列。`location`列的数据类型为`GEOMETRY(Point, 4326)`,表示存储的是点类型的地理空间数据,并使用EPSG 4326坐标系。
然后,我们插入了一些示例数据,包括纽约、伦敦和东京的经纬度坐标。
最后,我们执行了一个空间查询,使用`<->`操作符计算指定点(纽约市中心)与每个城市的距离,并按距离排序,返回最近的城市名称。