查看“MySQL 数据类型:空间数据类型”的源代码
←
MySQL 数据类型:空间数据类型
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MySQL]] == 关于空间数据类型 == MySQL 空间扩展可实现地理 Feature 的生成,存储和分析: # 表示空间值的数据类型 # 操纵空间值的功能 # 空间索引可缩短对空间列的访问时间 * 空间数据类型和功能可用于 '''MyISAM''','''InnoDB''','''NDB''' 和 '''ARCHIVE''' 表。对于空间列的索引,MyISAM 和 InnoDB 支持 '''SPATIAL''' 和 '''非SPATIAL''' 索引。【???】 地理 Feature 是世界上任何具有位置的东西。功能可以是: # 一个实体。例如,山,池塘,城市。 # 空间。例如,市区,热带地点。 # 可定义的位置。例如,十字路口,作为两条街道相交的特定位置。 == 空间数据类型 == MySQL 具有与 '''OpenGIS''' 类相对应的空间数据类型。【???】 一些空间数据类型保存单个几何值: # GEOMETRY【几何】 # POINT【点】 # LINESTRING【线】 # POLYGON【多边形】 * GEOMETRY 可以存储任何类型的几何值。其他单值类型(POINT,LINESTRING 和 POLYGON)将其值限制为特定的几何类型。 其他空间数据类型包含值的集合: # MULTIPOINT【多点】 # MULTILINESTRING【多线】 # MULTIPOLYGON【多边形集】 # GEOMETRYCOLLECTION * GEOMETRYCOLLECTION 可以存储任何类型的对象的集合。其他集合类型(MULTIPOINT,MULTILINESTRING 和 MULTIPOLYGON)将集合成员限制为具有特定几何类型的成员。 示例:要创建一个名为geom的 table,该 table 具有一个名为g的列,该列可以存储任何几何类型的值,请使用以下语句: <syntaxhighlight lang="xml"> CREATE TABLE geom (g GEOMETRY); </syntaxhighlight> * 可以在 NOT NULL 空间列上创建 SPATIAL 索引,因此,如果您打算为该列构建索引,请声明NOT NULL: *: <syntaxhighlight lang="xml"> CREATE TABLE geom (g GEOMETRY NOT NULL); </syntaxhighlight> == OpenGIS 几何模型 == OGC 的“SQL with Geometry Types”环境提出的几何类型集基于 OpenGIS Geometry Model 。在此模型中,每个几何对象都具有以下常规属性: # 它与空间参考系统相关联,该系统描述了在其中定义对象的坐标空间。 # 它属于某些几何类。 GEOMETRY 类的层次结构: * Geometry(不可实例化) * Point(可实例) * Curve(不可实例化) ** LineString(可实例) *** Line *** LinearRing(可实例) * Surface(不可实例化) ** Polygon(可实例) * GeometryCollection(可实例) * MultiPoint(可实例) * MultiCurve(不可实例化) ** MultiLineString(可实例) * MultiSurface(不可实例化) ** MultiPolygon(可实例) Geometry 是基础类。这是一个抽象类。 Geometry 的可实例化子类被限制为存在于二维坐标空间中的零、一和二维几何对象。 基本 Geometry 类具有 Point,Curve,Surface 和 GeometryCollection 的子类: # Point 代表零维对象。 # Curve 代表一维对象,并具有子类别 LineString,以及子子类别 Line 和LinearRing 。 # Surface 是为二维对象设计的,具有子类 Polygon。 # GeometryCollection 具有名为 MultiPoint,MultiLineString 和 MultiPolygon 的专用零维,一维和二维收集类,用于分别建模与 Points,LineStrings 和 Polygons 的集合对应的几何形状。 MultiCurve 和 MultiSurface 作为抽象超类引入,它们泛化了收集接口以处理 Curves 和 Surfaces。 * Geometry,Curve,Surface,MultiCurve 和 MultiSurface 被定义为非实例类。它们为其子类定义了一组通用的方法,并且为了扩展性而将它们包括在内。 * Point,LineString,Polygon,GeometryCollection,MultiPoint,MultiLineString 和 MultiPolygon 是可实例化的类。 === GEOMETRY 类 === Geometry是层次结构的'''根类'''。它是一个'''不可实例化'''的类,但具有以下列表中描述的许多属性,这些属性对于从任何 Geometry子类创建的所有几何值都是共有的。(特定的子类具有自己的特定属性) Geometry 属性:<br/> # 它的 '''类型''' 。每个几何都属于层次结构中的可实例化类之一。 # 其 '''SRID''' 或'''空间参考标识符'''。该值标识与几何相关的空间参考系统,该系统描述了在其中定义几何对象的坐标空间。 #: 在 MySQL 中,'''SRID''' 值是与几何值关联的整数。可用的最大 SRID 值为 '''232-1'''【???】。如果给出较大的值,则仅使用较低的 32 位。不管实际 SRID 值如何,所有计算均假设 SRID 为 0。 SRID 0 表示无限平坦的笛卡尔平面,其轴未分配任何单位。 # 它在空间参考系统中的“坐标”,表示为双精度(8 字节)数字。所有非空几何均包括至少一对“(X,Y)”坐标。空几何不包含坐标。 #: 坐标与 SRID 相关。例如,在不同的坐标系中,即使对象具有相同的坐标,两个对象之间的距离也可能会有所不同,这是因为 平面 坐标系上的距离和 大地坐标 坐标系上的距离(地球表面)是不同的东西。 # 它的“内部”,“边界”和“外部”。 #: 每个几何都在空间中占据某些位置。几何图形的外部是几何图形未占用的所有空间。内部是几何所占据的空间。边界是几何图形的内部和外部之间的接口。 # 其 '''MBR(最小边界矩形)'''或包络。这是由最小和最大“(X,Y)”坐标形成的边界几何: #: <syntaxhighlight lang="xml"> ((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)) </syntaxhighlight> # 该值是 '''simple''' 还是 '''nonsimple''' 。类型(LineString,MultiPoint,MultiLineString)的几何值可以是简单的或不简单的。每种类型自己确定其值的简单或非简单。【???】 #: # 该值是 '''closed''' 还是 '''notclosed''' 。类型(LineString,MultiString)的几何值已关闭或未关闭。每种类型自己确定其值的关闭或未关闭。 #: # 值是 '''空''' 还是 '''非空'''。如果几何没有任何点,则为空。未定义空几何的外部,内部和边界(即,它们由“NULL”值表示)。空几何定义为始终简单,面积为 0。 #: # 其 '''尺寸''' 。几何的尺寸可以为 -1、0、1 或 2: ## -1 为空的几何。【空几何】 ## 0 用于没有长度和面积的几何。【点、点集】 ## 1 用于非零长度和零面积的几何。【线、线集】 ## 2 用于非零面积的几何。【几何】 #* Point 对象的尺寸为零。 LineString 对象的尺寸为 1。Polygon对象的尺寸为 2。MultiPoint,MultiLineString 和 MultiPolygon 对象的尺寸与其组成的元素的尺寸相同。 === Point 类 === Point 是代表坐标空间中单个位置的几何。 Point示例: # 想象一下有许多城市的大型世界地图。 Point 对象可以代表每个城市。 # 在城市地图上,Point 对象可以代表公交车站。 Point属性: # X:坐标值。 # Y:坐标值。 # Point 被定义为零维几何。 # Point 的边界是空集。 === Curve 类 === Curve 是一维几何,通常由一系列点表示。 Curve的特定子类定义了点之间的插值类型。Curve是不可实例化的类。 Curve 属性: # Curve具有其点的坐标。 # Curve被定义为一维几何。 # Curve如果不两次通过同一点,则很简单,不同之处是,如果起点和终点相同,则曲线仍可以是简单的。 # 如果 Curve 的起点等于端点,则为闭合。 # 闭合的 Curve 的边界为空。 # 未封闭的 Curve 的边界由其两个端点组成。 # 简单且封闭的Curve是 '''LinearRing'''。【环线】 === LineString 类 === LineString 是一种作为两点间直线插值的 Curve。 LineString 示例: # 在世界地图上,LineString 个对象可以代表河流。 # 在城市地图中,LineString 个对象可以代表街道。 LineString 属性: # LineString 具有段的坐标,由每个连续的点对定义。 # 如果 LineString 正好由两点组成,则它是 '''Line'''。【线段?】 # 如果 LineString 是封闭且简单的,则它是 LinearRing。【环线】 === Surface 类 === Surface是二维几何。这是一个不可实例化的类。'''它唯一的可实例化子类是 Polygon'''。 Surface 属性: # Surface 被定义为二维几何。 # OpenGIS 规范将简单的 Surface 定义为一种几何形状,它由与单个外部边界和零个或多个内部边界相关联的单个“补丁”组成。 # 简单Surface的边界是与其外部和内部边界相对应的一组闭合曲线。 === Polygon 类 === Polygon 是代表多边几何图形的平面 Surface。它由单个外部边界和零个或多个内部边界定义,其中每个内部边界在 Polygon 中定义一个孔【???hole】。 Polygon 示例:<br/> 在区域地图上,Polygon 对象可以代表森林,地点等。 Polygon 属性: # Polygon 的边界由一组 LinearRing 对象(即简单且闭合的 LineString 对象)组成,这些对象组成其外部和内部边界。 # Polygon 没有交叉的环。 Polygon 边界中的环可在 Point 处相交,但仅作为切线。 # Polygon 没有线条,尖峰 或 刺孔。 # Polygon 的内部是连接的点集。 # Polygon 可能有孔。有孔(hole)的 Polygon 的外部是未连接在一起的。每个孔都定义了外部的连接组件。 === GeometryCollection 类 === GeometryCollection 是一个几何,它是'''零个或多个'''任何类的'''几何的集合'''。 几何图形集合中的所有元素必须位于相同的空间参考系统(即,位于相同的坐标系)中。尽管以下各节中描述的 GeometryCollection 的子类可能会限制成员资格,但是几何集合的元素没有其他限制。限制可能基于: # 元素类型(例如 MultiPoint 只能包含 Point 元素) # 尺寸 # 限制元素之间的空间重叠程度 === MultiPoint 类 === MultiPoint 是由 Point 元素组成的几何集合。这些点没有以任何方式连接或排序。 MultiPoint 示例: # 在世界地图上,MultiPoint 可以代表一连串的小岛。 # 在城市地图上,MultiPoint 可以代表售票处的网点。 MultiPoint 属性: # MultiPoint 是零维几何。 # 如果 MultiPoint 的 Point 值中没有两个相等(具有相同的坐标值),则很简单。 # MultiPoint 的边界是空集。 === MultiCurve 类=== MultiCurve是由Curve个元素组成的几何集合。 MultiCurve是'''不可实例化'''的类。 MultiCurve 属性: # MultiCurve 是一维几何。 # MultiCurve 仅当其所有元素都简单时才简单;两个元素之间唯一的交点出现在两个元素边界上的点处。 # 通过应用“mod 2 联合规则”(也称为“奇偶规则”)获得 MultiCurve 边界:如果某个点位于奇数个Curve元素的边界中,则该点位于MultiCurve的边界中。【???】 # 如果 MultiCurve 的所有元素都关闭,则关闭。 # 闭合的 MultiCurve 的边界始终为空。 === MultiLineString 类 === MultiLineString 是由 LineString 元素组成的 MultiCurve 几何图形集合。 MultiLineString 示例:<br/> 在区域 Map 上,MultiLineString可以代 table 河流系统或高速公路系统。 === MultiSurface 类 === MultiSurface是由 surface 元素组成的几何集合。 MultiSurface 是不可实例化的类。'''它唯一可实例化的子类是 MultiPolygon'''。 MultiSurface 属性: # MultiSurface 内的面不相交。 # MultiSurface 内的曲面最多具有有限个点的相交。【而非相交于面】 === MultiPolygon 类 === MultiPolygon 是由 Polygon 元素组成的 MultiSurface 对象。 MultiPolygon 示例: # 在区域地图上,MultiPolygon 可以代表湖泊系统。 MultiPolygon 规则: # MultiPolygon 没有两个 Polygon 元素的内部相交。 # MultiPolygon 没有两个 Polygon 元素交叉(上一个属性也禁止交叉)或在无数个点处接触。 # MultiPolygon 可能没有割线,尖峰或刺孔。 MultiPolygon 是常规的封闭点集。 # 具有多个 Polygon 的 MultiPolygon 内部没有连接。 MultiPolygon 内部的连接组件的数量等于 MultiPolygon 中的 Polygon 值的数量。 MultiPolygon 属性: # MultiPolygon 是二维几何。 # MultiPolygon 边界是一组与其 Polygon 元素的边界相对应的闭合曲线(LineString值)。 # MultiPolygon 边界中的每个 Curve 都恰好在一个 Polygon 元素的边界中。 # Polygon 元素边界中的每个 Curve 都位于 MultiPolygon 的边界中。 == 支持的空间数据格式 == == 几何格式正确性和有效性 == == 创建空间列 == == 填充空间列 == == 提取空间数据 == == 优化空间分析 == == 创建空间索引 == == 使用空间索引 ==
返回至“
MySQL 数据类型:空间数据类型
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息