postgis

2024-09-01 17:04
文章标签 postgis

本文主要是介绍postgis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、增加POSTGIS扩展插件
CREATE EXTENSION postgis;

2、增加一个三维数据表

CREATE TABLE threed_points (
    id SERIAL PRIMARY KEY,
    name TEXT,
    location GEOMETRY(PointZ, 4326)  -- 使用PointZ类型表示三维点,并指定EPSG:4326坐标系
);

3、插入数据 
-- 插入一些三维点数据
INSERT INTO threed_points (name, location) VALUES 
('point1', ST_GeomFromText('POINTZ(0 0 1)', 4326)),  -- 插入一个三维点,坐标为(0, 0, 1)
('point2', ST_GeomFromText('POINTZ(1 1 2)', 4326));   -- 插入另一个三维点,坐标为(1, 1, 2)

 
-- 插入一些三维点数据
INSERT INTO threed_points (name, location) VALUES 
('point10', ST_GeomFromText('POINTZ(-10 10 0)', 4326)),  -- 插入一个三维点,坐标为(0, 0, 1)
('point100', ST_GeomFromText('POINTZ(-100 100 3)', 4326)),

('point-2', ST_GeomFromText('POINTZ(-2 -2 0)', 4326)),  -- 插入一个三维点,坐标为(0, 0, 1)
('point-8', ST_GeomFromText('POINTZ(-8 -6 3)', 4326));   -- 插入另一个三维点,坐标为(1, 1, 2)

4、sql查询

PostgresSQL中的常用空间函数_pgsql st函数-CSDN博客

SELECT id, name, location
FROM threed_points
WHERE ST_3DDistance(location, ST_GeomFromText('POINTZ(5 5 5)', 4326)) <= 5;

1.ST_GeomFromText
ST_GeomFromText函数根据字符串表示构造几何
示例如下:

ST_Geometry: ST_GeomFromText(WKT, WKID)
# ST_Geometry :返回值类型
# WKT(well-known-text):几何文本的字符串
# WKID 投影坐标对应的编号

2.ST_CoveredBy
ST_CoveredBy:测试A几何是否在空间上被B几何压覆
示例如下:

boolean: ST_CoveredBy(geomA, geomB)

3.ST_Force2D
ST_Force2D:强制几何图形进入“二维模式”,以便所有输出表示将只有X和Y坐标
示例如下:

ST_Force2D(geometry)

4.ST_Intersection
ST_Intersection:返回两个几何点集交集的几何
示例如下:

ST_Geometry : ST_Intersection(geom1, geom2)

5.st_transform
st_transform:坐标系统之间的几何转换
示例如下

st_transform(geom, WKID)

6.st_area6.st_area
计算几何面积
示例如下:

st_area6(geometry)

2.OGC标准函数
1.管理函数:
添加几何字段 AddGeometryColumn(, , , , , )
删除几何字段 DropGeometryColumn(, , )
检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns()
给几何对象设置空间参考(在通过一个范围做空间查询时常用)ST_SetSRID(geometry, integer)

2.几何对象关系函数:
获取两个几何对象间的距离 ST_Distance(geometry, geometry)
如果两个几何对象间距离在给定值范围内,则返回TRUEST_DWithin(geometry, geometry, float)
判断两个几何对象是否相等
(比如LINESTRING(0 0, 2 2)和LINESTRING(0 0, 1 1, 2 2)是相同的几何对象)ST_Equals(geometry, geometry)
判断两个几何对象是否分离 ST_Disjoint(geometry, geometry)
判断两个几何对象是否相交 ST_Intersects(geometry, geometry)
判断两个几何对象的边缘是否接触 ST_Touches(geometry, geometry)
判断两个几何对象是否互相穿过 ST_Crosses(geometry, geometry)
判断A是否被B包含 ST_Within(geometry A, geometry B)
判断两个几何对象是否是重叠 ST_Overlaps(geometry, geometry)
判断A是否包含B ST_Contains(geometry A, geometry B)
判断A是否覆盖 B ST_Covers(geometry A, geometry B)
判断A是否被B所覆盖 ST_CoveredBy(geometry A, geometry B)
通过DE-9IM 矩阵判断两个几何对象的关系是否成立 ST_Relate(geometry, geometry, intersectionPatternMatrix)
获得两个几何对象的关系(DE-9IM矩阵) ST_Relate(geometry, geometry)

