pg入门18—如何使用pg gis

news/2024/9/22 7:48:08/

1. 下载postgre gis镜像

2. 运行镜像

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

3. 使用gis

# 进入容器,登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用mygeotest数据库/c mygeotest# 创建gis扩展CREATE EXTENSION postgis;###### 存储地点 #######################################################
# 创建表,数据类型为PointCREATE 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;##### 存储路线 #######################################################
# 创建表,数据类型为LINESTRINGCREATE 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维空间信息# 创建表,数据类型为POINTZCREATE 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.ppmy.cn/news/1528731.html

相关文章

配置docker的proxy指向

因为网络原因,现在无法直接下载docker hub上的镜像,需设置通过proxy进行访问。 一、测试环境 在笔记本上启用了proxy软件,笔记本IP为192.168.253.1,proxy端口8888。搭建一台Linux虚拟机用于下载docker镜像,虚拟机IP&…

SQL进阶技巧:火车票相邻座位预定一起可能情况查询算法 ?

目录 0 场景描述 1 数据准备 2 问题分析 2.1 分析函数法 2.2 自关联求解 3 小结

大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

window下idea中scala的配置

目录 Scala安装步骤: 1.下载scala安装包 2.配置环境变量: 3.检查scala是否安装成功: 4.idea安装scala插件 5.导入scala-sdk 6.新建scala文件 Scala安装步骤: 1.下载scala安装包 访问Scala官网:https://www.sca…

用户态缓存:链式缓冲区(Chain Buffer)

目录 链式缓冲区(Chain Buffer)简介 为什么选择链式缓冲区? 代码解析 1. 头文件与类型定义 2. 结构体定义 3. 宏定义与常量 4. 环形缓冲区的基本操作 5. 其他辅助函数 6. 数据读写操作的详细实现 7. 总结 8. 结合之前的内容 9. 具…

DevOps -分布式追踪与监控

DevOps中的分布式追踪与监控 在当今的DevOps环境中,随着微服务架构和云原生应用的广泛采用,系统复杂性显著增加,传统的监控方式已经无法满足现代分布式系统的需求。为了提高系统可观测性,分布式追踪和监控成为现代DevOps实践中至…

四、JVM原理-4.1、JVM介绍

4.1、JVM介绍 4.1.1、如何理解Java虚拟机,它的结构是如何设计的? 答: Java虚拟机(Java Virtual Machine,JVM)是Java语言编写的程序在运行时的执行环境。它是Java的核心组成部分,负责解释和执行…

驾驶员注意力分神状态检测系统源码分享

驾驶员注意力分神状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …