文章目录

  • WKT中几何对象
  • 版本控制函数
  • 几何对象构造函数
  • 几何对象输出函数
  • 几何验证函数
  • 空间参考系统功能函数
  • 几何属性访问函数
  • 几何测量函数
  • 几何图形编辑函数
  • 几何处理函数
  • 仿射变换函数
  • 边界框函数
  • 空间关系函数
  • 叠加分析函数
  • PostGIS创建空间表

在介绍PostGIS中函数之前,先来了解下地理空间联盟OGC(Open GIS Consortium)中的一些标准。
WKT(well-known text)通过文本来描述几何对象。所有的数据类型都以点数据为基础,点坐标的XY值用空格隔开,坐标之间用逗号隔开。例如:POLYGON((0 0,4 0,4 4,0 4,0 0))。WKT 相比WKB更方便人们理解,具有很高的可读性。
WKB(well-known binary)通过序列化的字节对象来描述几何对象。是WKT的二进制表示形式,解决了WKT表达方式冗余的问题。更方便于计算机处理,因此广泛运用于数据的传输与存储。
GML(OpenGIS® Geography Markup Language Encoding Standard):通过XML Schema(XSD)来定义了GML文档的结构.
KML(OpenGIS® KML Encoding Standard):KML 和 GML 在名称上类似,但是功能有很大不同。GML 主要用于地理数据的交换;而 KML 主要用于地理数据的可规化,它不仅包括地理数据的描述,还包括数据的符号化方式、用户视角的控制等信息。
SRID:全称Spatial Reference System Identifier,是指坐标系在OGC标准中的唯一ID。
接下来列举一些常用的函数,POSTGIS全部函数可到 官网查询, 中文网站。

WKT中几何对象

先来了解下WKT中的几种几何对象结构:
POINT(0 0) ——点
LINESTRING(0 0,1 1,1 2) ——线
POLYGON((0 0,4 0,4 4,0 4,0 0)) ——面
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,-1 -2,-2 -2,-2 -1,-1 -1))) ——多面
GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4))) ——几何集合

版本控制函数

PostGIS_Full_Version():获取完整的PostGIS版本和构建配置信息
SELECT PostGIS_Full_Version();

几何对象构造函数

ST_GeomFromText(text WKT[, integer srid]):从WKT构建ST_Geometry对象。如果未提供SRID,则默认为未知(0)。
select ST_GeomFromText(‘POINT(0 0)’,4326) ;
结果:0101000020E610000000000000000000000000000000000000

SELECT ST_GeomFromText(‘LINESTRING(0 0,1 1,2 2)’);
结果:01020000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000040

SELECT ST_GeomFromText(‘POLYGON((0 0,2 0,2 2,0 2,0 0))’);
结果:010300000001000000050000000000000000000000000000000000000000000000000000400000000000000000000000000000004000000000000000400000000000000000000000000000004000000000000000000000000000000000

ST_PointFromText(text WKT[, integer srid]):从WKT构建点对象。如果未提供SRID,则默认为未知(0)。如果几何图形不是WKT点表示,则返回null。如果WKT完全无效,则抛出错误。
select ST_PointFromText(‘POINT(0 0)’,4326) ;
结果:0101000020E610000000000000000000000000000000000000

ST_MakePoint(float x, float y[, float z[, float m]]):创建2D,3D或则4D的点对象
SELECT ST_MakePoint(0, 0);
结果:010100000000000000000000000000000000000000

ST_MakePointM(float x, float y, float m):使用X、Y和M(测量)坐标创建点。
select ST_MakePointM(0,0,1);
结果:010100004000000000000000000000000000000000000000000000F03F

ST_LineFromText(text WKT[, integer srid]):WKT构成线对象
select st_linefromtext(‘LINESTRING(0 0, 1 1,2 2)’,4236)
结果:01020000208C1000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000040

ST_PolygonFromText(text WKT[, integer srid]):WKT构成面对象
SELECT ST_PolygonFromText(‘POLYGON((0 0,2 0,2 2,0 2,0 0))’);
结果:010300000001000000050000000000000000000000000000000000000000000000000000400000000000000000000000000000004000000000000000400000000000000000000000000000004000000000000000000000000000000000

ST_GeomFromEWKT(text EWKT):EWKT构建几何对象
SELECT ST_GeomFromEWKT(‘SRID=4326;POINT(0 0)’);
结果:0101000020E610000000000000000000000000000000000000

ST_GeomFromWKB(bytea geom, integer srid):WKB构建几何对象
SELECT ST_GeomFromWKB(ST_AsBinary(ST_GeomFromText(‘POINT(0 0)’)),4326)
结果:0101000020E610000000000000000000000000000000000000

ST_MakeEnvelope(float xmin, float ymin, float xmax, float ymax[, integer srid=unknown]):从X和Y的最小值和最大值创建矩形。输入值必须在SRID指定的空间参考系中。如果未指定SRID,则使用未知空间参考系(SRID 0)
SELECT ST_AsText(ST_MakeEnvelope(0, 0, 5,5, 4326));
结果:POLYGON((0 0,0 5,5 5,5 0,0 0))

几何对象输出函数