3.几何对象处理函数:
获取几何对象的中心 ST_Centroid(geometry)
面积量测 ST_Area(geometry)
长度量测 ST_Length(geometry)
返回曲面上的一个点 ST_PointOnSurface(geometry)
获取边界 ST_Boundary(geometry)
获取缓冲后的几何对象 ST_Buffer(geometry, double,[integer])
获取多几何对象的外接对象 ST_ConvexHull(geometry)
获取两个几何对象相交的部分 ST_Intersection(geometry, geometry)
将经度小于0的值加360使所有经度值在0-360间 ST_Shift_Longitude(geometry)
获取两个几何对象不相交的部分(A、B可互换) ST_SymDifference(geometry A,geometry B)
从A去除和B相交的部分后返回 ST_Difference(geometry A, geometryB)
返回两个几何对象的合并结果 ST_Union(geometry, geometry)
返回一系列几何对象的合并结果 ST_Union(geometry set)
用较少的内存和较长的时间完成合并操作,结果和ST_Union相同 ST_MemUnion(geometry set)

4.几何对象存取函数:
获取几何对象的WKT描述 ST_AsText(geometry)
获取几何对象的WKB描述 ST_AsBinary(geometry)
获取几何对象的空间参考ID ST_SRID(geometry)
获取几何对象的维数 ST_Dimension(geometry)
获取几何对象的边界范围 ST_Envelope(geometry)
判断几何对象是否为空 ST_IsEmpty(geometry)
判断几何对象是否不包含特殊点(比如自相交)ST_IsSimple(geometry)
判断几何对象是否闭合 ST_IsClosed(geometry)
判断曲线是否闭合并且不包含特殊点 ST_IsRing(geometry)
获取多几何对象中的对象个数 ST_NumGeometries(geometry)
获取多几何对象中第N个对象 ST_GeometryN(geometry,int)
获取几何对象中的点个数 ST_NumPoints(geometry)
获取几何对象的第N个点 ST_PointN(geometry,integer)
获取多边形的外边缘 ST_ExteriorRing(geometry)
获取多边形内边界个数 ST_NumInteriorRings(geometry)
同上 ST_NumInteriorRing(geometry)
获取多边形的第N个内边界 ST_InteriorRingN(geometry,integer)
获取线的终点 ST_EndPoint(geometry)
获取线的起始点 ST_StartPoint(geometry)
获取几何对象的类型 GeometryType(geometry)
类似上,但是不检查M值,即POINTM对象会被判断为point ST_GeometryType(geometry)
获取点的X坐标 ST_X(geometry)
获取点的Y坐标 ST_Y(geometry)
获取点的Z坐标 ST_Z(geometry)
获取点的M值 ST_M(geometry)

5.几何对象构造函数:
参考语义:
Text:WKT
WKB:WKB
Geom:Geometry
M:Multi
Bd:BuildArea
Coll:Collection ST_GeomFromText(text,[])    将wkt转为geometry

ST_PointFromText(text,[])
ST_LineFromText(text,[])
ST_LinestringFromText(text,[])
ST_PolyFromText(text,[])
ST_PolygonFromText(text,[])
ST_MPointFromText(text,[])
ST_MLineFromText(text,[])
ST_MPolyFromText(text,[])
ST_GeomCollFromText(text,[])
ST_GeomFromWKB(bytea,[])
ST_GeometryFromWKB(bytea,[])
ST_PointFromWKB(bytea,[])
ST_LineFromWKB(bytea,[])
ST_LinestringFromWKB(bytea,[])
ST_PolyFromWKB(bytea,[])
ST_PolygonFromWKB(bytea,[])
ST_MPointFromWKB(bytea,[])
ST_MLineFromWKB(bytea,[])
ST_MPolyFromWKB(bytea,[])
ST_GeomCollFromWKB(bytea,[])
ST_BdPolyFromText(text WKT, integer SRID)
ST_BdMPolyFromText(text WKT, integer SRID)

这篇关于postgis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127535

相关文章

PostgreSQL + PostGIS:空间数据存储及管理解决方案

