目录

postgis扩展

WKT定义几何对象格式

常用函数

几何对象关系函数

几何对象处理函数

几何对象存取函数

几何对象构造函数

测试

Reference


postgis扩展

进入postgresql数据库,增加postgis扩展
//添加空间数据库的相关插件
CREATE EXTENSION postgis;//用于创建空间数据库的插件,仅支持矢量数据扩展
CREATE EXTENSION address_standardizer;//使空间数据库支持地址标准化
CREATE EXTENSION ogr_fdw;//使空间数据库支持不同数据库之间的跨库操作
CREATE EXTENSION pgrouting;//使空间数据库支持网络分析
CREATE EXTENSION pointcloud;//使空间数据库支持点云数据存储
CREATE EXTENSION pointcloud_postgis;//使空间数据库支持点云数据操作
CREATE EXTENSION postgis_raster;//使空间数据库支持栅格数据扩展
CREATE EXTENSION postgis_sfcgal;//使空间数据库支持2D和3D的数据操作
CREATE EXTENSION fuzzystrmatch;//使空间数据库支持地理编码的模糊匹配
CREATE EXTENSION postgis_tiger_geocoder;//使空间数据库支持地理编码
CREATE EXTENSION postgis_topology;//使空间数据库支持拓扑检查
//移除相关插件
DROP EXTENSION 插件名称;
例:DROP EXTENSION postgis;
//更新插件
ALTER EXTENSION 插件名称 update to "版本号";
例:ALTER EXTENSION postgis update to "3.0.1";

安装

postgres:postgresql-9.4.0-1-windows-x64.exe_免费高速下载|百度网盘-分享无限制

postgres空间扩展:postgis-bundle-pg94x64-setup-2.1.5-2.exe_免费高速下载|百度网盘-分享无限制

WKT定义几何对象格式

POINT(0 0) ——点
LINESTRING(0 0,1 1,1 2) ——线
POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) ——面
MULTIPOINT(0 0,1 2) ——多点
MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) ——多线
MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) ——多面
GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4))) ——几何集合

常用函数

添加几何字段 AddGeometryColumn(模式(public),表名,几何字段名,srid(如4490),type ,2维/3维 )
删除几何字段 DropGeometryColumn(模式(public),表名 , 几何字段名)
更改空间列坐标系 UpdateGeometrySRID(模式(public),表名 , 几何字段名,目标srid(如4549));

几何对象关系函数

获取两个几何对象间的距离 ST_Distance(geometry, geometry)
如果两个几何对象间距离在给定值范围内,则返回true ST_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)

几何对象处理函数

获取几何对象的中心 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, geometry B)
返回两个几何对象的合并结果 ST_Union(geometry, geometry)
返回一系列几何对象的合并结果 ST_Union(geometry set)
用较少的内存和较长的时间完成合并操作,结果和ST_Union相同 ST_MemUnion(geometry set)

几何对象存取函数

获取几何对象的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)

查看srid
st_srid(geom)更改srid
update  table set geom =  st_setsrid(geom, 4548) ;
SELECT updategeometrysrid('table', 'column', 4326);几何对象构造     srid 可以省略
st_GeomFromText('POINT(117.029774783967 39.2252910679476)',4326);
st_GeomFromJson('{"type":"Point","coordinates":[117.02925861421,39.2270537797677]}',4326);获取数据
ST_Asgeojson(geometry)
ST_AsText(geometry)坐标系转换
ST_Transform(geometry,4326)        geom字段必须指定srid判断A是否包含B  全部包含  内边界相交为false
ST_Contains(geometry A, geometry B)判断两个几何对象是否相交   外边界相交为true
ST_Intersects(geometry, geometry)获取两个几何对象相交的部分
ST_Intersection(geometry, geometry)面积 st_area(geometry)
周长 ST_perimeter(geometry)
获取点的X坐标 ST_X(geometry)
获取点的Y坐标 ST_Y(geometry)
获取点的Z坐标 ST_Z(geometry)范围查询   必须是投影坐标系
ST_DWithin(geometry,geometry,radius)      geom无位置区分    半径单位为米两个几何对象的距离        两个几何对象的坐标系必须一致
ST_distancesphere (geometry,geometry)  大地坐标系
ST_distance (geometry,geometry)        投影坐标系
geometry   <->  geometry       不区分坐标系合并几何对象
ST_Union(geometry, geometry)
st_union(array_agg(geom))
st_union(st_accum(geom))构造几何数组
ST_Accum(geometry set)几何操作符:
A范围=B范围 A = B
A范围覆盖B范围或A范围在B范围左侧 A &<> B
A范围在B范围左侧 A <<>> B
A范围覆盖B范围或A范围在B范围下方 A &<| B A范围覆盖B范围或A范围在B范围上方 A |&> B
A范围在B范围下方 A <<| B A范围在B范围上方 A |>> B
A=B A ~= B
A范围被B范围包含 A @ B
A范围包含B范围 A ~ B
A范围覆盖B范围 A && B

几何对象构造函数

参考语义:

Text:WKT
WKB:WKB
Geom:Geometry
M:Multi
Bd:BuildArea
Coll:Collection

ST_GeomFromText(text,[])
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)

测试

创建一张测试表

CREATE TABLE test2(id int4,name varchar(255)
)
增加geometry类型字段
SELECT AddGeometryColumn ('public','test2', 'the_geom', 4326, 'POINT', 2);

或者

    CREATE TABLE 表名 (id SERIAL PRIMARY KEY,name VARCHAR,the_geom geometry(表名,srid-4326),the_geom_2 geometry(表名,srid-4490));

删除空间列:

SELECT DropGeometryColumn('public', 'test2', 'the_geom');

查询空间列the_geom的坐标系(srid):

SELECT Find_SRID('public', 'point', 'the_geom');

更改空间列the_geom_2坐标系

SELECT UpdateGeometrySRID('public','point','the_geom_2',4549);

插入数据

INSERT INTO test1 (id, the_geom, name) VALUES (1,ST_GeomFromText('POINT(-0.1257 51.508)',4326),'London, England');
INSERT INTO test1 (id, the_geom, name) VALUES (2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'London, Ontario');
INSERT INTO test1 (id, the_geom, name) VALUES (3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');

在指定范围内

select count(*) from poi5 a,poi5 b where st_within(b.the_geom,st_buffer(a.the_geom,0.001));
select count(*) from poi5 a,poi5 b where st_dwithin(b.the_geom,a.the_geom,0.001);

获取几何对象的中心

SELECT astext(ST_Centroid(the_geom)) FROM country;

面积量测

SELECT st_area(the_geom) FROM china where name='丰台区' ;

长度量测

SELECT st_length(the_geom) FROM china WHERE name='海淀区';

Reference

Chapter 2. PostGIS Installation

Chapter 8. PostGIS Reference

Postgresql、Postgis环境和一些关于空间列操作_Shanks7529的博客-CSDN博客

【postgis】添加geometry类型字段_BIG*BOSS的博客-CSDN博客

PostGIS 操作geometry方法 - 贝尔格里尔斯 - 博客园

postgresql空间操作相关推荐

  1. postgresql基本命令操作

    postgresql基本命令操作: 登陆数据库: [postgres@localhost ~]$ psql -Utestwjw -h 127.0.0.1 -dpostgres -p 36985 Pas ...

  2. PostgreSQL 空间st_contains,st_within空间包含搜索优化 - 降IO和降CPU(bound box)

    标签 PostgreSQL , st_contains , st_within , 空间包含 , 空间bound box , GiST索引 , 空间索引结构 , IO放大 , BOUND BOX放大 ...

  3. postgresql 数据库操作点记

    postgresql 数据库操作点记 普通查询 查询结果拼接 查询所有字段 排除某些字段 处理时间 查询结果去除null值 安装扩展 自动填充uuid 数据库插入guid函数 清空表格数据 分组查询的 ...

  4. 《Cortex-M0权威指南》之体系结构---栈空间操作

    <Cortex-M0权威指南>之体系结构---栈空间操作 转载请注明来源:cuixiaolei的技术博客 栈空间作为一种存储器使用机制,是"先入先出"的结构,在系统空间 ...

  5. freecplus框架-PostgreSQL数据库操作

    文章目录 一.源代码说明 二.概述 三.connection类 四.sqlstatement类 五.程序流程 1.无结果集SQL的程序的流程 2.有结果集SQL的程序的流程 六.示例程序 1.创建超女 ...

  6. GeoTools——JTS空间操作

    目录 一.引言 二.代码操作 1.服务端 2.返回数据 3.客户端 三.总结 一.引言 使用geotools主要是对数据进行操作,这里的操作包括空间关系判断和空间关系运算.这里的空间关系判断常用的是否 ...

  7. postgresql数据库操作

    postgresql数据库操作 1.数据库基本操作 创建数据库 查看所有数据库 进入数据库 删除数据库 退出数据库 2.数据库修改操作 修改数据库名称 1.数据库基本操作 创建数据库 create d ...

  8. Oracle 临时表空间操作

    文章目录 Oracle 临时表空间操作 查看默认临时表空间名称 查询表空间剩余字节大小 -- 临时表空间 查询表空间数据文件路径 -- 临时表空间 为临时表空间增加数据文件 -- TEMP 参考 Or ...

  9. GeoTools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)

    参考原文:GeoTools中的空间关系和空间操作 一.GeoTools包含的空间关系和空间操作: 空间关系(Geometry Relationships): 常见的空间关系(Geometry Rela ...

最新文章

  1. 【转】ExtJS DateField 日期控件Format格式化
  2. ext的ajax写法,ExtJs的Ajax示例
  3. Yii::$app的作用
  4. Jupyter notebook快捷操作
  5. 使用分析函数进行行列转换
  6. [Array]217.Contains Duplicate
  7. mysqld install mysql default_MySQL安装默认配置
  8. 六石管理学:谈管理的前提,要有一点的胸量
  9. mac的obs录制不到全屏
  10. matlab仿真高尔顿正态分布源码,《正态分布》教学设计
  11. ckeditor拖拽添加html,CKEditor插入HTML
  12. ansible生成巡检报告
  13. Java如何实现浅克隆与深克隆_Java浅谈克隆clone
  14. 片上总线Wishbone 学习(十)总线周期之单写读操作
  15. cad断点快捷键_史上最好的CAD常用快捷键及使用方法集
  16. CATIA V5 R24 2014安装教程
  17. CAD完美转ArcGIS的操作方法技巧
  18. Legacy octal literals are not allowed in strict mode
  19. 孪生素数猜想,不值一提
  20. 怎样进计算机安全模式,如何进入电脑安全模式

热门文章

  1. 海伦公式(根据三角形三条边求面积)
  2. 博客插入GIF动图技巧
  3. android TextView 分散对齐(两端对齐)
  4. antd 给input设置值_React中input框设置value报错解析
  5. 计算机中丢失IDAP,certify_ldap.dll
  6. layui:图片上传
  7. YOLOV5通道剪枝【附代码】
  8. 私域运营成功的三大基本要素
  9. 明源云客微信公众号 矩阵 开盘淘宝抢房 的一些技巧
  10. STM32输入捕获实验