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. 针对windowsserver 创建iis站点访问出错的解决方案(HTTP 错误 500.19 - Internal Server Error)

    错误如下:   服务器错误 Internet信息服务 7.0 错误摘要HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详 ...

  2. day24-1 元类

    目录 元类 类的组成 内置函数 exec() class关键字创建类原理 自定义元类控制类的创建 自定义元类控制类实例化 自定义元类后对象属性查找顺序 元类 在python中一切皆对象,name我们用 ...

  3. Spring全局异常捕获

    package org.xxx.ac.zpk.exception; import java.io.IOException; import javax.servlet.http.HttpServletR ...

  4. B4. Concurrent JVM 锁机制(synchronized)

    [概述] JVM 通过 synchronized 关键字提供锁,用于在线程同步中保证线程安全. [synchronized 实现原理] synchronized 可以用于代码块或者方法中,产生同步代码 ...

  5. filezilla server FTP 安装报错 "could not load TLS network. Aborting start of administration interface"

    filezilla server FTP 安装报错   "could not load TLS network. Aborting start of administration inter ...

  6. 【PS切图】前端工程师必备,但又无需精通的一项技能。

    前端主要从事一些代码开发工作,PS使用是前端工程师必备,但又无需精通的一项技能. 前端切图四大面板:在“窗口”菜单下开启 1,信息(手动开启)2,字符(手动开启)3,历史记录(手动开启)4,图层(默认 ...

  7. JZOJ5776. 【NOIP2008模拟】小x游世界树

    题目:[NOIP2008模拟]小x游世界树: 题目的附加题解给的很清楚,这里只给一个代码: #include<iostream> #include<cstdio> #inclu ...

  8. BZOJ 3326 [SCOI2013]数数 (数位DP)

    洛谷传送门 题目: Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制$B$ 确定一个数数的区间$[L, R]$ 对于$[L, R] $间的每一个数, ...

  9. action类中属性驱动和模型驱动的区别

    1.Struts2的属性驱动 在Action类中,属性××通过get××()和set××()方法,把参数在整个生命周期内进行传递,这就是属性驱动 代码如下: package org.abu.csdn. ...

  10. vuex相关(actions和mutation的异曲同工)

    vuex说明: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 包含的内容: state: ...