+
80
-

PostgreSQL中如何使用PostGIS?

PostgreSQL中如何使用PostGIS?


网友回复

+
0
-

PostGIS是PostgreSQL的一个扩展,它允许在PostgreSQL中存储和查询地理空间数据。要使用PostGIS,需要在PostgreSQL中安装PostGIS扩展,然后在需要使用空间数据的表中添加一个空间列。

以下是在PostgreSQL中使用PostGIS的一些基本步骤:

安装PostGIS扩展

可以通过以下命令在Ubuntu中安装PostGIS扩展:

sudo apt-get install postgis

如果您使用的是其他操作系统,请查看相关文档以了解如何安装PostGIS扩展。

创建一个空间数据库

可以使用以下命令在PostgreSQL中创建一个空间数据库:

createdb myspatialdb

在需要使用空间数据的表中添加一个空间列

可以使用以下命令在PostgreSQL中创建一个包含空间列的表:

CREATE TABLE mytable (
id SERIAL PRIMARY KEY,
name TEXT,
geom GEOMETRY(Point, 4326)
);
在上面的示例中,我们创建了一个名为mytable的表,它具有一个名为geom的空间列,该列的类型为Point,并且使用WGS84投影(SRID 4326)。

插入空间数据

可以使用以下命令将空间数据插入mytable表中:

INSERT INTO mytable (name, geom) VALUES ('Point A', ST_SetSRID(ST_MakePoint(-122.4194, 37.7749), 4326));

在上面的示例中,我们将一个名为Point A的点插入到mytable表中,该点的坐标为经度-122.4194和纬度37.7749。

查询空间数据

可以使用以下命令查询包含在指定区域内的所有空间数据:

SELECT id, name FROM mytable WHERE ST_Contains(ST_MakeEnvelope(-122.5, 37.5, -122.3, 37.8, 4326), geom);

在上面的示例中,我们查询mytable表中所有包含在指定区域内的空间数据,该区域由一个矩形定义,其西南角坐标为经度-122.5和纬度37.5,东北角坐标为经度-122.3和纬度37.8。

查询距离指定经纬度点5公里范围内的所有经纬度点的SQL语句示例:

SELECT *
FROM mytable
WHERE ST_DWithin(geom::geography, ST_SetSRID(ST_MakePoint(lon, lat), 4326)::geography, 5000);

在上面的示例中,mytable是包含经纬度点的表,geom是存储经纬度点的列,lon和lat是要查询的中心经纬度点的经度和纬度。ST_MakePoint函数用于创建一个点几何对象,ST_SetSRID函数用于设置该点的空间参考系(在这里为WGS84,SRID为4326)。geom::geography和ST_SetSRID(ST_MakePoint(lon, lat), 4326)::geography将几何对象转换为地理坐标系,以便进行距离计算。5000表示5公里的距离范围,单位是米。

我知道答案,我要回答