文章目录
  1. 1. 介绍
  2. 2. 安装
  3. 3. 启用
  4. 4. 升级
  5. 5. 使用
  6. 6. 参考资料
  7. 7. 文档信息

介绍


首先来介绍一下 PostGIS 是什么?
PostGIS 是 PostgreSQL 对象关系数据库的一个空间数据库扩展。它增加了对地理对象的支持,允许在SQL中运行位置查询。

官方介绍:

PostGIS:Spatial and Geographic objects for PostgreSQL

PostGIS is a spatial database extender for PostgreSQL object-relational database. It adds support for geographic objects allowing location queries to be run in SQL.

1
2
3
4
SELECT superhero.name
FROM city, superhero
WHERE ST_Contains(city.geom, superhero.geom)
AND city.name = 'Gotham';

In addition to basic location awareness, PostGIS offers many features rarely found in other competing spatial databases such as Oracle Locator/Spatial and SQL Server.

安装


macOS 中使用 brew 安装:

1
brew install postgis

Centos:

1
2
3
dnf -y install epel-release
dnf -y config-manager --set-enabled PowerTools
dnf -y install postgis31_13

Fedora / Red Hat / CentOS / Oracle Linux:
POSTGRESQL COMMON REPOSITORY(其中包含但不限于 PostgrSQL、pgAdmin、Slony-I、PostGIS 等 RPM 包) 找到对应的版本进行安装。

启用


PostGIS 是一个可选扩展,在你想使用它之前必须在每个数据库中启用它,然后才能使用它。

通过 psql 或 PgAdmin 连接你的数据库,然后运行下面SQL

1
2
3
4
-- Enable PostGIS (as of 3.0 contains just geometry/geography)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;

注意:不要在 postgres 数据库中启用

升级


升级到最新版本:

1
2
ALTER EXTENSION postgis UPDATE;
ALTER EXTENSION postgis_topology UPDATE;

或指定版本升级:

1
2
3
4
5
ALTER EXTENSION postgis
UPDATE TO "3.1.0";
-- Upgrade Topology
ALTER EXTENSION postgis_topology
UPDATE TO "3.1.0";

使用


首先,创建一个带有空间列的表

1
2
3
4
5
CREATE TABLE mytable (
id SERIAL PRIMARY KEY,
geom GEOMETRY(Point, 26910),
name VARCHAR(128)
);

然后添加空间索引

1
2
3
CREATE INDEX mytable_gix
ON mytable
USING GIST (geom);

插入测试数据:

1
2
3
INSERT INTO mytable (geom) VALUES (
ST_GeomFromText('POINT(0 0)', 26910)
);

查询附近的点

1
2
3
4
5
6
7
SELECT id, name
FROM mytable
WHERE ST_DWithin(
geom,
ST_GeomFromText('POINT(0 0)', 26910),
1000
);

参考资料


文档信息


  • 版权声明:自由转载-保持署名-非商用-非衍生 ( CC BY-NC-ND 4.0 )
文章目录
  1. 1. 介绍
  2. 2. 安装
  3. 3. 启用
  4. 4. 升级
  5. 5. 使用
  6. 6. 参考资料
  7. 7. 文档信息