ST_AsText(geometry g1[, integer maxdecimaldigits]):获取几何对象的WT表示,maxdecimaldigits参数可用于限制输出坐标中小数点后的位数(默认为15)
select ST_AsText(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:POINT(0 0)

ST_AsEWKT(geometry g1[, integer maxdecimaldigits]):返回以SRID为前缀的几何体的WKT表示。可选的maxdecimaldigits参数可用于减少输出中使用的浮点后的最大小数位数(默认值为15)
select ST_AsEWKT(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:SRID=4326;POINT(0 0)

ST_AsBinary(geometry g1[, text NDR_or_XDR]):返回几何体的OGC标准(WKB)表示。第一个函数变体默认使用服务器机器端序进行编码。第二个函数变量采用一个文本参数来指定端序编码,要么是小端序(‘NDR’),要么是大端序(‘XDR’)
select ST_AsBinary(‘POINT(0 0)’::geometry);
结果:

**ST_AsGeoJSON(geometry geom[, integer maxdecimaldigits=9[, integer options=8]]):**将几何体作为GeoJSON返回
SELECT ST_AsGeoJSON(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:{“type”:“Point”,“coordinates”:[0,0]}

ST_AsKML(geometry geom[, integer maxdecimaldigits=15[, text nprefix=NULL]]):将几何图形作为KML返回。默认的最大小数位数为15,默认名称空间为无前缀
SELECT ST_AsKML(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:<Point><coordinates>0,0</coordinates></Point>

ST_AsGML([integer version, ]geography geog, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null):将几何图形作为地理标记语言(GML)元素返回。版本参数(如果指定)可以是2或3。如果未指定版本参数,则默认值为2。maxdecimaldigits参数可用于减少输出中使用的最大小数位数(默认值为15)
SELECT ST_AsGML(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:<gml:Point srsName="EPSG:4326"><gml:coordinates>0,0</gml:coordinates></gml:Point>

ST_AsMVTGeom(geometry geom, box2d bounds[, integer extent=4096[, integer buffer=256[, boolean clip_geom=true]]]):将几何体按bounds裁剪后转换为MVT(Mapbox Vector Tile)格式,坐标系通常为3857。
geom: 需要转化的几何对象
bounds:瓦片的矩形边界
extent:是由MVT规范定义的瓦片大小。默认为4096
buffer:是几何剪裁的瓦片坐标空间中的缓冲区大小。默认值为256
clip_geom:用于控制几何体是否按原样剪裁或编码。默认为true。
SELECT ST_AsText(ST_AsMVTGeom(ST_GeomFromText(‘POLYGON ((0 0,5000 0,5000 5000,0 5000,0 0))’),ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),4096, 0, true));
结果:POLYGON((0 4096,0 0,4096 0,4096 4096,0 4096))

ST_AsMVT(anyelement row, text name, integer extent, text geom_name, text feature_id_name):一个聚合函数,返回与瓦片对应的一组行的二进制Mapbox矢量瓦片表示。行必须包含将几何对象。几何图形必须在瓦片坐标空间中,并且根据MVT规范有效。ST_AsMVTGeom可用于将几何图形转换为瓦片坐标。其他行列为要素属性。矢量切片中会应用
row:至少包含一个几何列的行数据.
name:图层的名称。默认值是字符串“Default”
extent:规定的瓦片范围,默认是4096
geom_name:行中几何对象列的名称。默认第一列为几何列
feature_id_name: 行中的要素ID列。如果未设置,第一个名称匹配的(smallint、integer、bigint)类型列将作为FeatureID.其他列作为属性列
SELECT ST_AsMVT(mvtgeom.*) FROM (VALUES (1, ‘one’, ‘POINT(1 1)’::geometry)) AS mvtgeom(id, name, geom);
结果:

ST_AsSVG(geometry geom, integer rel=0, integer maxdecimaldigits=15):将几何图形作为SVG(Scalable Vector Graphics)格式返回。rel:1作为相对移动实现路径数据,默认值(或0)使用绝对移动。maxdecimaldigits:最大小数位数(默认为15)。当rel为0时,点几何图形将呈现为cx/cy,当rel为1时,将呈现为x/y。多点几何图形由逗号(“,”)分隔,GeometryCollection几何图形由分号(“;”)分隔。
SELECT ST_AsSVG(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:cx=“0” cy=“0”

几何验证函数

ST_IsValid(geometry g[, integer flags]):校验图形是否有效。flags:0为OGC模式,1为ESRI模式。正对有些在ESRI中有效的图形在OGC中无效
SELECT ST_IsValid(ST_GeomFromText(‘POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))’)) As bad_poly;
结果:f

ST_IsValidReason(geometry geomA, integer flags):返回图形有效或则图形无效的原因
SELECT ST_IsValidReason(ST_GeomFromText(‘POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))’)) As bad_poly;
结果:Self-intersection[0 0]

ST_MakeValid(geometry input, text params):在不丢失任何输入顶点的情况下将无效图形转为有效。
params:“method=linework|structure keepcollapsed=true|false”。linework为默认,提取所有线,再把线连接形成有效图形。structure为将所有外环连接在一起形成有效图形。keepcollapsed只有在structure时起作用。
SELECT ST_AsText(ST_MakeValid(ST_GeomFromText(‘POLYGON((0 0,2 0,2 2,0 2,0 0),(1 1,3 1,3 3,1 3,1 1))’)));
结果:MULTIPOLYGON(((2 1,2 0,0 0,0 2,1 2,1 1,2 1)),((1 2,1 3,3 3,3 1,2 1,2 2,1 2)))

空间参考系统功能函数

ST_SetSRID(geometry geom, integer srid):设置几何图形的SRID
select ST_SetSRID(ST_Point(0, 0),4326);
结果:0101000020E610000000000000000000000000000000000000

ST_SRID(geometry g1):返回几何对象的SRID
SELECT ST_SRID(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:4326

ST_Transform(geometry geom, text from_proj, integer to_srid):返回坐标转换后的新几何对象
SELECT ST_ASTEXT(ST_Transform(‘SRID=4326;POINT(1 1)’::geometry,3857));
结果:POINT(111319.490793272 111325.142866385)

几何属性访问函数

ST_MemSize(geometry geomA):获取几何对象占用的内存空间,以字节为单位
SELECT ST_MemSize(‘POINT(1 2)’::geometry);
结果:32

GeometryType(geometry geomA):返回几何对象的类型
select GeometryType(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:POINT

ST_GeometryType(geometry g1):返回几何对象的类型。返回的类型字符串前面带ST_
select ST_GeometryType(‘0101000020E610000000000000000000000000000000000000’::geometry);
结果:ST_Point

ST_X(geometry a_point):获取点的X值
ST_Y(geometry a_point):获取点的Y值
ST_Z(geometry a_point):获取点的Z值
ST_M(geometry a_point):获取点的M值
SELECT ST_X(‘POINT(1 2 3 4)’),ST_Y(‘POINT(1 2 3 4)’),ST_Z(‘POINT(1 2 3 4)’),ST_M(‘POINT(1 2 3 4)’);
结果:1 | 2 | 3 | 4

ST_Boundary(geometry geomA):返回此几何体的边界
select ST_AsText(ST_Boundary(‘LINESTRING(0 0,1 1, 2 2)’::geometry));
结果:MULTIPOINT(0 0,2 2)

ST_CoordDim(geometry geomA):获取几何对象的坐标维度
SELECT ST_CoordDim(‘POINT(1 1)’) As d2point,ST_CoordDim(‘POINT(1 1 2)’) As d3point,ST_CoordDim(‘POINTM(1 1 0.5)’) As d2pointm;
结果:2 | 3 | 3

ST_Dimension(geometry g):返回几何图形的拓扑尺寸。0——POINT ,1——LINESTRING ,2——POLYGON
SELECT ST_Dimension(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’),ST_Dimension(‘LINESTRING(-1 0,1 1)’);
结果:2 | 1

ST_NDims(geometry g1):返回几何对象的维度。与ST_CoordDim一样
SELECT ST_NDims(‘POINT(1 1)’) As d2point,ST_NDims(‘POINT(1 1 2)’) As d3point,ST_NDims(‘POINTM(1 1 0.5)’) As d2pointm;
结果:2 | 3 | 3

ST_Zmflag(geometry geomA):返回几何对象ZM值的代码:0=2d, 1=3dm, 2=3dz, 3=4d
SELECT ST_Zmflag(‘POINT(1 1)’),ST_Zmflag(‘POINT(1 1 2)’),ST_Zmflag(‘POINTM(1 1 0.5)’),ST_Zmflag(‘POINT(1 1 2 3)’);
结果:0 | 2 | 1 | 3

ST_Dump(geometry g1):获取几何对象的部分。它返回一组geometry_dump行,每个行包含一个几何体(geom字段)和一个整数数组(路径字段)
SELECT (a.p).path[1],st_astext((a.p).geom) FROM (SELECT ST_Dump(‘MULTIPOINT(0 0,1 1)’) as p) as a;

结果:1  POINT(0 0)
———————————————————2    POINT(1 1)

ST_DumpRings(geometry a_polygon):获取多边形的环
SELECT (a.p).path,st_astext((a.p).geom) FROM (SELECT ST_DumpRings(‘POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))’) as p) as a;

结果:{0}    POLYGON((0 0,4 0,4 4,0 4,0 0))
--------------------------------------------{1} POLYGON((1 1,2 1,2 2,1 2,1 1))

ST_NPoints(geometry g1):返回geometry的节点个数
select ST_NPoints(‘POLYGON((0 0,8 0,8 8,0 8,0 0))’);
结果:5

ST_Points( geometry geom ):返回几何对象的点集合。保留重复点,包括环的起点和终点
select ST_AsText(ST_Points(‘LINESTRING(0 0,1 1, 2 2)’::geometry));
结果:MULTIPOINT(0 0,1 1,2 2)

ST_StartPoint(geometry geomA):获取几何对象的起始点
select ST_AsText(ST_StartPoint(‘LINESTRING(0 0,1 1, 2 2)’::geometry));
结果:POINT(0 0)

ST_EndPoint(geometry g):获取几何对象LINESTING或CIRCULARLINESTRING的最后一个点
select ST_AsText(ST_EndPoint(‘LINESTRING(0 0,1 1, 2 2)’::geometry));
结果:POINT(2 2)

ST_PointN(geometry a_linestring, integer n):返回几何图形中第N个点。负值从LineString的末尾向后计数,因此-1是最后一点
select ST_AsText(ST_PointN(‘LINESTRING(0 0,1 1, 2 2)’::geometry,2));
结果:POINT(1 1)

ST_Envelope(geometry g1):返回几何对象的最小外包矩形((MINX, MINY), (MINX, MAXY), (MAXX, MAXY), (MAXX, MINY), (MINX, MINY)).
select ST_AsText(ST_Envelope(‘LINESTRING(0 0,1 1, 2 2)’::geometry));
结果:POLYGON((0 0,0 2,2 2,2 0,0 0))

ST_NRings(geometry geomA):返回几何对象环的个数
select ST_NRings(‘POLYGON((0 0,8 0,8 8,0 8,0 0),(1 2, 7 2, 7 7,2 7,1 2),(2 3,6 3,6 6,2 6,2 3))’);
结果:3

ST_NumInteriorRings(geometry a_polygon):获取多边形内环个数
select ST_NumInteriorRings(‘POLYGON((0 0,8 0,8 8,0 8,0 0),(1 2, 7 2, 7 7,2 7,1 2),(2 3,6 3,6 6,2 6,2 3))’);
结果:2

ST_ExteriorRing(geometry a_polygon):返回面的外环
select ST_ASText(ST_ExteriorRing(‘POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))’));
结果:LINESTRING(0 0,4 0,4 4,0 4,0 0)

ST_InteriorRingN(geometry a_polygon, integer n):返回面的第N个内环
select ST_ASText(ST_InteriorRingN(‘POLYGON((0 0,8 0,8 8,0 8,0 0),(1 2, 7 2, 7 7,2 7,1 2),(2 3,6 3,6 6,2 6,2 3))’, 1))
结果:LINESTRING(1 2,7 2,7 7,2 7,1 2)

ST_HasArc(geometry geomA):几何对象是否包含弧
SELECT ST_HasArc(ST_Collect(‘LINESTRING(1 2, 3 4, 5 6)’, ‘CIRCULARSTRING(1 1, 2 3, 4 5, 6 7, 5 6)’));
结果:t

ST_IsEmpty(geometry geomA):判断几何对象是否为空
SELECT ST_IsEmpty(‘POLYGON EMPTY’::geometry),ST_IsEmpty(‘LINESTRING(1 1,0 0)’::geometry);
结果:t | f

ST_IsClosed(geometry g):几何对象是否闭合
select ST_IsClosed(‘LINESTRING(1 1,0 0)’),ST_IsClosed(‘LINESTRING(0 0, 0 1, 1 1, 0 0)’);
结果:f | t

ST_IsSimple(geometry geomA):判断几何对象为简单几何,即不包含异常点(比如自相交,自相切)
SELECT ST_IsSimple(‘LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)’), ST_IsSimple(‘LINESTRING(0 0, 0 1, 1 0, 1 1, 0 0)’);
结果:t | f

ST_IsRing(geometry g):判断曲线是否闭合ST_IsClosed并且不自相交ST_IsSimple
SELECT ST_IsRing(‘LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)’), ST_IsRing(‘LINESTRING(0 0, 0 1, 1 0, 1 1, 0 0)’);
结果:t | f

