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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mybatis中sql数组为空判断
  • 3款免费的GPT类工具
  • vscode软件在 C发中常用插件
  • 【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop
  • 【动态库的加载】【进程地址空间(三)】
  • iPhone16,超先进摄像头系统?丝滑的相机控制
  • Vue 依赖注入组件通信:provide / inject 使用详解
  • 链动3+1滑落模式小程序开发
  • 7、论等保的必要性
  • Linux之实战命令03:stat应用实例(三十七)
  • 分治策略:从入门到精通,10分钟带你玩转算法!
  • 软件测试 BUG 篇
  • INDEX函数和MATCH函数知识讲解与案例演示
  • Linux、Windows、Android下查看可执行文件、动态库和静态库信息的命令
  • 997. 找到小镇的法官(24.9.22)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Apache Pulsar 2.1 重磅发布
  • C++类的相互关联
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Iterator 和 for...of 循环
  • JSDuck 与 AngularJS 融合技巧
  • Netty源码解析1-Buffer
  • vue的全局变量和全局拦截请求器
  • 浏览器缓存机制分析
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 小李飞刀:SQL题目刷起来!
  • 【云吞铺子】性能抖动剖析(二)
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ######## golang各章节终篇索引 ########
  • #AngularJS#$sce.trustAsResourceUrl
  • $$$$GB2312-80区位编码表$$$$
  • (175)FPGA门控时钟技术
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (NSDate) 时间 (time )比较
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (四)React组件、useState、组件样式
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)http-server应用
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .Net中的集合
  • /etc/shadow字段详解
  • /proc/vmstat 详解
  • ??在JSP中,java和JavaScript如何交互?
  • @font-face 用字体画图标
  • @Transactional类内部访问失效原因详解
  • [ C++ ] STL---仿函数与priority_queue
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [bzoj1912]异象石(set)
  • [C++初阶]string类的详解