Postgis常用函数

1,基本操作函数

AddGeometryColumn(<schema_name>, <table_name>,<column_name>, <srid>, <type>, <dimension>)

给一个已存在属性数据表增加一个几何字段(geomtrycolumn)。schema_name 指表的模式的名字,srid 必须是一个整数指对应于 SPATIAL_REF_SYS 表,type必须是一个大写的字符串,用来描述几何类型,例如:‘POLYGON‘ 或者 ‘MULTILINESTRING‘。

DropGeometryColumn(<schema_name>, <table_name>,<column_name>)

从一个空间数据表中删除一个几何字段。

ST_SetSRID(geometry, integer)

给一个几何对象(geometry)设置一个整型的SRID,对于在一个范围内的查询非常有用。

2. 几何空间数据关系函数

ST_Distance(geometry, geometry)

返回两个几何对象的距离(笛卡儿距离),不使用索引。

ST_DWithid(geometry, geometry, float)

如果一个几何对象(geometry)在另一个几何对象描述的距离(float)内,返回TRUE。如果有索引,会用到索引。

ST_Equals(geometry, geometry)

如果两个空间对象相等,则返回TRUE。用这个函数比用“=”更好,例如:

equals(‘LINESTRING(0 0, 10 10)‘,‘LINESTRING(0 0, 5 5, 10 10)‘) 返回 TRUE。

ST_Disjoint(geometry, geometry)

如果两个对象不相连,则返回TRUE。不要使用GeometryCollection作为参数。

ST_Intersects(geometry, geometry)

判断两个几何空间数据是否相交,如果相交返回true,不要使用GeometryCollection作为参数。

Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 ))

不使用索引可以用_ST_Intersects.

ST_Touches(geometry, geometry)

如果两个几何空间对象存在接触,则返回TRUE。不要使用GeometryCollection作为参数。

a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersectionb) not empty

不使用索引可以用_ST_Touches.

ST_Crosses(geometry, geometry)

如果两个几何空间对象存在交叉,则返回TRUE。不要使用GeometryCollection作为参数。

不使用索引可以用_ST_Crosses.

ST_Within(geometry A, geometry B)

如果几何空间对象A存在空间对象B中,则返回TRUE,不要使用GeometryCollection作为参数。

不使用索引可以用_ST_Within

ST_Overlaps(geometry, geometry)

如果两个几何空间数据存在交迭,则返回 TRUE,不要使用GeometryCollection作为参数。

不使用索引可以用_ST_Overlaps.

ST_Contains(geometry A, geometry B)

如果几何空间对象A包含空间对象B,则返回 TRUE,不要使用GeometryCollection作为参数。

这个函数类似于ST_Within(geometry B, geometryA)

不使用索引可以用_ST_Contains.

ST_Covers(geometry A, geometry B)

如果几何空间对象B中的所有点都在空间对象A中,则返回 TRUE。

不要使用GeometryCollection作为参数。

不使用索引可以用_ST_Covers.

ST_CoveredBy(geometry A, geometry B)

如果几何空间对象A中的所有点都在空间对象B中,则返回 TRUE。

3,Geometry Processing Functions

几何空间数据处理函数

ST_Centroid(geometry)

返回质心点,就是根据几何空间数据,活动该几何空间数据的中心点,返回一个空间点数据.

ST_Area(geometry)

如果几何空间数据为多边形,或者多多边形,则返回空间数据的外围(返回类型double precision) ;

ST_Length(geometry)

这个曲线在其相关的空间参考长度(返回类型double precision) ;

ST_PointOnSurface(geometry)

一定在几何空间线数据上的点,返回一个数据点

ST_Buffer(geometry, double, [integer])

buffer操作一个很有用函数,

这个函数的第一个参数是要操作的空间几何数据,第二个参数长度(距离),第三个参数为一个整型,

这个函数返回一个空间数据类型,以当前第一个参数空间几何数据为参考点,返回小于等于距离的空间

几何数据点,最后由这些点组成一个多边形空间数据,最后一个参数表示

在组成一个1/4圆的有几个点分隔。也就是说如果最好一个参数为8那么这个最后组成的多边形就是32边

的多边形,如果不指定这个参数,系统默认的是8

注意:第二个参数,距离它的单位为空间数据单位(度),在运算时需要进行单位换算,最后转换成度

,单位的换算关系如下:

1英里= 63360 米

1米=1/1852 海里

1海里= 1/60度

如果要进行具体的运算,需要进行一下单位换算,比如要求一个500米的范围,那么应该是

500*1/1852*1/60(度)

ST_Envelope(geometry)

这个函数可以返回mbr(空间最小外包矩形),传入参数可以是point line polygon。

ST_extent(geometry set)

这个函数可以对一个空间数据集进行操作,返回一个最小包含矩形(mbr).

如:SELECT EXTENT(GEOM) FROMGEOMTABLE GROUP BY CATEGORY

ST_Difference(geometry A, geometry B)

返回一个几何空间数据A不同于空间数据B的几何空间数据类型,不要使用GeometryCollection作为参数。

也就是说,如果A为一个line,B也为一个line,那么他们返回的类型就是B把A分割的多线。

