介绍
首先来介绍一下 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 | SELECT superhero.name |
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.
安装
不同系统不同安装方式 不再此处展开讲
背景
公司新项目需要在系统中整合gis图,之前没有接触过,特此开一篇文章来讲解学习,后续持续更新。
启用
PostGIS 是一个可选扩展,在你想使用它之前必须在每个数据库中启用它,然后才能使用它。
通过 psql 或 PgAdmin 连接你的数据库,然后运行下面SQL
1 | -- Enable PostGIS (as of 3.0 contains just geometry/geography) |
* 注意:不要在 postgres
数据库中启用
升级
升级到最新版本
1 | ALTER EXTENSION postgis UPDATE; |
或指定版本升级
1 | ALTER EXTENSION postgis |
使用
首先,创建一个带有空间列的表
1 | CREATE TABLE mytable ( |
解释 :个人理解 安装完PostGis扩展后 pg库支持了 GEOMETRY
类型 特殊类型。
然后添加空间索引
1 | CREATE INDEX mytable_gix |
插入测试数据
1 | INSERT INTO mytable (geom) VALUES ( |
解释:通过ST_GeomFromText
存储 特殊的几何数据/点位数据。
查询附近的点
1 | SELECT id, name |