首先来介绍一下 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.
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.
安装
不同系统不同安装方式 不再此处展开讲
背景
公司新项目需要在系统中整合gis图,之前没有接触过,特此开一篇文章来讲解学习,后续持续更新。
启用
PostGIS 是一个可选扩展,在你想使用它之前必须在每个数据库中启用它,然后才能使用它。
通过 psql 或 PgAdmin 连接你的数据库,然后运行下面SQL
-- Enable PostGIS (as of 3.0 contains just geometry/geography)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
*** 注意:不要在 postgres 数据库中启用
升级
升级到最新版本
ALTER EXTENSION postgis UPDATE;
ALTER EXTENSION postgis_topology UPDATE;
或指定版本升级
ALTER EXTENSION postgis
UPDATE TO "3.1.0";
-- Upgrade Topology
ALTER EXTENSION postgis_topology
UPDATE TO "3.1.0";
使用
首先,创建一个带有空间列的表
CREATE TABLE mytable (
id SERIAL PRIMARY KEY,
geom GEOMETRY(Point, 26910),
name VARCHAR(128)
);
解释 :个人理解 安装完PostGis扩展后 pg库支持了 GEOMETRY 类型 特殊类型。
然后添加空间索引
CREATE INDEX mytable_gix
ON mytable
USING GIST (geom);
插入测试数据
INSERT INTO mytable (geom) VALUES (
ST_GeomFromText('POINT(0 0)', 26910)
);
解释:通过ST_GeomFromText存储 特殊的几何数据/点位数据。
查询附近的点
SELECT id, name
FROM mytable
WHERE ST_DWithin(
geom,
ST_GeomFromText('POINT(0 0)', 26910),
1000
);
————————————————
版权声明:本文为CSDN博主「Aliang!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Hyl_Aa/article/details/131520215
- PostgreSQL PostGIS PgSqlpostgresql postgis pgsql postgresql postgis ubuntu postgresql centos7 postgis centos postgresql postgis ubuntu 18.04 postgresql插件postgis数据库 postgresql ogr命令postgis timescaledb postgresql插件postgis postgresql postgis centos7 centos 集群postgresql pgrouting postgis postgresql postgis3 centos7 postgis