ST_IsCollection(geometry g):判断是否是一个collection类型的几何对象(例如:MULTI*, GEOMETRYCOLLECTION 等)
SELECT ST_IsCollection(‘MULTIPOINT((0 0))’::geometry),ST_IsCollection(‘POINT(0 0)’::geometry);
结果:t | f

ST_NumGeometries(geometry geom):获取集合几何对象中的对象个数
select ST_NumGeometries(‘GEOMETRYCOLLECTION(MULTIPOINT((-2 3),(-2 2)),LINESTRING(5 5 ,10 10),POLYGON((-7 4.2,-7.1 5,-7.1 4.3,-7 4.2)))’);
结果:3

ST_Summary(geometry g):返回几何图形内容的文本摘要。几何类型后方括号中显示的标志具有以下含义:M: 含M值;Z: 含Z值;B: 含边界;G: 是geography;S: 含坐标系
select ST_Summary(‘SRID=4326;POLYGON((0 0,8 0,8 8,0 8,0 0),(1 2, 7 2, 7 7,2 7,1 2))’::geometry);
结果:
Polygon[BS] with 2 rings
ring 0 has 5 points
ring 1 has 5 points

几何测量函数

ST_Area(geography geog[, boolean use_spheroid=true]):返回几何对象的面积
select ST_Area(‘SRID=4527;POLYGON((0 0,8 0,8 8,0 8,0 0))’);
结果:64

ST_Length(geometry a_2dlinestring):返回LineString、MultiLineString、ST_Curve、ST_MultiCurve的长度
select ST_Length(‘LINESTRING(0 1, 1 1,1 0)’);
结果:2

ST_Length2D(geometry a_2dlinestring):返回二维几何体长度
select ST_Length2D(‘LINESTRING(0 1, 1 1,1 0)’);
结果:2

ST_Perimeter(geometry g1)/ST_Perimeter2D(geometry geomA):返回几何对象的周长
SELECT ST_Perimeter(‘POLYGON((0 0,8 0,8 8,0 8,0 0))’::geometry),ST_Perimeter2D(‘POLYGON((0 0,8 0,8 8,0 8,0 0))’::geometry);
结果:32 | 32

ST_Azimuth(geometry origin, geometry target):量测两点构成的方位角,单位弧度。方位角是从正Y轴(几何)或北子午线(地理)参考的正顺时针角:北=0;东=π/2;南=π;西=3π/2
select degrees(ST_Azimuth(ST_Point(0, 0),‘POINT(1 1)’::geometry));
结果:45

ST_Angle(geometry point1, geometry point2, geometry point3[, geometry point4]):计算顺时针角度。计算P1-P2-P3间的角度。当有4个点时,计算P1-P2与P3-P4间的角度
SELECT degrees(ST_Angle(‘POINT(0 0)’, ‘POINT(1 1)’, ‘POINT(0 2)’)),degrees(ST_Angle(‘POINT(0 0)’, ‘POINT(0 1)’, ‘POINT(2 0)’,‘POINT(3 0)’));
结果:90 | 90

ST_Angle(geometry line1, geometry line2):计算由输入线的起点和终点定义的两个矢量S1-E1和S2-E2之间的角度
SELECT degrees(ST_Angle(‘LINESTRING(0 0, 0.3 0.7, 1 1)’,‘LINESTRING(0 0, 0.2 0.5, 1 0)’));
结果:45

ST_Project(geography g1, float distance, float azimuth):使用给定的距离和方位角返回从起点沿测地线投影的点。距离是以米为单位的。支持负值。方位角(也称为航向或方位角)以弧度表示。它是从正北(方位角为零)顺时针测量的。东方位角 π /2(90度);南方为方位角 π (180度);西方位角为3 π /2(270度)。负方位角值和大于2的值 π (360度)。
SELECT ST_AsText(ST_Project(‘POINT(0 0)’::geography, 100000, radians(45.0)));
结果:POINT(0.635231029125537 0.639472334729198)

ST_Distance(geometry g1, geometry g2):返回g1和g2间的最短距离
SELECT ST_Distance(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’);
结果:1

ST_MaxDistance(geometry g1, geometry g2):返回两个几何对象间最大的距离
SELECT ST_MaxDistance(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’);
1.4142135623731

ST_DistanceSphere(geometry geomlonlatA, geometry geomlonlatB[, float8 radius=6371008]):两个经度/纬度点之间的最小距离(单位:米)。椭球体半径默认使用6370986米
SELECT ST_DistanceSphere(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’);
结果:111195.07973463

ST_DistanceSpheroid(geometry geomlonlatA, geometry geomlonlatB, spheroid measurement_spheroid=WGS84):使用指定的地球椭球参数,获取两个经纬度几何间的最小距离
select ST_DistanceSpheroid(‘LINESTRING(0 1, 1 1,1 0)’::geometry,‘POINT(0 0)’::geometry,‘SPHEROID[“WGS 84”,6378137,298.257223563]’);
结果:110574.388557799

ST_ClosestPoint(geometry geom1, geometry geom2):返回geom1上离geom2最近的一个点
SELECT ST_AsText(ST_ClosestPoint(‘LINESTRING(0 1, 1 0)’,‘POINT(0 0)’));
结果:POINT(0.5 0.5)

ST_ShortestLine(geometry geom1, geometry geom2):返回两个几何对象间的最小直线。线从g1到g2
SELECT ST_AsText(ST_ShortestLine(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’));
结果:LINESTRING(0 1,0 0)

ST_LongestLine(geometry g1, geometry g2):返回两个几何对象间的最长直线。线从g1到g2
SELECT ST_AsText(ST_LongestLine(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’));
结果:LINESTRING(1 1,0 0)

ST_MinimumClearance(geometry g):获取几何对像的最小间隙
SELECT ST_MinimumClearance(‘LINESTRING(0 1, 0.5 1,1 0)’);
结果:0.5

ST_MinimumClearanceLine(geometry g):返回跨越几何图形的最小间隙的两点线串
SELECT ST_AsText(ST_MinimumClearanceLine(‘LINESTRING(0 1, 0.5 1,1 0)’));
结果:LINESTRING(0 1,0.5 1)

几何图形编辑函数

ST_AddPoint(geometry linestring, geometry point[, integer position = -1]):将点添加到线中。如果position参数被省略或为-1,则将该点附加到线串的末尾。
SELECT ST_AsEWKT(ST_AddPoint(‘LINESTRING(0 1, 1 1,1 0)’,‘POINT(0 0)’));
结果:LINESTRING(0 1,1 1,1 0,0 0)

ST_RemovePoint(geometry linestring, integer offset):从线串中删除指定位置的点,可用于将闭合环改为开放线
SELECT ST_AsEWKT(ST_RemovePoint(‘LINESTRING(0 1, 1 1,1 0,0 1)’, ST_NPoints(‘LINESTRING(0 1, 1 1,1 0,0 1)’) - 1));
结果:LINESTRING(0 1,1 1,1 0)

ST_SetPoint(geometry linestring, integer zerobasedposition, geometry point):用给定点替换指定位置节点
SELECT ST_AsText(ST_SetPoint(‘LINESTRING(-1 2,-1 3)’, 0, ‘POINT(-1 1)’));
结果:LINESTRING(-1 1,-1 3)

ST_RemoveRepeatedPoints(geometry geom, float8 tolerance):删除重复节点
SELECT ST_AsEWKT(ST_RemoveRepeatedPoints(‘LINESTRING(0 1, 1 1,1 2,1 2)’));
结果:LINESTRING(0 1,1 1,1 2)

ST_ShiftLongitude(geometry geom):将几何对象的每个点/顶点的经度坐标从-180…0移动到180…360
SELECT ST_AsText(ST_ShiftLongitude(‘POINT(-170 10)’::geometry));
结果:POINT(190 10)

ST_FlipCoordinates(geometry geom):返回X轴和Y轴翻转的给定几何图形的版本
SELECT ST_AsEWKT(ST_FlipCoordinates(GeomFromEWKT(‘POINT(0 2)’)));
结果:POINT(2 0)

ST_Reverse(geometry g1):颠倒节点顺序
SELECT ST_AsEWKT(ST_Reverse(‘LINESTRING(0 1, 1 1,1 2)’));
结果:LINESTRING(1 2,1 1,0 1)

ST_Force2D(geometry geomA):将几何体强制为“2维模式”,以便所有输出表示将只有X和Y坐标
SELECT ST_AsEWKT(ST_Force2D(GeomFromEWKT(‘POINT(0 2 1 3)’)));
结果:POINT(0 2)

ST_Segmentize(geometry geom, float max_segment_length):返回线段长度不超过给定值的已修改几何
SELECT ST_AsEWKT(ST_Segmentize(‘LINESTRING(0 1, 0 2,0 3)’::geometry,0.5));
结果:LINESTRING(0 1,0 1.5,0 2,0 2.5,0 3)

几何处理函数

ST_Buffer(geometry g1, float radius_of_buffer[, integer num_seg_quarter_circle]):返回几何对象的生成缓冲区,负距离可能会完全收缩多边形。num_seg_quarter_circle默认为8
select ST_ASTEXT(ST_Buffer(‘POINT(0 0)’,1,2));
结果:POLYGON((1 0,0.707106781186548 -0.707106781186547,0 -1,-0.707106781186546 -0.707106781186549,-1 0,-0.70710678118655 0.707106781186545,0 1,0.707106781186544 0.707106781186551,1 0))

ST_Centroid(geometry g1):返回几何图形的几何中心/质心
SELECT ST_AsText(ST_Centroid(‘MULTIPOINT(-1 0,3 0,1 10)’));
结果:POINT(1 3.33333333333333)

ST_GeometricMedian ( geometry geom[, float8 tolerance = NULL, int max_iter = 10000, boolean fail_if_not_converged = false]):返回多点的几何中值。几何中值是使到输入点的距离之和最小的点
SELECT ST_AsText(ST_GeometricMedian(‘MULTIPOINT(-1 0,3 0,1 10)’));
结果:POINT(1 1.15720559615592)

ST_PointOnSurface(geometry g1):返回几何对象一个内部点
SELECT ST_AsText(ST_PointOnSurface(‘MULTIPOINT(-1 0,3 0,1 10)’::geometry));
结果:POINT(-1 0)

ST_ConcaveHull(geometry param_geom, float param_pctconvex[, boolean param_allow_holes = false]):将集合内的所有几何图形包围起来形成的最小凹几何。param_pctconvex 控制计算外壳线的凹陷度。值为1将生成凸面外壳线。值为0会生成具有最大凹度的外壳线。参数param_allow_holes是否允许有空洞
SELECT ST_AsText(ST_ConcaveHull(‘MULTIPOINT(1 0,2 0,3 0,4 0,0 0,0 1,0 2,0 3,0 4)’,0.1));
结果:POLYGON((1.40545673785261 2.59454326214739,1.40545673785261 2.33178332956832,1.76763919654007 1.60741841219341,2.08011039217332 1.91988960782668,4 0,0 0,0 4,1.40545673785261 2.59454326214739))

ST_ConvexHull(geometry geomA):在集合中包含所有几何图形的最小凸几何
SELECT ST_AsText(ST_ConvexHull(‘MULTIPOINT(1 0,2 0,3 0,4 0,0 0,0 1,0 2,0 3,0 4)’::geometry));
结果:POLYGON((0 0,0 4,4 0,0 0))

ST_MinimumBoundingCircle(geometry geomA, integer num_segs_per_qt_circ=48):返回包含几何对象的最小外接圆
SELECT ST_AsText(ST_MinimumBoundingCircle(‘MULTIPOINT(1 0,2 0,3 0,4 0,0 0,0 1,0 2,0 3,0 4)’));
结果:

ST_OrientedEnvelope( geometry geom ):返回包含几何对象的最小矩形
SELECT ST_AsText(ST_OrientedEnvelope(‘MULTIPOINT(1 0,2 0,3 0,4 0,0 0,0 1,0 2,0 3,0 4)’));
结果:POLYGON((0 4,-2 2,2 -2,4 0,0 4))

ST_GeneratePoints( geometry g , integer npoints [, integer seed] ):在输入区域内生成指定数量的随机点
SELECT ST_AsText(ST_GeneratePoints(‘POLYGON((-1 -1,1 -1, 1 1,-1 1,-1 -1))’, 2));
结果:MULTIPOINT(-0.862727744376965 -0.682973723563341,-0.706839197973571 0.972228156376842)

ST_LineMerge(geometry amultilinestring):返回由缝合在一起的多重线串形成的线条
SELECT ST_AsText(ST_LineMerge(‘MULTILINESTRING((-2 -2,0 0,1 1,2 2),(1 1,2 2))’));
结果:LINESTRING(-2 -2,0 0,1 1,2 2,1 1)

ST_Simplify(geometry geomA, float tolerance):使用Douglas-Peucker算法简化几何
SELECT ST_Npoints(ST_Buffer(‘POINT(0 0)’,1,8)),ST_NPoints(ST_Simplify(ST_Buffer(‘POINT(0 0)’,1,8),0.1));
结果:33 | 9

仿射变换函数

ST_Rotate(geometry geomA, float rotRadians[, float x0, float y0]):绕原点逆时针旋转几何图形,旋转原点可以指定X,Y坐标。如果未指定原点,则几何图形将围绕点(0 0)旋转。
SELECT ST_AsEWKT(ST_Rotate(‘LINESTRING (0 0 , 1 1)’, pi()/2)); --逆时针旋转90度
结果:LINESTRING(0 0,-1 1)

ST_RotateX(geometry geomA, float rotRadians):围绕X轴旋转几何图形
SELECT ST_AsEWKT(ST_RotateX(‘LINESTRING (0 0 , 1 1)’, pi()/2)); --围绕X轴旋转90
结果:LINESTRING(0 0,1 0)

ST_Scale(geometry geomA, float XFactor, float YFactor[, float ZFactor]): 通过将输入对象的坐标乘以一个系数来对对象进行缩放(缩小和放大)
SELECT ST_AsEWKT(ST_Scale(‘LINESTRING (0 0 , 1 1)’, 0.5,0.5));
结果:LINESTRING(0 0,0.5 0.5)

ST_Translate(geometry g1, float deltax, float deltay[, float deltaz]):返回坐标转换为平移x、y、z单位后的新几何图形。单位基于此几何图形的空间参考(SRID)中定义的单位
SELECT ST_AsEWKT(ST_Translate(‘LINESTRING (0 0 , 1 1)’, 0.5,0.5));
结果:LINESTRING(0.5 0.5,1.5 1.5)

ST_TransScale(geometry geomA, float deltaX, float deltaY, float XFactor, float YFactor):使用X,Y偏移几何图形后根据XFactor,YFactor来缩放
SELECT ST_AsEWKT(ST_TransScale(‘LINESTRING (0 0 , 1 1)’, 0.5,0.5,2,2));
结果:LINESTRING(1 1,3 3)

ST_Affine(geometry geomA, float a, float b, float d, float e, float xoff, float yoff):对几何对象进行二维仿射变化,可以在一步内完成平移、旋转、缩放等操作
顶点变化如下:x’ = ax + by + xoff
y’ = dx + ey + yoff
z’ = z
select ST_ASTEXT(ST_Affine(‘LINESTRING(0 0 , 1 1)’,1,0,0,1,10,1));
结果:LINESTRING(10 1,11 2)

边界框函数

ST_MakeBox2D(geometry pointLowLeft, geometry pointUpRight):创建由两个点几何图形定义的框(box),通常用于范围查询
select ST_MakeBox2D(ST_Point(0, 0),ST_Point(3,3));
结果:BOX(0 0,3 3)

ST_XMax(box3d aGeomorBox2DorBox3D):返回框(box)或则几何图形的最大X值
select ST_XMax(‘BOX(0 0,2 2)’::box2d),ST_XMax(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry);
结果:2 | 2

ST_YMin(box3d aGeomorBox2DorBox3D):返回框(box)或则几何图形的最小Y值
select ST_YMin(‘BOX(0 0,2 2)’::box2d),ST_YMin(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry);
结果:0 | 0

ST_Expand(geometry BoxGeom, float units_to_expand):扩大框(box)或则几何对象
select ST_Expand(‘BOX(0 0,2 2)’::box2d,2),ST_AsEWKT(ST_Expand(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry,2));
结果:BOX(-2 -2,4 4) | POLYGON((-2 -2,-2 4,4 4,4 -2,-2 -2))

Box2D(geometry geom):返回几何对象的二维边框(box)
SELECT Box2D(‘LINESTRING (0 0, 1 1,2 2)’::geometry);
结果:BOX(0 0,2 2)

ST_Extent(geometry set geomfield):聚合函数,它返回一组几何图形的边界框(box2d)
SELECT ST_Extent(geom) from te;

ST_EstimatedExtent([text schema_name, ]text table_name, text geocolumn_name):将空间表的估计范围作为Box2d。这通常比ST_Extent计算表的确切范围快得多
SELECT ST_EstimatedExtent(‘te’, ‘geom’);

空间关系函数

ST_Relate(geometry geomA, geometry geomB):返回两个输入几何图形之间的空间关系的DE-9IM(维度扩展的9交模型)矩阵字符串
SELECT ST_Relate(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0 0,1 1)’::geometry);
结果:102F01FF2

ST_RelateMatch(text intersectionMatrix, text intersectionMatrixPattern):intersectionMatrix(维度扩展的9交模型)值是否满足 intersectionMatrixPattern(空间关系)
SELECT ST_RelateMatch(‘102F01FF2’, ‘TTT***FFT’);
结果:t

ST_Relate(geometry geomA, geometry geomB, text intersectionMatrixPattern):返回两个几何对象是都满足intersectionMatrixPattern(交叉矩阵关系)
SELECT ST_Relate(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0 0,1 1)’::geometry,‘102F01FF2’);
结果:t

ST_Contains(geometry geomA, geometry geomB):A是否包含B。当且仅当B的点不在A的外部且B的内部至少有一个点在A的内部时,A包含B
SELECT ST_Contains(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_Contains(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0 0,1 1)’::geometry);
结果:f | t

ST_ContainsProperly(geometry geomA, geometry geomB):A是否完全包含B。B与A的内部相交,但不与A边界或外部相交。对应九关系的[T**FFFF]
SELECT ST_ContainsProperly(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_ContainsProperly(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0.5 0.5,1 1)’::geometry);
结果:f | t

ST_Within(geometry A, geometry B):A是否在B内部。A的点都不在B的外部,并且A和B至少有一个内点相同。ST_Within(A,B) = ST_Contains(B,A)
SELECT ST_Within(‘POINT(0 0)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry),ST_Within(‘LINESTRING(0 0,1 1)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry);
结果:f | t

