pg入门18—如何使用pg gis

1. 下载postgre gis镜像

2. 运行镜像

复制代码
docker run -p 15432:5432 -d  -e POSTGRES_PASSWORD=Ab123456! postgis/postgis:12-3.4-alpine

3. 使用gis

复制代码
# 进入容器,登录pg

docker exec -it bash

# 登录数据库

psql -U postgres


# 创建数据库

CREATE DATABASE mygeotest;

# 使用mygeotest数据库

/c mygeotest

# 创建gis扩展

CREATE EXTENSION postgis;

###### 存储地点 #######################################################
# 创建表,数据类型为Point

CREATE TABLE places (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    geom GEOGRAPHY(Point, 4326)  -- 使用 WGS 84 坐标系
);


# 插入数据

INSERT INTO places (name, geom)
VALUES ('My Location', ST_GeomFromText('POINT(30 10)', 4326));


# 查询数据

SELECT id, name, ST_AsText(geom) FROM places;


##### 存储路线 #######################################################
# 创建表,数据类型为LINESTRING

CREATE TABLE routes (  id SERIAL PRIMARY KEY,  name VARCHAR(100),  geom GEOMETRY(LINESTRING, 4326) );

# 插入数据

INSERT INTO routes (name, geom)
VALUES ('Route 1', ST_GeomFromText('LINESTRING(30 10, 40 40, 50 50)', 4326));

# 查询数据

SELECT id, name, ST_AsText(geom) FROM routes;



# 存储3维空间信息

# 创建表,数据类型为POINTZ

CREATE TABLE locations (  id SERIAL PRIMARY KEY,   name VARCHAR(100),  geom GEOMETRY(POINTZ, 4326) );

# 插入数据
INSERT INTO locations (name, geom)
VALUES ('Location A', ST_GeomFromText('POINT(30 10 100)', 4326));


# 查询数据

SELECT id, name, ST_AsText(geom) FROM locations;

4. 使用空间函数

PostGIS 提供了许多空间函数,例如计算面积、距离、缓冲区等。例如,计算两点之间的距离:

复制代码
SELECT ST_Distance( ST_GeomFromText('POINT(30 10)', 4326), ST_GeomFromText('POINT(30.1 10.1)', 4326) );

5. 其他功能

  • 空间索引:为了提高查询性能,可以为几何列创建空间索引:

    复制代码
    CREATE INDEX idx_places_geom ON places USING GIST(geom);
  • 支持多种数据类型:PostGIS 支持多种几何类型,包括点、线、多边形等,可以使用这些类型来表示复杂的地理对象。

6. 使用工具和库

你可以使用诸如 QGIS、GeoServer、Leaflet 等工具和库与 PostGIS 数据进行交互,进行可视化和进一步分析。

相关推荐
这个DBA有点耶4 分钟前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz21 分钟前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
JdSnE27zv43 分钟前
Qt 操作SQLite数据库
数据库·qt·sqlite
tedcloud1231 小时前
HyperFrames部署教程:用HTML生成MP4视频
前端·数据库·人工智能·html·音视频
布朗克1681 小时前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
阿演1 小时前
DataDjinn 新版本更新:新增 Oracle 支持,查询窗口、表预览和连接树继续打磨
数据库·oracle·ai编程·数据库连接工具
lixora1 小时前
Oracle 11g Active Data Guard Go 自动化部署工具 v1.0
数据库·oracle
Nturmoils1 小时前
自增主键别只会 auto_increment,先把值从哪来讲清楚
数据库·后端
叶小鸡1 小时前
Java 篇-项目实战-AI 天机学堂(从 0 到 1)-day5
数据库·redis·缓存
mN9B2uk172 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle