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)

将几何空间数据。转换成easy理解的空间数据文本格式。

比如:

(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的处理

Postgis经常使用函数的更多相关文章

  1. PostgreSQL+PostGIS的使用 函数清单

    一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...

  2. postgis经常使用函数介绍(一)

    概述: 在进行地理信息系统开发的过程中,经常使用的空间数据库有esri的sde,postgres的postgis以及mySQL的mysql gis等等,在本文.给大家介绍的是有关postgis的一些经 ...

  3. postgis常用的函数

    常见函数:http://postgis.net/docs/reference.html ST_GeometryType(geometry)    ——    返回几何图形的类型 ST_NDims(ge ...

  4. PostGis常用函数中文介绍

    记录常用PostGis常用函数: 1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ...

  5. PostGIS 常用函数中文介绍说明

    1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geom ...

  6. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据

    前言 最近事情很多,各种你想不到的事情--such as singing and dancing--再加上最近又研究docker上瘾,所以geotrellis看上去似乎没有关注,其实我一直在脑中思考着 ...

  7. 你真的会用PostGIS中的buffer缓冲吗?

    buffer - 图形缓冲区分析,GIS中最基本的空间分析之一. 实现buffer的工具有很多种,例如前端的truf.js.服务端的ArcGISserver.桌面端的ArcMap.数据库端的PosrG ...

  8. 几种导入osm(openstreetmap)数据的方法

    一osm2pgsql+postgresql+postgis osm2pgsql­——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的 ...

  9. 坐标转换,EPSG:4326转换成高德坐标教程

    这里先给大家介绍几个坐标系: 1.WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系.2.GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标 ...

随机推荐

  1. 在Swift中定义属于自己的运算符

    precedencegroup ChainingPrecedence { associativity: left higherThan: TernaryPrecedence } infix opera ...

  2. 【java】查重类的实现

    import java.util.Vector; public class ElementCheck { // 重复优先 static Vector<Integer> CheckSameE ...

  3. 自动交互脚本之expect使用记录

    之前一直没怎么用这个命令,意外用了一下,还不错,那这个是干嘛的呢 我们或多或少会远程登录其他服务器,需要执行某项任务,通常需要手动接入,输入密码啊,等等 那我们如何有效的自动执行呢,expect可以解 ...

  4. SQL GROUP BY 和 ORDER BY 区别

    order by 是按表中某字段排列表中数据group by 是按某些字段分类. 例如按 1.按年龄排序表中的记录select * from users order by age 2.按年龄分类表中数 ...

  5. 让xamarin的Entry绑定时,支持Nullable类型

    xamarin.forms默认情况下,如果属性是double?类型,绑定到Entry上,是无法实现双向绑定的, 可以自定义Converter实现双向绑定 public class NullableCo ...

  6. 一键分享到QQ空间、QQ好友、新浪微博、微信代码

    通过qq空间.qq聊天.新浪微博和微信二维码分享平台提供的接口,实现把网页中对应的图片.标题.描述的信息参数用javascript获取后传进接口中,实现一键分享. 使用到的接口(测试时需要登录,网址和 ...

  7. 笔试算法题(08):输出倒数第K个节点

    出题:输入一个单向链表,要求输出链表中倒数第K个节点 分析:利用等差指针,指针A先行K步,然后指针B从链表头与A同步前进,当A到达链表尾时B指向的节点就是倒数第K个节点: 解题: struct Nod ...

  8. centos6 磁盘与文件系统管理

    一.磁盘管理 磁盘构成 1.圆形磁盘 2.磁盘读取头 3.机械手臂 4.主轴马达 运作原理 数据存储在具有磁性物质的圆形磁盘上,读写操作主要是通过机械手臂上的磁盘读取头来达成,实际运作时,主轴马达让磁 ...

  9. PHP:Mysql判断KEY是否存在 如果存在走修改 如果不存在走添加

    文章来源:http://www.cnblogs.com/hello-tl/p/7738113.html 0.PHP代码 <?php /** * POST 传参 * * 例子 添加修改 使用同一个 ...

  10. FFmpeg加水印

    ffmpeg中文水印乱码两种原因 1.字符编码格式原因,中文必须是utf8编码格式的(我遇到的问题,在vs2013上写的中文,已做编码格式转码,放到centos7.2上编译运行也会出现中文乱码的问题, ...