ST_Covers(geometry geomA, geometry geomB):A是否覆盖B。B中没有点在A的外部
SELECT ST_Covers(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_Covers(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(-1 0,1 1)’::geometry);
结果:t | f

ST_CoveredBy(geometry geomA, geometry geomB):A是否被B覆盖。A中没有点在B的外部
SELECT ST_CoveredBy(‘POINT(0 0)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry),ST_CoveredBy(‘LINESTRING(-1 0,1 1)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry);
结果:t | f

ST_Crosses(geometry g1, geometry g2):几何图形有一些但不是所有的内部点是共同的。几何图形内部的交点不能是空集,并且其维度必须小于两个输入几何图形的最大尺寸。
SELECT ST_Crosses(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_Crosses(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(-1 0,1 1)’::geometry);
结果:f | t

ST_Overlaps(geometry A, geometry B):A和B是否在空间上重叠。两个相同类型的几何图形至少有一个点不被另一个几何图形共享。
SELECT ST_Overlaps(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(-1 0,1 1)’),ST_Overlaps(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POLYGON((-1 -1,0 1,1 1,1 -1,-1 -1))’);
结果:f | t

ST_Disjoint( geometry A , geometry B ):两个几何图形不相交(它们没有共同点)
SELECT ST_Disjoint(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(-1 -1)’::geometry),ST_Disjoint(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0 0,1 1)’::geometry);
结果:t | f

ST_Equals(geometry A, geometry B):如果两个几何图形是否包含相同的点集。在空间上相等
SELECT ST_Equals(‘LINESTRING(0 0,1 1)’, ‘LINESTRING(0 0,1 1)’),ST_Equals(‘LINESTRING(1 1,0 0)’, ‘LINESTRING(0 0,1 1)’::geometry);
结果:t | t

ST_OrderingEquals(geometry A, geometry B):两个几何是否图形相等且坐标顺序相同。两个几何图形表示相同的几何图形并且具有相同方向顺序的点
SELECT ST_OrderingEquals(‘LINESTRING(0 0,1 1)’, ‘LINESTRING(0 0,1 1)’),ST_OrderingEquals(‘LINESTRING(1 1,0 0)’, ‘LINESTRING(0 0,1 1)’::geometry);
结果:t | f

ST_Intersects( geometry geomA , geometry geomB ):两个几何图形是否相交
SELECT ST_Intersects(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_Intersects(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(0 0,1 1)’::geometry);
结果:t | t

ST_Touches(geometry A, geometry B):两个几何图形至少有一个共同点,但其内部不相交。当两个输入参数都为点时,由于点没有边界,所以为Fasle
SELECT ST_Touches(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘POINT(0 0)’::geometry),ST_Touches(‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry, ‘LINESTRING(-1 11,1 1)’::geometry);
结果:t | f

ST_DWithin(geometry g1, geometry g2, double precision distance_of_srid):两个几何是否在给定距离内。距离以几何图形的空间参考系定义的单位指定
SELECT ST_DWithin(‘POINT(-1 0)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry,1),ST_DWithin(‘LINESTRING(-2 -2,-1 -1)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry,1);
结果: t | f

ST_DFullyWithin(geometry g1, geometry g2, double precision distance):两个几何是否完全在给定距离内。两个几何中的点完全在彼此的指定距离内。
SELECT ST_DFullyWithin(‘POINT(-1 0)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry,2),ST_DFullyWithin(‘POINT(1 1)’::geometry,‘POLYGON((0 0,0 2,2 2,2 0,0 0))’::geometry,2);
结果:f | t

ST_PointInsideCircle(geometry a_point, float center_x, float center_y, float radius):测试点几何图形是否位于由圆心和半径定义的圆内。几何是点并且位于指定圆心和半径的圆内
SELECT ST_PointInsideCircle(ST_Point(0,2.9), 0, 0, 3),ST_PointInsideCircle(ST_Point(0,3), 0, 0, 3);
结果: t | f

ST_LineCrossingDirection(geometry linestringA, geometry linestringB):返回两条线之间的交叉行为
SELECT ST_LineCrossingDirection(‘LINESTRING(0 0,1 1)’, ‘LINESTRING(0 0,1 1)’),ST_LineCrossingDirection(‘LINESTRING(0 1,1 0)’, ‘LINESTRING(0 0,1 1)’::geometry);
结果:0 | 1

叠加分析函数

ST_ClipByBox2D(geometry geom, box2d box):使用2D box剪裁几何图形
select ST_ASText(ST_ClipByBox2D(‘LINESTRING(-1 -1,1 1)’, ST_MakeEnvelope(0, 0, 5,5)));
结果:LINESTRING(0 0,1 1)

ST_Difference(geometry geomA, geometry geomB[, float8 gridSize = -1]):返回几何A中不与几何B相交的部分
select ST_ASText(ST_Difference(‘LINESTRING(-1 -1,1 1)’, ST_MakeEnvelope(0, 0, 5,5)));
结果:LINESTRING(-1 -1,0 0)

ST_Intersection( geometry geomA , geometry geomB [, float8 gridSize = -1]):返回几何图形A和几何图形B相交部分
select ST_ASText(ST_Intersection(‘LINESTRING(-1 -1,1 1)’, ST_MakeEnvelope(0, 0, 5,5)));
结果:LINESTRING(0 0,1 1)

ST_MemUnion(geometry set geomfield):合并输入几何图形。结果与 ST_Union一样,但是使用更少的内存和更长的时间。
WITH testdata AS
(SELECT unnest(ARRAY[‘POLYGON ((-1 -1, 2 -1, 2 2, -1 2, -1 -1))’::geometry,
‘POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))’::geometry]) AS geom)
select ST_ASText(ST_MemUnion(geom)) from testdata;
结果:POLYGON((2 0,2 -1,-1 -1,-1 2,0 2,0 4,4 4,4 0,2 0))

ST_Union(geometry g1, geometry g2)/ST_Union(geometry[] g1_array):合并输入几何体,生成没有重叠的合并后几何体
select ST_ASText(ST_Union(‘POLYGON ((-1 -1, 2 -1, 2 2, -1 2, -1 -1))’::geometry,‘POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))’::geometry));
结果:POLYGON((2 0,2 -1,-1 -1,-1 2,0 2,0 4,4 4,4 0,2 0))