如:

select ST_AsEWKT(ST_Difference(geomfromText(‘LINESTRING(1 1,2 3,3 4,31)‘),geomfromText(‘LINESTRING(2 0,2 2,5 2,3 1)‘)))

返回的MULTILINESTRING((1 1,2 3,3 4,32),(3 2,3 1))

如果是A和B都是一个POLYGON多边形,那么返回的就是多多边形,如果相交,那么返回的就是B把A分割,并且不再B中的多多边形。

select ST_AsEWKT(ST_Difference(geomfromText(‘POLYGON((1 1,2 3,3 4,3 1,11))‘),geomfromText(‘POLYGON((2 0,2 2,5 2,1 3,2 0))‘)))

ST_Union(geometry, geometry)

返回一个合并的几何空间数据,将两个几何空间数据合并为一个几何空间数据,或者GeometryCollection,不要使用GeometryCollection作为参数。

ST_LineMerge(geometry)

合并为线

4 ,Geometry Accessors

ST_AsText(geometry)

将几何空间数据,转换成容易理解的空间数据文本格式,

例如:

(0,0 0,1 1,1 1,0 0,0)

转换后应该是这样的结果 POLYGON(0 0,0 1,1 1,1 0,0 0)

ST_SRID(geometry)

返回当前几何空间数据的SRID值

ST_IsClosed(geometry)

判断几何空间数据是否是闭合,就是判断起始点和终点坐标是相同的,如果是相同的返回true,否则返回false.

ST_IsRing(geometry)

这个函数参数的对象是line,判断起始点和终点坐标是否相同,

如果闭合(这个曲线除了起始点和终点相同外,没有其他相交点)怎返回true,否则false,

ST_NumPoints(geometry)

返回几何空间数据lineString上的第一条线上点的个数。

GeometryType(geometry)

判断几何空间数据的类型。

例如

select GeometryType(geomfromText(‘MULTILINESTRING((1 1,2 3,3 4,3 1,2 1,1 1),(12,2 3,4 5))‘))

返回的类型为 MULTILINESTRING。

关于每个polygon过大,致使程序处理超级慢的问题解决:

用geometry ST_Scale(geometry geomA, float XFactor, float YFactor);函数,对原始geometry切割,插入到新的数据表中,这样就变成了对小polygon的处理

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 18:52:45

Postgis常用函数的相关文章

PostGis常用函数中文介绍

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

postgis常用函数介绍(一)

概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,postgres的postgis以及mySQL的mysql gis等等,在本文,给大家介绍的是有关postgis的一些常用函数的意思以及使用. 说明: 本文中所使用postgres的版本为9.4.0,你可从我的百度网盘获取相关的安装包,安装包地址如下: postgres:http://pan.baidu.com/s/1o69WORK postgres空间扩展:http://pan.baidu.com/s/1c0fPfpe

Data Frame的常用函数

1.DataFrame的常用函数: (1)np.abs(frame) 绝对值, (2)apply function, lambda f= lambda x: x.max()-x.min(),frame.apply(f); frame.apply(f,axis = 1) f(x), def f(x): return Series([x.min(),x.max()], index=['min','max']),frame.apply(f)(3) applymap format f= lambda x

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

MySQL学习笔记(三)——计算字段及常用函数

拼接字段-Concat()函数        将值连接在一起构成单个值.注意:大多数DBMS使用+或者||来实现拼接,mysql则使用Concat()函数来实现. 去空格函数-Trim函数        Trim去掉串左右两边的空格,RTrim去掉串右边的空格,LTrim去掉左边的空格. 使用别名-AS        我们希望查出的新列能有个简介明了的列名,可以用AS来赋予别名. 执行算术运算(+,-,*,/) 大多数sql实现支持以下类型的函数: 1.用于处理文本串(如删除或填充值,转换值为大

162个php常用函数基础用法(个人整理)

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整 echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余 ? 1 2 3 4 $x = 5.7; $y = 1.3; // 两个浮点数,x>y 浮点余数 $r = fmod($x, $y); // $r

sql server常用函数、常用语句

一.常用函数 1.字符串函数 : charindex(':','abc:123')    --寻找一个字符在一段字符串中起始的位置 len('zhangsan')   --获取一段字符串的长度 left('Ly,君子之耀',2) --从一段字符串左边返回指定长度的字符 right(char_expr,int_expr)  --返回字符串右边int_expr个字符 substring(expression,start,length) --截取字符串 datalength(Char_expr)  -

常用函数

字符串函数: concat ('xiao','qun'); =====>xiaoqun insert('woshixiaozou',10,3,'qun'); =====> woshixiaoqun select lower('XIAOQUN'),upper('xiaoqun'); =====> xiaoqun XIAOQUN select left('xiaoqunwoshi',7),right('xiaoqunwoshi',5); =====>xiaoqun woshi sele

js常用函数和常用技巧

学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Ajax请求 jquery ajax函数 我自己封装了一个ajax的函数,代码如下: var Ajax = function(url, type success, error) { $.ajax({ url: url, type: type, dataType: 'json', timeout: 100