在数据库领域,PostgreSQL 已成为最强大、最通用的选项之一。它管理大量数据的能力、对 SQL 标准的遵守以及可扩展的架构使其受到学术界和工业界的喜爱。然而,真正让 PostgreSQL 脱颖而出的原因之一是它与PostGIS的集成,这是一个允许您有效处理空间数据的扩展。在本文中,我们将探讨什么是 PostgreSQL、什么是 PostGIS,以及它们如何共同为地理空间数据管理提供强大的解决

使用pgdump、pgrestore迁移数据表到docker部署的postgis

将本地数据同步到内网服务器,使用的postgis,表含空间字段 备份 本地使用pgadmin 4进行备份,pgrestore的命令参数找起来麻烦,这个可以界面操作,比较方便 说明 说明的截图来自pgadmin,点击这个打开 步骤 因为是整表备份,这里其他都没动,只把owner和privilege去掉了 然后点击backup按钮,开始备份 迁移/恢复 目

postgis 随记

1.ST_BdPolyFromText  从一组文本数据中 得到一个多边形 2.ST_BdMPolyFromText   给定一组闭合线集合 得到多边形 3. ST_GeogFromText 、 ST_GeographyFromText  、, ST_AsText   把wkt文件转化为特定的地理数据 4.ST_GeogFromWKB      创建一个地理实例从著名的二进制几何表示法(WK

下载OSM数据,使用 osm2pgsql 导入至PostgreSQL(PostGIS),安装GeoServer并绑定数据(一)

前提: 1、已安装 PostgreSQL PostgreSQL 10 安装详细步骤 https://blog.csdn.net/antma/article/details/83579920 2、已安装PostGIS 2.5.0 安装详细步骤 PostGIS 2.5.0 安装详细步骤 https://blog.csdn.net/antma/article/details/83580859

GeoServer + PostGIS 进行图层文件数据导入并发布

一.数据导入 1.新建数据库         打开pgAdmin管理工具,登录后右键Databases新建数据库 2.添加空间数据库扩展         建立完成数据库后,点击该数据库下的Schemas->public->Table,使用SQL语句添加空间数据库管理插件PostGIS:CREATE EXTENSION PostGIS,成功后刷新,数据表中会出现spatial

在PostGIS中一个面要素表中的缝隙(Find gaps among polygons in PostGIS)

场景 在PostGIS中有一张面要素表,需要检查该表中的哪些地方有缝隙。 其中缝隙定义为这些多边形的并集中的环。 There is a surface feature table in PostGIS, and it is necessary to check which areas in the table have gaps. The gaps are defined as the ring

基于PostGIS的mvt动态矢量切片的后台地图服务和前端调用

目录 一、背景 二、矢量切片 三、Mapbox的矢量切片格式 四、PostGIS生成矢量切片 ST_AsMVT: ST_AsMVTGeom: 五、导入试验数据 六、编写PostGIS函数 七:Java后端实现 八、Openlayers前端调用 一、背景 矢量切片技术目前已成为互联网地图的主流技术,无论是Mapbox还是高德地图、百度地图,如今打开F12看到的数据

PostGIS 13.5 主从搭建

PostGIS 主从搭建 适用版本 postgresql 13.5PostGIS 3.1.4 服务器规划 服务器IP用途postgis01172.88.0.181主库postgis02172.88.0.182从库 主库 PostGIS 数据库安装 安装 postgresql [root@postgis01 ~]# yum install -y https://download.pos

postgis中构造geojson

首先注意: 比如现在有两张表,一张population_rural表和一张sichuan表,population_rural表提供属性数据,sichuan表提供地理空间数据 population_rural表内容如下: 现在从population_rural表中查,并将结果表存在名为B的暂存表中 sichuan表内容如下: 现在从sichuan表中查,并将结果表存在名为A

基于SpringBoot和PostGIS的各省与地级市空间距离分析

目录 前言 一、PostGIS时空库 1、时空表设计 2、空间数据管理与查询 二、后台接口设计 1、ORM层设计与实现 2、业务层设计与实现 3、控制层设计 三、web可视化设计与实现 1、省份范围展示 2、城市距离可视化 3、成果展示 总结  前言         在上一篇博客中基于Java和GDAL实现的GeoJSON数据读取与入库实践,我们详细的