ST_UnaryUnion(geometry geom[, float8 gridSize = -1]):用于非聚合、单输入变量合并
select ST_ASText(ST_UnaryUnion(‘MULTIPOLYGON(((-1 -1, 2 -1, 2 2, -1 2, -1 -1)),((0 0, 4 0, 4 4, 0 4, 0 0)))’));
结果:POLYGON((2 0,2 -1,-1 -1,-1 2,0 2,0 4,4 4,4 0,2 0))

ST_Split(geometry input, geometry blade):用blade分割input
SELECT ST_AsText(ST_Split(‘LINESTRING(-1 -1,1 1)’,‘POINT(0 0)’));
结果:GEOMETRYCOLLECTION(LINESTRING(-1 -1,0 0),LINESTRING(0 0,1 1))

ST_SymDifference(geometry geomA, geometry geomB[, float8 gridSize = -1]):返回几何图形A和B不相交部分
select ST_ASText(ST_SymDifference(‘POLYGON ((-1 -1, 2 -1, 2 2, -1 2, -1 -1))’,‘POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))’));
结果:MULTIPOLYGON(((2 0,2 -1,-1 -1,-1 2,0 2,0 0,2 0)),((2 0,2 2,0 2,0 4,4 4,4 0,2 0)))

ST_Subdivide(geometry geom[, integer max_vertices=256[, float8 gridSize = -1]]):用直线将几何划分成每个最多max_vertices个顶点的对象
SELECT ST_AsText(ST_SubDivide(‘POLYGON((0 0,0 1,0 2,0 3,0 4,0 5,0 6,6 6,6 0,0 0))’,5));
结果:

POLYGON((0 0,0 3,6 3,6 0,0 0))
————————————————————————————————
POLYGON((0 3,0 6,6 6,6 3,0 3))

PostGIS创建空间表

drop table if exists spatialtest;
CREATE TABLE spatialtest(id serial,name text,geo geometry(Point,4326));
--插入记录
insert into spatialtest(name,geo) VALUES('APoint',ST_GeomFromText('POINT(0 0)',4326));
--查找几何列对应的SRID
SELECT Find_SRID('public', 'spatialtest', 'geo'); --4326

敲成玉磬穿林响,忽作玻璃碎地声。 --杨万里《稚子弄冰》

PostGIS中常用函数整理记录相关推荐

  1. python常用函数的用法_python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...

  2. oracle有哪些常用函数,Oracle常用函数整理

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 之前已经给小伙伴们整理了SQL Server和Mysql的常用函数,还没有看的可以戳下 ...

  3. oracle中各种函数,oracle中常用函数大全

    1.数值型常用函数 函数 返回值 样例 显示 ceil(n) 大于或等于数值n的最小整数 select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数 s ...

  4. mysql数据库 常用函数_《MySQL数据库》常用函数整理

    原标题:<MySQL数据库>常用函数整理 以下内容,是我整理出来的比较常用的字符串函数,数值函数,日期函数. 第一类:字符串函数 1.conv(n,from_base,to_base):对 ...

  5. pandas 常用函数整理

    pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...

  6. 帝国cms cj1.php,帝国cms源码中常用函数所在位置

    帝国cms源码中常用函数所在位置 发布时间:2014-03-28 15:00:26   作者:佚名   我要评论 帝国cms常用函数所在位置归总,使用帝国cms的朋友可以收藏下 帝国cms常用函数所在 ...

  7. 二级计算机的office用到哪些函数,计算机二级MS office excel中所用函数整理

    <计算机二级MS office excel中所用函数整理>由会员分享,可在线阅读,更多相关<计算机二级MS office excel中所用函数整理(11页珍藏版)>请在人人文库 ...

  8. Oracle常用函数汇总记录

    Oracle常用函数汇总记录 一.SUBSTR 截取函数 用法:substr(字符串,截取开始位置,截取长度) //返回截取的字, 字符串的起始位置为1,截取时包含起始位置字符 1.SUBSTR( & ...

  9. DL4J的矩阵处理模块ND4J的常用函数整理

    ND4J矩阵变换的常用函数整理 由本人阅读nd4j源码整理,nd4j是dl4j为了矩阵运算整出来的一套工具.对应python里的numpy,但是并没有numpy那么普及,不过至少使用dl4j搭建神经网 ...

最新文章

  1. js能关闭HTML页面,javascript可以关闭吗
  2. 大物实验总结模板_高考化学实验题答题模板归类总结!
  3. Java Calendar hashCode()方法与示例
  4. 解决自建ca认证后浏览器警告
  5. 数据中台交付专家告诉你,数据架构的分层怎样更加合理?
  6. 网络KPI异常检测之时序分解算法
  7. poj 3258 River Hopscotch 二分答案
  8. Aspose word pdf 相互转换
  9. 2020最新版《神经网络与深度学习》中文版更新完毕,pdf开放下载
  10. JDK源码阅读计划(Day12) BitSet
  11. ruby + cucumber环境搭建
  12. 实验6 熟悉Hive的基本操作
  13. 软件项目管理 第六章 成本计划
  14. 关于加拿大IC认证变更为ISED认证亚马逊卖家需要注意那些问题?
  15. python 执行shell_从python执行Shell脚本与变量
  16. Java常用类:Data()的用法,获得当前日期和时间对象date 定义对象Date date1 = new Date(36000000);获得包含的日期和时间 比较date和date1是否相等
  17. 项目开发中ARM单片机芯片分类及选型
  18. 原生js实现轮播图的思路、代码及知识点!
  19. R语言图形编辑器GUI开发环境RStudio安装(Windows操作系统下、RStudio开发环境安装)
  20. 17、前端开发:HTML知识补充——表格标签

热门文章

  1. 尾号55555手机号120万拍出?手机号跟域名谁更有价值?
  2. 一度智信:电商网店冷门商品分享
  3. TJA1040国产替代DP1040 5V供电,±40V接口耐压,1Mbps 高速CAN总线收发器
  4. 03.HTML CSS
  5. 使用Web Speech API实现语音文本互转
  6. 数据结构-day2-栈(先进后出)和队列(先进先出)-C/C++
  7. 交互式shell(Interactive Shells)
  8. c语言 数据结构 双向循环链表逆序
  9. 解决Permission to xxx denied to xxx问题
  10. 实践出真知-scrapy集成ip代理(以阿布云为例)