1.PostGIS中的几何类型

1.1 WKB和WKT

OGC 全称是开放地理空间信息联盟(Open Geospatial Consortium) 定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text)。

在SQL语句中,使用WKT格式定义几何对象。

几何类型 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)))

1.2 EWKT和EWKB

   EWKT和EWKB相比OGC WKT和WKB格式主要的扩展有3DZ、3DM、4D坐标和内嵌空间参考支持。

几何类型 EWKT 格式
3D 点 POINT(0 0 0)  -- XYZ
内嵌空间参考的点 SRID=32632;POINT(0 0) -- XY with SRID
带M值的点 POINTM(0 0 0) -- XYM
带M值的3D点 POINT(0 0 0 0) -- XYZM
内嵌空间参考的带M值的多点 SRID=4326;MULTIPOINTM(0 0 0,1 2 1)  -- XYM with SRID
3D 线 LINESTRING(0 0 0,1 1 0,1 2 1)
3D 面 POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))
3D 多线 MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))
3D 多边形集合 MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))
几何图形集合 GEOMETRYCOLLECTIONM( POINTM(2 3 9), LINESTRINGM(2 3 4, 3 4 5) )
曲线集合 MULTICURVE( (0 0, 5 5), CIRCULARSTRING(4 0, 4 4, 8 4) )
多面体面 POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)), ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )
三角形 TRIANGLE ((0 0, 0 9, 9 0, 0 0))
三角形集合 TIN( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )

1.3 Canonical

Canonical格式是16进制编码的几何对象,直接用SQL语句查询出来的就是这种格式。

1.4 SQL-MM

SQL-MM格式定义了一些插值曲线,这些插值曲线和EWKT有点类似,也支持3DZ、3DM、4D坐标,但是不支持嵌入空间参考。

几何类型 SQL-MM
插值圆弧 CIRCULARSTRING(0 0, 1 1, 1 0)
插值复合曲线 COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))
曲线多边形 CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))
多曲线 MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))
多曲面 MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11)))

2.PostGIS中的常用函数

2.1 几何对象管理函数

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

2.2 几何对象关系函数

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

2.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) 获取两个几何对象相交的部分
ST_Shift_Longitude(geometry) 将经度小于0的值加360使所有经度值在0-360间
ST_SymDifference(geometry A, geometry B) 获取两个几何对象不相交的部分(A、B可互换)
ST_Difference(geometry A, geometry B) 从A去除和B相交的部分后返回
ST_Union(geometry, geometry) 返回两个几何对象的合并结果
ST_Union(geometry set) 返回一系列几何对象的合并结果
ST_MemUnion(geometry set) 用较少的内存和较长的时间完成合并操作

2.4 几何对象存取函数

函数 说明
ST_AsText(geometry) 获取几何对象的WKT描述
ST_AsBinary(geometry) 获取几何对象的WKB描述
ST_Dimension(geometry) 获取几何对象的维数
ST_Envelope(geometry) 获取几何对象的边界范围
ST_IsEmpty(geometry) 判断几何对象是否为空
ST_IsSimple(geometry) 判断几何对象是否不包含特殊点(比如自相交)
ST_IsClosed(geometry) 判断几何对象是否闭合
ST_IsRing(geometry) 判断曲线是否闭合并且不包含特殊点
ST_NumGeometries(geometry) 获取多几何对象中的对象个数
ST_GeometryN(geometry,int) 获取多几何对象中第N个对象
ST_NumPoints(geometry) 获取几何对象中的点个数
ST_PointN(geometry,integer) 获取几何对象的第N个点
ST_ExteriorRing(geometry) 获取多边形的外边缘
ST_NumInteriorRings(geometry) 获取多边形内边界个数
ST_InteriorRingN(geometry,integer) 获取多边形的第N个内边界
ST_EndPoint(geometry) 获取线的终点
ST_StartPoint(geometry) 获取线的起始点
ST_GeometryType(geometry) 获取几何对象的类型
ST_X(geometry) 获取点的X坐标
ST_Y(geometry) 获取点的Y坐标
ST_Z(geometry) 获取点的Z坐标
ST_M(geometry) 获取点的M值

