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-23 19:50:14

Postgis常用函数的相关文章

prototype.js常用函数和用法

函数名  解释  举例  Element.toggle  交替隐藏或显示  Element.toggle(''div1'',''div2'')  Element.hide  隐藏  Element.hide(''div1'',''div2'')  Element.show 显示  Element.show(''div1'',''div2'')  Element.remove  删除  Element.remove(''div1'',''div2'')  Element.getHeight  取得

asp+XMLHTTP组件做采集常用函数收集

asp+|xml|采集|函数 asp+XMLHTTP组件做采集常用函数其中的html代码处理函数很管用,写得相当漂亮 <%'=================================================='函数名:GetHttpPage'作 用:获取网页源码'参 数:HttpUrl ------网页地址'==================================================Function GetHttpPage(HttpUrl)If IsNul

PHP第八课 字符串拆分常用函数

课程概要: 通过这节课能够对字符串进行基本的操作. 字符串知识点: 1.字符串的处理介绍 2.常用的字符串输出函数 3.常用的字符串格式化函数 4.字符串比较函数 5.正则表达式在字符串中的应用 6.与per1兼用的正则表达式 1.pathinfo();//返回域名的path信息 2.parse_url(); 3.parse_str();//用来拆分参数用的 pathinfo(); <?php $str="http://blog.csdn.net/junzaivip"; $arr

JavaScript常用函数列表

JavaScript常用函数列表,方便自己查询. click()   对象.click()   使对象被点击.     closed   对象.closed   对象窗口是否已关闭true/false     clearTimeout(对象)   清除已设置的setTimeout对象     clearInterval(对象)   清除已设置的setInterval对象     confirm("提示信息")   弹出确认框,确定返回true取消返回false     cursor:样

PHP常用函数小全

  纪录了PHP的一些常用函数 usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_until() 函数延迟代码执行直到指定的时间. time_nanosleep() 函数延迟代码执行若干秒和纳秒. sleep() 函数延迟代码执行若干秒. show_source() 函数对文件进行语法高亮显示. strip_whitespace() 函数返回已删除 PHP

ODBC API常用函数诠释

odbc|函数 ODBC API常用函数诠释记得kony曾经在我的这个坛子上转过一个帖子,解释使用ODBC数据源来连接数据库进行数据库操作速度慢的原因,同时那个帖子也提出了提高ODBC数据源连接数据库进行数据库操作速度的两个办法,一个是利用Visiual Basic中的RDO组件,一个就是直接调用odbc api函数进行相关数据库操作,应答应过这里的弟弟妹妹们写点关于ODBC API函数方面的东东,所以只能赶鸭子上架了:      以下为ODBC API的常用十四个函数,先列出在PowerBui

自已常用的 Asp.Net常用函数

asp.net|函数 发部一个自已常用的 Asp.Net常用函数库,包括如下常用函数: 把普通字符转换成网页标签 网页标签转换成空白 WinForm 和 WebForm 字符格式转换 计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度 截取用户输入长度的文本,并再文本后加'...' [中文算两个长度,英文算一个长度] 用于防止SQL注入式攻击检测 去掉文本里的网页标签代码 转换SQL语句插入操作或还原取出文本时可能出现的关键标点符号"'" 新建一个空文件夹 新建一个空文件 删

Asp.NET常用函数 (VB.net)

asp.net|函数 Asp.NET常用函数 (新手必读!)Ucase(string) 将字符串转换为大写. Val(string) 将代表数字的字符串转换为数值型态,若字符串中含有非数字的内容则会将其去除后,合并为一数字. Weekday(date) 取的参数中的日期是一个星期的第几天,星期天为1.星期一为2.星期二为3 依此类推. WeekDayName(number) 依接收的参数取得星期的名称,可接收的参数为1 到7,星期天为1.星期一为2.星期二为3 依此类推. Split(expre

简介DB2常用函数与Oracle比较

本文详细介绍DB2常用函数与Oracle比较 1.类型转化函数:decimal, double, Integer, smallint,real,Hex(arg), date, time,timestamp,char, varchar 常用举例: --转化为字符串类型 Oracle: select to_char(15.5000) from dual; DB2: select char(15.5000) from sysibm.sysdummy1 --转化为日期时间 Oracle: select