1 ST_StartPoint()
LineString的起始点
2 ST_EndPoint()
LineString的终点
3 ST_Transform()
变换几何的坐标
4 ST_GeoHash()
产生geohash值
5 ST_LongFromGeoHash()
从geohash值返回经度
6 ST_LatFromGeoHash()
从geohash值返回纬度
7 ST_GeomFromGeoJSON()
从GeoJSON对象生成几何
8 Polygon()
从LineString参数构造多边形
9 ST_PointN()
从LineString返回第N个点
10 MultiLineString()
从LineString值构造MultiLineString
11 LineString()
从Point值构造LineString
12 MultiPoint()
从Point值构造MultiPoint
13 MultiPolygon()
从Polygon值构造MultiPolygon
14 ST_GeomFromWKB(), ST_GeometryFromWKB()
从WKB返回几何
15 ST_GeomCollFromWKB(), ST_GeometryCollectionFromWKB()
从WKB返回几何集合
16 ST_LineFromWKB(), ST_LineStringFromWKB()
从WKB构造LineString
17 ST_MLineFromWKB(), ST_MultiLineStringFromWKB()
从WKB构造MultiLineString
18 ST_MPointFromWKB(), ST_MultiPointFromWKB()
从WKB构造MultiPoint
19 ST_MPolyFromWKB(), ST_MultiPolygonFromWKB()
从WKB构造MultiPolygon
20 ST_PointFromWKB()
从WKB构造点
21 ST_PolyFromWKB(), ST_PolygonFromWKB()
从WKB构造多边形
22 ST_GeomFromText(), ST_GeometryFromText()
从WKT返回几何
23 ST_GeomCollFromText(),ST_GeometryCollectionFromText(),ST_GeomCollFromTxt()
从WKT返回几何集合
24 ST_PointFromText()
从WKT构建点
25 ST_LineFromText(), ST_LineStringFromText()
从WKT构造LineString
26 ST_MLineFromText(), ST_MultiLineStringFromText()
从WKT构造MultiLineString
27 ST_MPointFromText(), ST_MultiPointFromText()
从WKT构造MultiPoint
28 ST_MPolyFromText(), ST_MultiPolygonFromText()
从WKT构造MultiPolygon
29 ST_PolyFromText(), ST_PolygonFromText()
从WKT构造多边形
30 GeomCollection()
从几何构造几何集合
31 GeometryCollection()
从几何构造几何集合
32 ST_GeometryN()
从几何集合中返回第N个几何
33 ST_AsGeoJSON()
从几何体生成GeoJSON对象
34 ST_AsBinary(), ST_AsWKB()
从内部几何格式转换为WKB
35 ST_AsText(), ST_AsWKT()
从内部几何格式转换为WKT
36 Point()
从坐标构造点
37 ST_Length()
返回LineString的长度
38 ST_NumPoints()
返回LineString中的点数
39 ST_X()
返回Point的X坐标
40 ST_Y()
返回Point的Y坐标
41 ST_Longitude()
返回Point的经度
42 ST_Latitude()
返回Point的纬度
43 ST_InteriorRingN()
返回Polygon的第N个内环
44 ST_ExteriorRing()
返回Polygon的外环
45 ST_Area()
返回Polygon或MultiPolygon区域
46 ST_Union()
返回点集两个几何的并集
47 ST_SymDifference()
返回点设置两个几何的对称差异
48 ST_Intersection()
返回点设置两个几何的交集
49 ST_NumInteriorRing(), ST_NumInteriorRings()
返回多边形内圈的数量
50 ST_Envelope()
返回几何的MBR
51 ST_SRID()
返回几何的空间参考系统ID
52 ST_NumGeometries()
返回几何集合中的几何数量
53 ST_GeometryType()
返回几何类型的名称
54 ST_ConvexHull()
返回几何体的凸包
55 ST_Simplify()
返回简化几何
56 ST_Buffer()
返回距离几何体的给定距离内的点的几何
57 ST_Validate()
返回验证的几何体
58 ST_Centroid()
返回质心作为一个点
59 ST_Dimension()
几何尺寸
60 ST_IsClosed()
几何是否封闭且简单
61 ST_IsSimple()
几何是否简单
62 ST_IsValid()
几何是否有效
63 ST_PointFromGeoHash()
将geohash值转换为POINT值
64 ST_SwapXY()
交换X / Y坐标的返回参数
65 ST_MakeEnvelope()
两点左右的矩形
66 MBREquals()
两个几何的MBR是否相等
67 MBRIntersects()
两个几何的MBR是否相交
68 MBROverlaps()
两个几何的MBR是否重叠
69 ST_Difference()
两个几何的返回点集差异
70 MBRDisjoint()
两个几何形状的MBR是否不相交
71 ST_Distance_Sphere()
两个几何形状之间的最小地球距离
72 MBRTouches()
两种几何形状的MBR是否接触
73 ST_Buffer_Strategy()
为ST_Buffer()生成策略选项
74 MBRCoveredBy()
一个MBR是否被另一个MBR覆盖
75 MBRCovers()
一个MBR是否涵盖另一个MBR
76 MBRContains()
一个几何的MBR是否包含另一个几何的MBR
77 MBRWithin()
一个几何的MBR是否在另一个几何的MBR内
78 ST_Contains()
一个几何是否包含另一个
79 ST_Touches()
一个几何是否接触另一个
80 ST_Disjoint()
一个几何是否与另一个几何脱节
81 ST_Equals()
一个几何是否与另一个几何相等
82 ST_Crosses()
一个几何是否与另一个几何相交
83 ST_Intersects()
一个几何是否与另一个相交
84 ST_Overlaps()
一个几何是否与另一个重叠
85 ST_Within()
一个几何是否在另一个之内
86 ST_Distance()
一个几何与另一个几何的距离
87 ST_IsEmpty()
占位符功能
OGC标准函数
管理函数:
添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考(在通过一个范围做空间查询时常用) ST_SetSRID(geometry, integer)
几何对象关系函数:
获取两个几何对象间的距离 ST_Distance(geometry, geometry) 如果两个几何对象间距离在给定值范围内,则返回TRUE ST_DWithin(geometry, geometry, float) 判断两个几何对象是否相等 (比如LINESTRING(0 0, 2 2)和LINESTRING(0 0, 1 1, 2 2)是相同的几何对象) ST_Equals(geometry, geometry) 判断两个几何对象是否分离 ST_Disjoint(geometry, geometry) 判断两个几何对象是否相交 ST_Intersects(geometry, geometry) 判断两个几何对象的边缘是否接触 ST_Touches(geometry, geometry) 判断两个几何对象是否互相穿过 ST_Crosses(geometry, geometry) 判断A是否被B包含 ST_Within(geometry A, geometry B) 判断两个几何对象是否是重叠 ST_Overlaps(geometry, geometry) 判断A是否包含B ST_Contains(geometry A, geometry B) 判断A是否覆盖 B ST_Covers(geometry A, geometry B) 判断A是否被B所覆盖 ST_CoveredBy(geometry A, geometry B) 通过DE-9IM 矩阵判断两个几何对象的关系是否成立 ST_Relate(geometry, geometry, intersectionPatternMatrix) 获得两个几何对象的关系(DE-9IM矩阵) ST_Relate(geometry, geometry)
几何对象处理函数:
获取几何对象的中心 ST_Centroid(geometry) 面积量测 ST_Area(geometry) 长度量测 ST_Length(geometry) 返回曲面上的一个点 ST_PointOnSurface(geometry) 获取边界 ST_Boundary(geometry) 获取缓冲后的几何对象 ST_Buffer(geometry, double, [integer]) 获取多几何对象的外接对象 ST_ConvexHull(geometry) 获取两个几何对象相交的部分 ST_Intersection(geometry, geometry) 将经度小于0的值加360使所有经度值在0-360间 ST_Shift_Longitude(geometry) 获取两个几何对象不相交的部分(A、B可互换) ST_SymDifference(geometry A, geometry B) 从A去除和B相交的部分后返回 ST_Difference(geometry A, geometry B) 返回两个几何对象的合并结果 ST_Union(geometry, geometry) 返回一系列几何对象的合并结果 ST_Union(geometry set) 用较少的内存和较长的时间完成合并操作,结果和ST_Union相同 ST_MemUnion(geometry set)
几何对象存取函数:
获取几何对象的WKT描述 ST_AsText(geometry) 获取几何对象的WKB描述 ST_AsBinary(geometry) 获取几何对象的空间参考ID ST_SRID(geometry) 获取几何对象的维数 ST_Dimension(geometry) 获取几何对象的边界范围 ST_Envelope(geometry) 判断几何对象是否为空 ST_IsEmpty(geometry) 判断几何对象是否不包含特殊点(比如自相交) ST_IsSimple(geometry) 判断几何对象是否闭合 ST_IsClosed(geometry) 判断曲线是否闭合并且不包含特殊点 ST_IsRing(geometry) 获取多几何对象中的对象个数 ST_NumGeometries(geometry) 获取多几何对象中第N个对象 ST_GeometryN(geometry,int) 获取几何对象中的点个数 ST_NumPoints(geometry) 获取几何对象的第N个点 ST_PointN(geometry,integer) 获取多边形的外边缘 ST_ExteriorRing(geometry) 获取多边形内边界个数 ST_NumInteriorRings(geometry) 同上 ST_NumInteriorRing(geometry) 获取多边形的第N个内边界 ST_InteriorRingN(geometry,integer) 获取线的终点 ST_EndPoint(geometry) 获取线的起始点 ST_StartPoint(geometry) 获取几何对象的类型 GeometryType(geometry) 类似上,但是不检查M值,即POINTM对象会被判断为point ST_GeometryType(geometry) 获取点的X坐标 ST_X(geometry) 获取点的Y坐标 ST_Y(geometry) 获取点的Z坐标 ST_Z(geometry) 获取点的M值 ST_M(geometry)
几何对象构造函数:
参考语义: Text:WKT WKB:WKB Geom:Geometry M:Multi Bd:BuildArea Coll:Collection ST_GeomFromText(text,[])
ST_PointFromText(text,[]) ST_LineFromText(text,[]) ST_LinestringFromText(text,[]) ST_PolyFromText(text,[]) ST_PolygonFromText(text,[]) ST_MPointFromText(text,[]) ST_MLineFromText(text,[]) ST_MPolyFromText(text,[]) ST_GeomCollFromText(text,[]) ST_GeomFromWKB(bytea,[]) ST_GeometryFromWKB(bytea,[]) ST_PointFromWKB(bytea,[]) ST_LineFromWKB(bytea,[]) ST_LinestringFromWKB(bytea,[]) ST_PolyFromWKB(bytea,[]) ST_PolygonFromWKB(bytea,[]) ST_MPointFromWKB(bytea,[]) ST_MLineFromWKB(bytea,[]) ST_MPolyFromWKB(bytea,[]) ST_GeomCollFromWKB(bytea,[]) ST_BdPolyFromText(text WKT, integer SRID) ST_BdMPolyFromText(text WKT, integer SRID)
管理函数:
删除一个空间表(包括geometry_columns中的记录) DropGeometryTable([], ) 更新空间表的空间参考 UpdateGeometrySRID([], , , ) 更新空间表的统计信息 update_geometry_stats([, ])
参考语义: Geos:GEOS库 Jts:JTS库 Proj:PROJ4库 postgis_version()
postgis_lib_version() postgis_lib_build_date() postgis_script_build_date() postgis_scripts_installed() postgis_scripts_released() postgis_geos_version() postgis_jts_version() postgis_proj_version() postgis_uses_stats() postgis_full_version()
几何操作符:
A范围=B范围 A = B A范围覆盖B范围或A范围在B范围左侧 A &<> B A范围在B范围左侧 A <<>> B A范围覆盖B范围或A范围在B范围下方 A &<| B A范围覆盖B范围或A范围在B范围上方 A |&> B A范围在B范围下方 A <<| B A范围在B范围上方 A |>> B A=B A ~= B A范围被B范围包含 A @ B A范围包含B范围 A ~ B A范围覆盖B范围 A && B
几何量测函数:
量测面积 ST_Area(geometry) 根据经纬度点计算在地球曲面上的距离,单位米,地球半径取值6370986米 ST_distance_sphere(point, point) 类似上,使用指定的地球椭球参数 ST_distance_spheroid(point, point, spheroid) 量测2D对象长度 ST_length2d(geometry) 量测3D对象长度 ST_length3d(geometry) 根据经纬度对象计算在地球曲面上的长度 ST_length_spheroid(geometry,spheroid) ST_length3d_spheroid(geometry,spheroid) 量测两个对象间距离 ST_distance(geometry, geometry) 量测两条线之间的最大距离 ST_max_distance(linestring,linestring) 量测2D对象的周长 ST_perimeter(geometry) ST_perimeter2d(geometry) 量测3D对象的周长 ST_perimeter3d(geometry) 量测两点构成的方位角,单位弧度 ST_azimuth(geometry, geometry)
几何对象输出:
参考语义: NDR:Little Endian XDR:big-endian HEXEWKB:Canonical SVG:SVG 格式 GML:GML 格式 KML:KML 格式 GeoJson:GeoJson 格式
ST_AsBinary(geometry,{‘NDR’|‘XDR’}) ST_AsEWKT(geometry) ST_AsEWKB(geometry, {‘NDR’|‘XDR’}) ST_AsHEXEWKB(geometry, {‘NDR’|‘XDR’}) ST_AsSVG(geometry, [rel], [precision]) ST_AsGML([version], geometry, [precision]) ST_AsKML([version], geometry, [precision]) ST_AsGeoJson([version], geometry, [precision], [options])
几何对象创建:
参考语义: Dump:转储 ST_GeomFromEWKT(text)
ST_GeomFromEWKB(bytea) ST_MakePoint(, , [], []) ST_MakePointM(, , ) ST_MakeBox2D(, ) ST_MakeBox3D(, ) ST_MakeLine(geometry set) ST_MakeLine(geometry, geometry) ST_LineFromMultiPoint(multipoint) ST_MakePolygon(linestring, [linestring[]]) ST_BuildArea(geometry) ST_Polygonize(geometry set) ST_Collect(geometry set) ST_Collect(geometry, geometry) ST_Dump(geometry) ST_DumpRings(geometry)
几何对象编辑:
给几何对象添加一个边界,会使查询速度加快 ST_AddBBOX(geometry) 删除几何对象的边界 ST_DropBBOX(geometry) 添加、删除、设置点 ST_AddPoint(linestring, point, []) ST_RemovePoint(linestring, offset) ST_SetPoint(linestring, N, point) 几何对象类型转换 ST_Force_collection(geometry) ST_Force_2d(geometry) ST_Force_3dz(geometry), ST_Force_3d(geometry), ST_Force_3dm(geometry) ST_Force_4d(geometry) ST_Multi(geometry) 将几何对象转化到指定空间参考 ST_Transform(geometry,integer) 对3D几何对象作仿射变化 ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8) 对2D几何对象作仿射变化 ST_Affine(geometry, float8, float8, float8, float8, float8, float8) 对几何对象作偏移 ST_Translate(geometry, float8, float8, float8) 对几何对象作缩放 ST_Scale(geometry, float8, float8, float8) 对3D几何对象作旋转 ST_RotateZ(geometry, float8) ST_RotateX(geometry, float8) ST_RotateY(geometry, float8) 对2D对象作偏移和缩放 ST_TransScale(geometry, float8, float8, float8, float8) 反转 ST_Reverse(geometry) 转化到右手定则 ST_ForceRHR(geometry) 参考IsSimple函数 使用Douglas-Peuker算法 ST_Simplify(geometry, tolerance) ST_SimplifyPreserveTopology(geometry, tolerance) 讲几何对象顶点捕捉到网格 ST_SnapToGrid(geometry, originX, originY, sizeX, sizeY) ST_SnapToGrid(geometry, sizeX, sizeY), ST_SnapToGrid(geometry, size) 第二个参数为点,指定原点坐标 ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM) 分段 ST_Segmentize(geometry, maxlength) 合并为线 ST_LineMerge(geometry)
线性参考:
根据location(0-1)获得该位置的点 ST_line_interpolate_point(linestring, location) 获取一段线 ST_line_substring(linestring, start, end) 根据点获取location(0-1) ST_line_locate_point(LineString, Point) 根据量测值获得几何对象 ST_locate_along_measure(geometry, float8) 根据量测值区间获得几何对象集合 ST_locate_between_measures(geometry, float8, float8)
杂项功能函数:
几何对象的摘要 ST_Summary(geometry) 几何对象的边界 ST_box2d(geometry) ST_box3d(geometry) 多个几何对象的边界 ST_extent(geometry set) 0=2d, 1=3dm, 2=3dz, 3=4d ST_zmflag(geometry) 是否包含Bounding Box ST_HasBBOX(geometry) 几何对象的维数:2、3、4 ST_ndims(geometry) 子对象的个数 ST_nrings(geometry) ST_npoints(geometry) 对象是否验证成功 ST_isvalid(geometry) 扩大几何对象 ST_expand(geometry, float) 计算一个空间表的边界范围 ST_estimated_extent([schema], table, geocolumn) 获得空间参考 ST_find_srid(, , ) 几何对象使用的内存大小,单位byte ST_mem_size(geometry) 点是否在圆上 ST_point_inside_circle(,) 获取边界的X、Y、Z ST_XMin(box3d) ST_YMin(box3d) ST_ZMin(box3d) ST_XMax(box3d) ST_YMax(box3d) ST_ZMax(box3d) 构造一个几何对象的数组 ST_Accum(geometry set)
长事务支持:
启用/关闭长事务支持,重复调用无副作用 EnableLongTransactions() DisableLongTransactions() 检查对行的update和delete操作是否已授权 CheckAuth([], ) 锁定行 LockRow([], , , []) 解锁行 UnlockRows() 在当前事务中添加授权ID AddAuth()
其它还有SQL-MM和ArcSDE样式的函数支持,可以参考http://postgis.refractions.net/documentation/manual-1.3/ch06.html#id2750611,这里就不详细列了。
总结,如果强GIS需求还是选择postgis比较好,而且postgis是支持多个投影坐标的转换的,mysql只能计算出欧式距离(非真实球面距离)