2.5 几何对象构造函数

函数 说明
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)  

3. PostGIS扩展函数

3.1 管理函数

函数 说明
DropGeometryTable([], ) 删除一个空间表
UpdateGeometrySRID([], , , ) 更新空间表的空间参考
update_geometry_stats([, ]) 更新空间表的统计信息

3.2 几何操作符

函数 说明
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范围

3.3 几何量测函数

函数 说明
ST_Area(geometry) 量测面积
ST_distance_sphere(point, point) 根据经纬度点计算在地球曲面上的距离
ST_distance_spheroid(point, point, spheroid) 类似上,使用指定的地球椭球参数
ST_length2d(geometry) 量测2D对象长度
ST_length3d(geometry) 量测3D对象长度
ST_length_spheroid(geometry,spheroid) 根据经纬度对象计算在地球曲面上的长度
ST_distance(geometry, geometry) 量测两个对象间距离
ST_max_distance(linestring,linestring) 量测两条线之间的最大距离
ST_perimeter2d(geometry) 量测2D对象的周长
ST_perimeter3d(geometry) 量测3D对象的周长
ST_azimuth(geometry, geometry) 量测两点构成的方位角,单位弧度

3.4 几何对象输出

函数 说明
ST_AsBinary(geometry,{‘NDR’|’XDR’}) Binary
ST_AsEWKT(geometry) EWKT
ST_AsEWKB(geometry, {‘NDR’|’XDR’}) EWKB
ST_AsHEXEWKB(geometry, {‘NDR’|’XDR’}) Canonical
ST_AsSVG(geometry, [rel], [precision]) SVG
ST_AsGML([version], geometry, [precision]) GML
ST_AsKML([version], geometry, [precision]) KML
ST_AsGeoJson([version], geometry, [precision], [options]) GeoJson

3.5 几何对象创建

函数 说明
ST_GeomFromEWKB(bytea)  
ST_MakePoint(, , [], [])  
ST_MakePointM(, , )  
ST_MakeBox2D(, )  
ST_MakeBox3D(, )  
ST_MakeLine(geometry set)  
ST_MakeLine(geometry, geometry)  
ST_LineFromMultiPoint(multipoint)  
ST_MakePolygon(linestring, [linestring[]])  
ST_BuildArea(geometry)  
ST_Polygonize(geometry set)  
ST_Collect(geometry set)  
ST_Collect(geometry, geometry)  
ST_Dump(geometry)  
ST_DumpRings(geometry)  

3.6 几何对象编辑

函数 说明
ST_AddBBOX(geometry) 给几何对象添加一个边界
ST_DropBBOX(geometry) 删除几何对象的边界
ST_AddPoint(linestring, point, []) 添加点
ST_RemovePoint(linestring, offset) 删除点
ST_SetPoint(linestring, N, point) 设置点
ST_Force_collection(geometry) 几何对象类型转换
ST_Force_2d(geometry) 几何对象类型转换
ST_Force_3d(geometry) 几何对象类型转换
ST_Force_4d(geometry) 几何对象类型转换
ST_Force_3dz(geometry) 几何对象类型转换
ST_Force_3dm(geometry) 几何对象类型转换
ST_Multi(geometry)  
ST_Transform(geometry,integer) 将几何对象转化到指定空间参考
ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8) 对3D几何对象作仿射变化
ST_Affine(geometry, float8, float8, float8, float8, float8, float8) 对2D几何对象作仿射变化
ST_Translate(geometry, float8, float8, float8) 对几何对象作偏移
ST_Scale(geometry, float8, float8, float8) 对几何对象作缩放
ST_RotateZ(geometry, float8) 对3D几何对象作旋转
ST_RotateX(geometry, float8) 对3D几何对象作旋转
ST_RotateY(geometry, float8) 对3D几何对象作旋转
ST_TransScale(geometry, float8, float8, float8, float8) 对2D对象作偏移和缩放
ST_Reverse(geometry) 反转
ST_ForceRHR(geometry) 转化到右手定则
ST_Segmentize(geometry, maxlength) 分段
ST_LineMerge(geometry) 合并

