前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL空间函数汇总

MySQL空间函数汇总

作者头像
静谧星空TEL
发布2022-01-05 21:44:12
发布2022-01-05 21:44:12
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

一、学习指南

SAP Sybase SQL Anywhere 16.0: http://dcx.sap.com/index.html#sa160/zh/sqlanywhere_zh16/help_top_index.htm

Geometry:http://dcx.sap.com/1201/zh/dbspatial/pg-api-spatial-st-geometry-type.html

MySQL8中文手册:MySQL8中文手册

MySQL函数和运算符:空间函数参考 - 空间分析功能

MySQL中的空间扩展:第19章:MySQL中的空间扩展_MySQL 中文文档

ArcMap ST_Geometry :与 ST_Geometry 配合使用的 SQL 函数—帮助 | 文档

MySQL Geometry函数:MySQL: Geometry Class Reference

二、空间实现

代码语言:javascript
代码运行次数:0
复制
-- 面包含点:1:包含 0:不包含
SELECT ST_Contains(ST_GeomFromText('POLYGON((121.044 30.594, 121.046 30.59, 121.046 30.5948, 121.044 30.594))'),Point(0,0));  

-- 多边形包含点
SET @point1=POINT(121.575733,25.309111);
SET @point2=POINT(21.575733,25.309111);
SET @radius=10*1852*180/(6371000*PI());		-- 10海里
SELECT ST_Contains(ST_BUFFER(@point, @radius),@point2);	-- 0:不包含 1:包含

-- 线段的起点
SELECT ST_StartPoint(ST_GeomFromText('LINESTRING(121.044 30.594, 121.046 30.59, 121.046 30.5948, 121.044 30.594)'));

-- 线段的点数
SELECT ST_NumPoints(ST_GeomFromText('LINESTRING(0 0, 1 1)'));

-- 两点之间的距离
SELECT ST_DISTANCE(POINT(1,1),POINT(0,0));

-- 以坐标点画圆和港口坐标是否包含和距离
SET @point1=POINT(103.846488,1.28085);
SET @radius=10*1852*180/(6371000*PI());		-- 10海里
SELECT ST_Contains(ST_BUFFER(@point1,@radius),port_lonlat) AS contain, port_id FROM t_port_main ORDER BY contain DESC LIMIT 10;		-- 点画圆和港口
SELECT ST_Contains(ST_BUFFER(@point1,@radius),port_lonlat) AS contain, port_id FROM t_port_main WHERE ST_Contains(ST_BUFFER(@point1,@radius),port_lonlat)=1 LIMIT 10;
SELECT ST_Distance(ST_BUFFER(@point1,@radius),port_lonlat) AS contain, port_id FROM t_port_main ORDER BY contain ASC LIMIT 10;
SELECT ST_Distance(ST_BUFFER(ST_PointFromText(concat('POINT(',longitude_decimal,' ',latitude_decimal,')')),radius*180/(6371000*PI())),
ST_PointFromText('POINT(103.846488 1.28085)'))*6371000*PI()/180 AS distance,port_id FROM t_port ORDER BY distance LIMIT 10;

-- 距离换算
## 1海里=1.852公里
SET @KM=10,@NM=10;	--  10公里、10海里
SET @radius1=@KM*180/(6371000*PI());		-- 10公里
SET @radius2=@KM*1852*180/(6371000*PI());	-- 10海里
SELECT @radius1,@radius2;

-- 点生成buffer
SELECT ST_BUFFER(POINT(113,22),3)

-- 线段生成buffer
SELECT ST_BUFFER(ST_GeomFromText('LINESTRING(0 0,0 5,5 5)'),2)

-- 线段融合
SELECT ST_AsText(ST_Union(ST_GeomFromText('LineString(113 22, 113 30)'), ST_GeomFromText('LineString(112 30, 113 22)')));

-- 线段生成buffer再融合(多边形融合)
SET @g1 = ST_BUFFER(ST_GeomFromText('LINESTRING(113 22, 113 30)'),2);
SET @g2 = ST_BUFFER(ST_GeomFromText('LINESTRING(112 30, 113 22)'),2);
SELECT ST_AsText(ST_Union(@g1, @g2));

-- 多边形和多边形多次融合
SET @radius = 5*1852*180/(6371000*PI());    -- 五海里为buffer宽度
SET @g1 = ST_BUFFER(ST_GeomFromText('LINESTRING(110 22, 113 30)'),@radius);
SET @g2 = ST_BUFFER(ST_GeomFromText('LINESTRING(120 30, 111 22)'),@radius);
SET @g3 = ST_BUFFER(ST_GeomFromText('LINESTRING(109 10, 125 35)'),@radius);
SET @g4 = ST_BUFFER(ST_GeomFromText('LINESTRING(109 10, 125 35)'),@radius);
SET @g5 = ST_BUFFER(ST_GeomFromText('LINESTRING(109 10, 125 35)'),@radius);
SET @g6 = ST_BUFFER(ST_GeomFromText('LINESTRING(109 10, 125 35)'),@radius);
SET @u1 = ST_GeomFromText(ST_AsText(ST_Union(@g1, @g2)));
SET @u2 = ST_GeomFromText(ST_AsText(ST_Union(@u1, @g3)));
SET @u3 = ST_GeomFromText(ST_AsText(ST_Union(@u2, @g4)));
SET @u4 = ST_GeomFromText(ST_AsText(ST_Union(@u3, @g5)));
SELECT ST_AsText(ST_Union(@u4, @g6));

三、函数介绍

名称

描述

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()

占位符功能

ST_Geometry 的方法:

ST_Affine

ST_AsBinary

ST_AsGML

ST_AsGeoJSON

ST_AsKML

ST_AsSVG

ST_AsSVGAggr

ST_AsText

ST_AsWKB

ST_AsWKT

ST_AsXML

ST_Boundary

ST_Contains

ST_ContainsFilter

ST_ConvexHull

ST_ConvexHullAggr

ST_CoordDim

ST_CoveredBy

ST_CoveredByFilter

ST_Covers

ST_CoversFilter

ST_Crosses

ST_Difference

ST_Dimension

ST_Disjoint

ST_Distance

ST_Envelope

ST_EnvelopeAggr

ST_Equals

ST_EqualsFilter

ST_GeomFromBinary

ST_GeomFromShape

ST_GeomFromText

ST_GeomFromWKB

ST_GeomFromWKT

ST_GeometryType

ST_GeometryTypeFromBaseType

ST_Intersection

ST_IntersectionAggr

ST_Intersects

ST_IntersectsFilter

ST_IntersectsRect

ST_Is3D

ST_IsEmpty

ST_IsMeasured

ST_IsSimple

ST_IsValid

ST_LatNorth

ST_LatSouth

ST_LinearHash

ST_LinearUnHash

ST_LoadConfigurationData

ST_LongEast

ST_LongWest

ST_MMax

ST_MMin

ST_OrderingEquals

ST_Overlaps

ST_Relate

ST_Reverse

ST_SRID

ST_SRIDFromBaseType

ST_SnapToGrid

ST_SymDifference

ST_ToCircular

ST_ToCompound

ST_ToCurve

ST_ToCurvePoly

ST_ToGeomColl

ST_ToLineString

ST_ToMultiCurve

ST_ToMultiLine

ST_ToMultiPoint

ST_ToMultiPolygon

ST_ToMultiSurface

ST_ToPoint

ST_ToPolygon

ST_ToSurface

ST_Touches

ST_Transform

ST_Union

ST_UnionAggr

ST_Within

ST_WithinDistance

ST_WithinDistanceFilter

ST_WithinFilter

ST_XMax

ST_XMin

ST_YMax

ST_YMin

ST_ZMax

ST_ZMin

直接子类型

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、学习指南
  • 二、空间实现
  • 三、函数介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档