MySQL的空间扩展

        MySQL支持空间扩展,允许生成、保存和分析地理特征。这些特征可用于MyISAM、InnoDB、NDB、BDB和ARCHIVE表。MySQL实施了OGC建议的具有Geometry类型的SQL环境的一个子集。MySQL定义了一下几个几何类型:

Geometry类:Geometry是层次结构的根类,是一种非实例化类,但具有很多属性,这些属性对由Geometry子类创建的所有几何值来说是共同的。

Point类:Point点指的是代表坐标空间中单个位置的几何类。

Curve类:Curve曲线是一种1维几何对象,通常表示一系列点,是一种非实例化类。

LineString类:LineString是具有点之间线性内插特性的Curve。

Surface类:Surface是一种2维几何对象,一种非实例化类。

Polygon类:Polygon是代表多边几何对象的平面Surface。它由单个外部边界以及0或多个内部边界定义,其中,每个内部边界定义为Polygon中的一个孔。

GeometryCollection类:GeometryCollection是由一个或多个任意类几何对象构成的几何对象,其中的所有元素必须具有相同的空间参考系。

MultiPoint类:MultiPoint是一种由Point元素构成的几何对象集合。这些点未以任何方式连接或排序。

MultiCurve类:MultiCurve是一种由Curve元素构成的几何对象集合,是一种非实例化类。

MultiLineString类:MultiLineString是一种由LineStirng元素构成的MultiCurve几何对象集合。

MultiSurface类:MultiSurface是一种由Surface元素构成的几何对象,是一种非实例化类。

MultiPolygon类:MultiPolygon是一种由Polygon元素构成的几何对象集合。

支持的空间数据格式:WKT和WKB

WKT:为与采用ASCII格式的几何数据进行交换而设计的著名文本格式。POINT(15 20)、LINESTRING(0 0,10 10,20 25,50 60)、POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,5 7,7 7,7 5,5 5))、MULTIPOINT(0 0, 20 20, 60 60)、MULTILINESTRING((10 10, 20 20), (15 15, 30 15))、MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))。

WKB:用于以二进制流的形式交换几何对象,二进制流由含几何WKB信息的BLOB值表示。

创建空间列:

create table geometry_type(id int primary key auto_increment, point point, line linestring, area polygon,pointCollection multipoint, lineCollection multilinestring,areaCollection multipolygon);

创建空间值:

insert into geometry_type (point,line,area,pointColl,lineColl,areaColl) values (PointFromText('POINT(0 0)'),LineFromText('LINESTRING(0 0,10 10,20 25,50 60)'),

PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,5 7,7 7,7 5,5 5))'),MPointFromText('MULTIPOINT(0 0, 20 20, 60 60)'),

MLineFromText('MULTILINESTRING((10 10, 20 20), (15 15, 30 15))'),MPolyFromText('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))'));

获取空间值:

select astext(point) from geometry_type;

select asbinary(point) from geometry_type;

分析空间信息:

MySQL提供了一组在空间数据上执行各种操作的函数。用于在各种格式间转换几何值的函数、用于访问几何值定性或定量属性的函数、描述两种几何值之间关系的

函数、从已有Geometry创建新Geometry的函数。

         ·Geometry格式转换函数:

·asBinary():将采用内部几何格式的值转换为其WKB表示,并返回二进制结果。
·asText():将采用内部几何格式的值转换为WKT表示,并返回字符串结果。
·GeomFormText():将字符串值从其WKT表示转换为内部几何格式。
·GeomFormWKB():将二进制值从其WKB表示转换为内部几何格式。
·Geometry函数:
·Dimension(g):返回几何值g的固有维数。
·Envelope(g):返回几何值g的最小边界矩形。
·GeometryType(g):以字符串形式返回几何类型的名称。
·SRID(g):返回指明几何值g的空间参考系统ID的整数。
·Point函数:
·X(g):以双精度数值返回点p的x坐标值。
·Y(g):以双精度数值返回点p的y坐标值。
·LineString函数:
·EndPoint(ls):返回LineString值ls的最后一个点。
·GLength(ls):以双精度数值返回LineString值ls在相关的空间参考系中的长度。
·NumPoints(ls):返回ls中的点数。
·PointN(ls,n):返回ls中的第n个点,编号从1开始。
·StartPoint(ls):返回ls的第一个点Point。
·Polygon函数:
·Area(poly):以双精度数值形式返回poly的面积,根据在其空间参考系中的测量值。
·ExteriorRing(poly):以LineString形式返回poly的外环。
·InteriorRingN(poly,n):以LineString形式返回poly的第n个内环,编号从1开始。
·NumInteriorRings(poly):返回poly的内环数目。
·关于几何最小边界矩形(MBR)的关系:
·MBRContains(g1,g2):指明g1的最小边界矩形是否包含g2的最小边界矩形。
·MBRDisjoint(g1,g2):指明g1和g2的最小边界矩形是否不相交。
·MBREqual(g1,g2):指明g1和g2的最小边界矩形是否相同。
·MBRIntersects(g1,g2):指明g1和g2的最小边界矩形是否相交。
·MBROverlaps(g1,g2):指明g1和g2的最小边界矩形是否交叠。
·MBRTouches(g1,g2):指明g1和g2的最小边界矩形是否接触。
·MBRWithin(g1,g1):指明g1的最小边界矩形是否位于g2的最小边界矩形内。

优化空间分析:

create table geom (g geometry not null, spatial index(g));

对于MyISAM表,spatial index负责创建R-tree索引。对于支持空间索引的其他存储引擎,spatial index能够创建B-tree索引。对于准确的值查找而不是范围扫描,作用

在空间值上的B-tree索引很有用。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值