一、MySQL空间数据形式
MKT
已知文本(WKT)格式。用已知文本(WKT)表示几何值是为用ASCII格式交换几何数据而设计的。OpenGIS规范提供了一个BackusNaur语法,它指定了写入WKT值的正式生成规则。
MKB
已知二进制(WKB)格式。用已知二进制(WKB)表示的几何值,用于交换二进制流格式的几何数据,用包含几何WKB信息的BLOB值表示。该格式由OpenGIS规范定义。ISO SQL/MM第3部分:空间标准中也对其进行了定义。WKB使用1字节无符号整数、4字节无符号整数和8字节双精度数字(IEEE 754格式)。一个字节有八位
GEOJSON
GeoJSON 是用于描述地理空间信息的数据格式。GeoJSON 不是一种新的格式,其语法规范是符合 JSON
格式的,只不过对其名称进行了规范,专门用于表示地理信息。GeoJSON 的最外层是一个单独的对象(object)。这个对象可表示:
- 几何体(Geometry)。
- 特征(Feature)。
- 特征集合(FeatureCollection)。
最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type 属性,表示对象的类型,type 的值必须是下面之一:
- Point:点。
- MultiPoint:多点。
- LineString:线。
- MultiLineString:多线。
- Polygon:面。
- MultiPolygon:多面。
- GeometryCollection:几何体集合。
- Feature:特征。
- FeatureCollection:特征集合。
每一个对象都有一个成员变量 coordinates。如果 type 的值为 Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon之一,则该对象必须有变量 coordinates。
如果 type 的值为 GeometryCollection(几何体集合),那么该对象必须有变量geometries,其值是一个数组,数组的每一项都是一个 GeoJSON 的几何对象。
二、MySQL空间数据类型
MySQL的空间数据类型(Spatial Data Type)对应于OpenGIS类,包括单值类型:GEOMETRY、POINT、LINESTRING、POLYGON以及集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION 。
GEOMETRY
Geometry是所有空间集合类型的基类,其他类型如POINT、LINESTRING、POLYGON都是Geometry的子类。
POINT
Point,顾名思义就是点,有一个坐标值。例如POINT(121.213342 31.234532),POINT(30 10),坐标值支持DECIMAL类型,经度(longitude)在前,维度(latitude)在后,用空格分隔。
LINESTRING
LineString,线,由一系列点连接而成。如果线从头至尾没有交叉,那就是简单的(simple);如果起点和终点重叠,那就是封闭的(closed)。例如LINESTRING(30 10,10 30,40 40),点与点之间用逗号分隔,一个点中的经纬度用空格分隔,与POINT格式一致。
POLYGON
Polygon,多边形。可以是一个实心平面形,即没有内部边界,也可以有空洞,类似纽扣。最简单的就是只有一个外边界的情况,例如POLYGON((0 0,10 0,10 10, 0 10))。
MULTIPOINT
MultiPoint是由Point(点)元素组成的几何集合。这些点没有以任何方式连接或排序。MultiPoint的用法:在世界地图上,MultiPoint可以代表一连串的小岛。 MultiPoint属性:MultiPoint是零维几何。如果MultiPoint的两个Point值都不相等(坐标值相同),则它很简单。 MultiPoint的边界是空集。
MULTILINESTRING
MultiLineString是由LineString元素组成的MultiCurve几何集合。 MultiLineString的用法:在区域地图上,MultiLineString可以表示河流系统或高速公路系统。MultiSurface类型:MultiSurface是由表面元素组成的几何集合。 MultiSurface是不可实例化的类。它唯一的可实例化子类是MultiPolygon。两个MultiSurface曲面没有相交的内部。两个MultiSurface元素的边界最多在有限数量的点处相交。
MULTIPOLYGON
MultiPolygon是一个由Polygon元素组成的MultiSurface对象MultiPolygon的用法:MultiPolygon可以代表区域地图上的湖泊系统。MultiPolygon没有两个内部相交的Polygon元素。MultiPolygon没有两个相交的Polygon元素(上一个断言也禁止相交)或在无数个点处接触。MultiPolygon可能没有切割线,尖峰或穿孔。 MultiPolygon是常规的封闭点集。具有多个多边形的MultiPolygon的内部未连接。 MultiPolygon内部的连接组件数等于MultiPolygon中的Polygon值数。MultiPolygon是二维几何。 MultiPolygon边界是一组与其Polygon元素的边界相对应的闭合曲线(LineString值)。MultiPolygon边界中的每条曲线都恰好在一个Polygon元素的边界中。多边形元素边界中的每个曲线都在MultiPolygon的边界中。
GEOMETRYCOLLECTION
GeometryCollection是一种几何,它是任何类的一个或多个几何的集合。 GeometryCollection中的所有元素必须位于同一空间参考系统中。
三、MySQL空间坐标函数
函数 | 描述 |
---|---|
GeomCollection() | 从几何图形构造几何图形集合 |
GeometryCollection() | 从几何图形构造几何图形集合 |
LineString() | 从点值构造线字符串 |
MBRContains() | 一种几何体的MBR是否包含另一种几何体的MBR |
MBRCoveredBy() | 一个MBR是否被另一个MBR覆盖 |
MBRCovers() | 一个MBR是否覆盖另一个MBR |
MBRDisjoint() | 两种几何形状的MBR是否不相交 |
MBREquals() | 两种几何形状的MBR是否相等 |
MBRIntersects() | 两个几何体的MBR是否相交 |
MBROverlaps() | 两种几何形状的MBR是否重叠 |
MBRTouches() | 两种几何形状的MBR是否接触 |
MBRWithin() | 一种几何体的MBR是否在另一种几何体的MBR内 |
MultiLineString() | 从行字符串值构造多行字符串 |
MultiPoint() | 从点值构造多点 |
MultiPolygon() | 从多边形值构造多多边形 |
Point() | 从坐标构造点 |
Polygon() | 从LineString参数构造多边形 |
ST_Area() | 返回多边形或多多边形区域 |
ST_AsBinary() | ST_AsWKB() |
ST_AsGeoJSON() | 从几何体生成GeoJSON对象 |
ST_AsText() | ST_AsWKT() |
ST_Buffer() | 返回距离几何体给定距离内的点的几何体 |
ST_Buffer_Strategy() | ST_Buffer()的生成策略选项 |
ST_Centroid() | 返回质心作为一个点 |
ST_Collect() | 将空间值聚合到集合中 |
ST_Contains() | 一个几何体是否包含另一个几何体 |
ST_ConvexHull() | 几何的返回凸包 |
ST_Crosses() | 一个几何体是否与另一个几何体相交 |
ST_Difference() | 两种几何体的返回点集差 |
ST_Dimension() | 几何尺寸 |
ST_Disjoint() | 一个几何体与另一个几何体是否不相交 |
ST_Distance() | 一个几何体与另一个几何体的距离 |
ST_Distance_Sphere() | 地球上两个几何体之间的最小距离 |
ST_EndPoint() | 线串的端点 |
ST_Envelope() | 几何体的返回MBR |
ST_Equals() | 一个几何体是否等于另一个几何体 |
ST_ExteriorRing() | 多边形的返回外环 |
ST_FrechetDistance() | 离散Fr茅一个几何体与另一个几何体的切特距离 |
ST_GeoHash() | 生成一个geohash值 |
ST_GeomCollFromText() | ST_GeometryCollectionFromText() |
ST_GeomCollFromWKB() | ST_GeometryCollectionFromWKB() |
ST_GeometryN() | 从几何图形集合返回第N个几何图形 |
ST_GeometryType() | 返回几何体类型的名称 |
ST_GeomFromGeoJSON() | 从GeoJSON对象生成几何体 |
ST_GeomFromText() | ST_GeometryFromText() |
ST_GeomFromWKB() | ST_GeometryFromWKB() |
ST_HausdorffDistance() | 一个几何体与另一个几何体之间的离散Hausdorff距离 |
ST_InteriorRingN() | 返回多边形的第N个内环 |
ST_Intersection() | 两个几何图形的返回点集交点 |
ST_Intersects() | 一个几何体是否与另一个几何体相交 |
ST_IsClosed() | 几何图形是否闭合且简单 |
ST_IsEmpty() | 几何图形是否为空 |
ST_IsSimple() | 几何图形是否简单 |
ST_IsValid() | 几何图形是否有效 |
ST_LatFromGeoHash() | 从geohash值返回纬度 |
ST_Latitude() | 返回点纬度 |
ST_Length() | 返回行字符串的长度 |
ST_LineFromText() | ST_LineStringFromText() |
ST_LineFromWKB() | ST_LineStringFromWKB() |
ST_LineInterpolatePoint() | 沿线字符串指定百分比的点 |
ST_LineInterpolatePoints() | 沿线字符串指定百分比的点 |
ST_LongFromGeoHash() | 从geohash值返回经度 |
ST_Longitude() | 返回点经度 |
ST_MakeEnvelope() | 围绕两点的矩形 |
ST_MLineFromText() | ST_MultiLineStringFromText() |
ST_MLineFromWKB() | ST_MultiLineStringFromWKB() |
ST_MPointFromText() | ST_MultiPointFromText() |
ST_MPointFromWKB() | ST_MultiPointFromWKB() |
ST_MPolyFromText() | ST_MultiPolygonFromText() |
ST_MPolyFromWKB() | ST_MultiPolygonFromWKB() |
ST_NumGeometries() | 返回几何图形集合中的几何图形数 |
ST_NumInteriorRing() | ST_NumInteriorRings() |
ST_NumPoints() | 返回LineString中的点数 |
ST_Overlaps() | 一个几何体是否与另一个几何体重叠 |
ST_PointAtDistance() | 沿线串指定距离的点 |
ST_PointFromGeoHash() | 将geohash值转换为点值 |
ST_PointFromText() | 从WKT构造点 |
ST_PointFromWKB() | 从WKB构造点 |
ST_PointN() | 从LineString返回第N个点 |
ST_PolyFromText() | ST_PolygonFromText() |
ST_PolyFromWKB() | ST_PolygonFromWKB() |
ST_Simplify() | 返回简化几何体 |
ST_SRID() | 返回几何图形的空间参考系统ID |
ST_StartPoint() | 线串的起点 |
ST_SwapXY() | 交换X/Y坐标的返回参数 |
ST_SymDifference() | 两个几何体的返回点集对称差 |
ST_Touches() | 一个几何体是否与另一个几何体接触 |
ST_Transform() | 变换几何坐标 |
ST_Union() | 两个几何体的返回点集并集 |
ST_Validate() | 返回已验证的几何体 |
ST_Within() | 一个几何体是否在另一个几何体中 |
ST_X() | 返回点的X坐标 |
ST_Y() | 返回点的Y坐标 |
参考链接:https://blog.csdn.net/daizimo/article/details/126382419