当前位置: 首页 > article >正文

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 数据进行交互,进行可视化和进一步分析。


http://www.kler.cn/a/315324.html

相关文章:

  • 单片机设计电流与温度监控python上位机监控平台设计
  • ES6字符串的新增方法
  • 排序算法 -快速排序
  • Python——NumPy库的简单用法,超级详细教程使用
  • Linux网络——网络初识
  • PyTorch深度学习与企业级项目实战-预训练语言模型GPT
  • 大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
  • 绑定变量对于SQL性能的影响
  • Python练习宝典:Day 1 - 选择题 - 基础知识
  • Go搭建TcpSocket服务器
  • 华润电力最新校招社招润择认知能力测评:逻辑推理数字计算语言理解高分攻略
  • K8s容器运行时,移除Dockershim后存在哪些疑惑?
  • 神经网络面试题目
  • 【AI视频】复刻抖音爆款AI数字人作品初体验
  • 什么是机器学习力场
  • 多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测
  • cesium.js 入门到精通(5-2)
  • CentOS7.9环境上NFS搭建及使用
  • linux-系统备份与恢复-系统恢复
  • 云硬盘EVS详细解析和配置使用方法
  • 【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程
  • Qt5详细安装教程(包含导入pycharm)
  • LangChain4j支持的API类型
  • Linux中使用cp命令的 -f 选项,但还是提醒覆盖的问题
  • 828华为云征文|云服务器Flexus X实例|MacOS系统-宝塔部署Nuxt项目
  • 【C#生态园】从基础到深度学习:探索C#机器学习库