PostGIS几何类型及常用函数相关推荐

  1. mysql month函数值类型_MySQL常用函数(分类别整理)

    MySQL常用函数(分类别整理) 2021-01-30 一.数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最 ...

  2. PostGIS几何类型操作符基本函数整理

    目录 一.几何类型 1.点(point) 2.线(line) 3.线段(lseg) 4.矩形(box) 5.路径(path) 6.多边形(polygon) 7.圆(circle) 示例: 二.几何操作 ...

  3. hive 复合类型_hive 常用函数整理 9.复合类型操作

    1. map类型构建: map 语法: map (key1, value1, key2, value2, -) 说明:根据输入的key和value对构建map类型 举例: hive> Creat ...

  4. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()

    Python序列类型常用函数练习 这里使用代码示例,练习使用序列类型的常用函数,包括: enumerate() reversed() sorted() zip() 直接看python代码 #enume ...

  5. PostGIS之路--AddGeometryColumn函数--添加一个几何类型字段

    1.AddGeometryColumn 添加一个几何类型字段到已经存在的可用表中,默认情况下使用类型修饰符定义约束.该i函数实现版本较早,支持3D但不能删除z,也支持添加圆和曲面. 函数: text ...

  6. PostGIS中常用函数整理记录

    文章目录 WKT中几何对象 版本控制函数 几何对象构造函数 几何对象输出函数 几何验证函数 空间参考系统功能函数 几何属性访问函数 几何测量函数 几何图形编辑函数 几何处理函数 仿射变换函数 边界框函 ...

  7. (转)postgis常用函数介绍(一)

    http://blog.csdn.net/gisshixisheng/article/details/47701237 概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,po ...

  8. PostGIS中的常用函数

    网上看到的最全最详细的PostGIS空间函数整理,搬运过来方便以后查看 PostGreSQL(五)PostGIS-常用函数 - huiyii - 博客园 (cnblogs.com)https://ww ...

  9. Postgis常用函数

    1,基本操作函数 AddGeometryColumn(<schema_name>, <table_name>,<column_name>, <srid> ...

最新文章

  1. 张亚勤:领导者的3种能力
  2. Java 锁机制 synchronized
  3. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...
  4. 2018蓝桥杯省赛---java---A---10(付账问题)
  5. 一个从源代码里提取中文字符串的java类
  6. ipv4到ipv6的过渡
  7. 计算机人文研究生专业,西安科技大学,艺术、人文、材料、计算机、通信等专业调剂信息...
  8. Java:月份的中英文转换
  9. Exchange 2007中批量修改用户邮箱配额
  10. 数据中心建筑设计及功能区布局的注意事项
  11. 神经网络学习笔记1——BP神经网络原理到编程实现(matlab,python)
  12. 流程图绘制工具 yEd
  13. 【优化算法】粒子群优化灰狼算法【含Matlab源码 006期】
  14. 因融资失败倒闭 五分钟倒在黎明前五分钟
  15. UI设计师具备四大维度能力剖析
  16. 腾讯前端常考面试题汇总
  17. 【如何处理信息收集时子域名爆破泛解析的问题】
  18. PS Suite Studio Android 调试方法
  19. linux下mysql5.7初始密码查看及忘记密码重置
  20. Python图片自动缩放到指定大小(不拉伸不改变精度)

热门文章

  1. 单片机c语言ad8035,基于QN8035芯片的无线数据接收器设计.doc
  2. 地理数据下载网站汇总
  3. 我的CPG插件 (什么是CPG,就是跟号称全球唯一C++编写的魔镜是一样的格式的)
  4. 小象学院python量化金融代码_机器学习_小象学院课件与案例代码
  5. (三)单片机按键检测
  6. UVM:同步通信元件
  7. ListView中插广告栏兼DoubleClick For Publishers (DFP) Banner Ads demo
  8. Springboot 整合微信小程序 城市服务实名信息校验
  9. 理工科题库创建与Office Word数据交换笔记
  10. tkinter中text属性_tkinter属性(总结)