MySQL的地理位置类型MySQL的坐标系类型
MySQL 具有保存地理位置信息的功能,该功能符合OpenGIS的规范数据类型.该规范下有下⾯的数据类型.
保存单个地理位置类型
POINT(坐标)
代表的是⼀个坐标,有X,Y坐标 X坐标可以当成是纬度Longitude,Y坐标可以当作为经度Latitude.
X和Y都是 Double (8byte) 浮点类型数值
-- point 类型
mysql>lect Point(123,132)from dual;
什么是一般过去时+----------------+
|Point(123,132)|
+----------------+
|POINT(123132)|
+----------------+
1row in t
crossctionmysql>lect ST_GeomFromText('POINT(15 20)')from dual ;
+---------------------------------+
| ST_GeomFromText('POINT(15 20)')|
+---------------------------------+
|POINT(1520)|
+---------------------------------+
1row in t
-- 获取X坐标
美国乡村音乐下载
mysql>SELECT ST_X(Point(15,20));
+---------------------+
| ST_X(POINT(15,20))|
+---------------------+
|15|
+---------------------+
mysql>SELECT ST_Y(Point(15,20));
+---------------------+
| ST_Y(POINT(15,20))|
+---------------------+
|20|
圣诞老人的故乡+---------------------+
LineString
表⽰⼀系列坐标连接的线bt是什么意思
-- 字符串转成lineString
mysql>lect LINESTRING(point(1,1),point(2,1))from dual;
+-------------------------------------+
|LINESTRING(point(1,1),point(2,1))|
+-------------------------------------+
|LINESTRING(11,21)|
+-------------------------------------+
1row in t
mysql>lect ST_MPointFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)')from dual;
+-----------------------------------------------------------+
| ST_MPointFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)')|
+-----------------------------------------------------------+
|LINESTRING(00,1010,2025,5060)|colorful day
+-----------------------------------------------------------+
1row in t
1row in t
Polygon
表⽰⼀些列线连接封闭的多边形
mysql>lect ST_MPointFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')from dual; +--------------------------------------------------------------------------------+
| ST_MPointFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')|
+--------------------------------------------------------------------------------+
ptember 缩写|POLYGON((00,100,1010,010,00),(55,75,77,57,55))|arch engine optimization
+--------------------------------------------------------------------------------+
1row in t
-- ⾮字符串转换没有,太⿇烦
Geometry
能够保存 Point, LineString , Polygon 数据类型,并能完整保存其类型.
具有下⾯的属性
属性描述
type可实例化的基础地理数据类型
SRID 空间参考标识符(spatial reference identifier),描述该对象的坐标空间的 ID,是根据MySQL的空间引⽤参考系统做唯⼀的标识 最⼤值
位2^32 -1 ,0 代表⽆限空间
coordinates空间坐标,⾄少⼀对Point(X,Y) ,它与SRID 有关联,但不能完全代表地球地理位置坐标体系,它有可能是显⽰器的planar 坐标体系.
MBR 最⼩边界矩形,或者包络线, 这是由最⼩和最⼤的坐标构成 ((左下⾓坐标,右下⾓坐标,左上⾓坐标,右上⾓坐标))((MINX MINY, MAXX
MINY, MAXX MAXY, MINX MAXY, MINX MINY))
empty/nonempty空或者不空,空或者NULL 维度为0
保存多地理位置集合数据的类型
MultiPoint
多个点
两种⽣产⽅式
lect ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)')from dual;
lect MULTIPOINT(point(1,1),point(2,1))from dual;
MultiLineString
多条线
MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
MultiPolygon
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
多个多边形石家庄43中电话
GeoMetryCollection
能通⽤保存多地理位置集合类型(MultiPoint , MultiLineString , MultiPolygon)
``
GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20)) MySQL 的索引
mysql>CREATE SPATIAL INDEX spIndex ON TableName(column)COMMENT'经纬度R-tree 索引'; -- 使⽤ SPATIAL INDEX
mysql>EXPLAIN SELECT*FROM TableName WHERE
-> MBRContains(POINT(x,y),column)\G
***************************1.row***************************
id: 1
lect_type: SIMPLE
giordanotable: TableName
type: range
possible_keys: spIndex
key: spIndex
key_len: 32
ref: NULL
rows: 50
Extra: Using where
1row in t(0.00 c)
--- 当不使⽤索引时的结果
mysql>EXPLAIN SELECT*FROM TableName WHERE
-> MBRContains(POINT(x,y),column)\G
***************************1.row***************************
id: 1
lect_type: SIMPLE
table: TableName
type: range
possible_keys: NULL
key:NULL
key_len: 32
ref: NULL
rows: 50
Extra: Using where
1row in t(0.00 c)