文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  CREATE SPATIAL REFERENCE SYSTEM 语句

15.1.19 CREATE SPATIAL REFERENCE SYSTEM 语句

CREATE OR REPLACE SPATIAL REFERENCE SYSTEM
    srid srs_attribute ...

CREATE SPATIAL REFERENCE SYSTEM
    [IF NOT EXISTS]
    srid srs_attribute ...

srs_attribute: {
    NAME 'srs_name'
  | DEFINITION 'definition'
  | ORGANIZATION 'org_name' IDENTIFIED BY org_id
  | DESCRIPTION 'description'
}

srid, org_id: 32-bit unsigned integer

此语句创建空间参考系统 (SRS) 定义并将其存储在数据字典中。它需要SUPER 权限。可以使用INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS 表检查生成的数据字典条目。

SRID 值必须是唯一的,因此,如果既未指定OR REPLACE 也未指定IF NOT EXISTS,则如果已存在具有给定srid 值的 SRS 定义,则会发生错误。

使用CREATE OR REPLACE 语法,将替换任何具有相同 SRID 值的现有 SRS 定义,除非现有表中的某些列使用该 SRID 值。在这种情况下,会发生错误。例如

mysql> CREATE OR REPLACE SPATIAL REFERENCE SYSTEM 4326 ...;
ERROR 3716 (SR005): Can't modify SRID 4326. There is at
least one column depending on it.

要确定使用该 SRID 的列,请使用以下查询,将 4326 替换为您尝试创建的定义的 SRID:

SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS WHERE SRS_ID=4326;

使用CREATE ... IF NOT EXISTS 语法,任何具有相同 SRID 值的现有 SRS 定义都将导致忽略新定义并发出警告。

SRID 值必须在 32 位无符号整数的范围内,并具有以下限制:

  • SRID 0 是有效的 SRID,但不能与 CREATE SPATIAL REFERENCE SYSTEM 一起使用。

  • 如果该值位于保留的 SRID 范围内,则会发出警告。 保留范围是 [0, 32767](由 EPSG 保留)、[60,000,000, 69,999,999](由 EPSG 保留)和 [2,000,000,000, 2,147,483,647](由 MySQL 保留)。 EPSG 代表 欧洲石油测绘组织

  • 用户不应使用保留范围内的 SRID 创建 SRS。 这样做存在 SRID 与 MySQL 未来分发的 SRS 定义冲突的风险,结果是未为 MySQL 升级安装新的系统提供的 SRS,或者用户定义的 SRS 被覆盖。

语句的属性必须满足以下条件

  • 属性可以按任何顺序给出,但任何属性都不能给出多次。

  • NAMEDEFINITION 属性是必需的。

  • NAME srs_name 属性值必须唯一。 ORGANIZATION org_nameorg_id 属性值的组合必须唯一。

  • NAME srs_name 属性值和 ORGANIZATION org_name 属性值不能为空,也不能以空格开头或结尾。

  • 属性规范中的字符串值不能包含控制字符,包括换行符。

  • 下表显示了字符串属性值的最大长度。

    表 15.6 CREATE SPATIAL REFERENCE SYSTEM 属性长度

    属性 最大长度(字符)
    NAME 80
    DEFINITION 4096
    ORGANIZATION 256
    DESCRIPTION 2048

下面是一个示例 CREATE SPATIAL REFERENCE SYSTEM 语句。 DEFINITION 值被重新格式化为多行,以提高可读性。 (为了使语句合法,该值实际上必须在单行中给出。)

CREATE SPATIAL REFERENCE SYSTEM 4120
NAME 'Greek'
ORGANIZATION 'EPSG' IDENTIFIED BY 4120
DEFINITION
  'GEOGCS["Greek",DATUM["Greek",SPHEROID["Bessel 1841",
  6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],
  AUTHORITY["EPSG","6120"]],PRIMEM["Greenwich",0,
  AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,
  AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],
  AUTHORITY["EPSG","4120"]]';

SRS 定义的语法基于 OpenGIS Implementation Specification: Coordinate Transformation Services, Revision 1.00, OGC 01-009, January 12, 2001, Section 7.2 中定义的语法。 该规范可在 http://www.opengeospatial.org/standards/ct 获得。

MySQL 对规范进行了以下更改

  • 仅实现了 <horz cs> 生成规则(即地理和投影 SRS)。

  • <parameter> 有一个可选的、非标准的 <authority> 子句。 这使得可以通过权限而不是名称来识别投影参数。

  • 该规范没有将 AXIS 子句作为 GEOGCS 空间参考系定义中的强制性要求。 但是,如果没有 AXIS 子句,MySQL 就无法确定定义是在纬度-经度顺序还是经度-纬度顺序中具有轴。 MySQL 强制执行非标准要求,即每个 GEOGCS 定义都必须包含两个 AXIS 子句。 一个必须是 NORTHSOUTH,另一个必须是 EASTWESTAXIS 子句顺序决定了定义是在纬度-经度顺序还是经度-纬度顺序中具有轴。

  • SRS 定义不能包含换行符。

如果 SRS 定义为投影指定了权限代码(建议这样做),则如果定义缺少强制参数,则会发生错误。 在这种情况下,错误消息会指示问题所在。 MySQL 支持的投影方法和强制参数如 表 15.7,“支持的空间参考系统投影方法”表 15.8,“空间参考系统投影参数” 所示。

下表显示了 MySQL 支持的投影方法。 MySQL 允许未知的投影方法,但无法检查定义中是否存在强制参数,也无法在未知投影之间转换空间数据。 有关每个投影工作原理的详细说明(包括公式),请参见 EPSG 指导说明 7-2

表 15.7 支持的空间参考系统投影方法

EPSG 代码 投影名称 强制参数(EPSG 代码)
1024 流行的可视化伪墨卡托投影 8801, 8802, 8806, 8807
1027 朗伯等积方位投影(球面) 8801, 8802, 8806, 8807
1028 等距圆柱投影 8823, 8802, 8806, 8807
1029 等距圆柱投影(球面) 8823, 8802, 8806, 8807
1041 克罗瓦克投影(北方向) 8811, 8833, 1036, 8818, 8819, 8806, 8807
1042 改进的克罗瓦克投影 8811, 8833, 1036, 8818, 8819, 8806, 8807, 8617, 8618, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035
1043 改进的克罗瓦克投影(北方向) 8811, 8833, 1036, 8818, 8819, 8806, 8807, 8617, 8618, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035
1051 朗伯等角圆锥投影(2SP 密歇根) 8821, 8822, 8823, 8824, 8826, 8827, 1038
1052 哥伦比亚城市投影 8801, 8802, 8806, 8807, 1039
9801 朗伯等角圆锥投影(1SP) 8801, 8802, 8805, 8806, 8807
9802 朗伯等角圆锥投影(2SP) 8821, 8822, 8823, 8824, 8826, 8827
9803 朗伯等角圆锥投影(2SP 比利时) 8821, 8822, 8823, 8824, 8826, 8827
9804 墨卡托投影(变体 A) 8801, 8802, 8805, 8806, 8807
9805 墨卡托投影(变体 B) 8823, 8802, 8806, 8807
9806 卡西尼-索尔德纳投影 8801, 8802, 8806, 8807
9807 横轴墨卡托投影 8801, 8802, 8805, 8806, 8807
9808 横轴墨卡托投影(南方向) 8801, 8802, 8805, 8806, 8807
9809 斜轴立体投影 8801, 8802, 8805, 8806, 8807
9810 极点立体投影(变体 A) 8801, 8802, 8805, 8806, 8807
9811 新西兰地图格网 8801, 8802, 8806, 8807
9812 霍特林斜轴墨卡托投影(变体 A) 8811, 8812, 8813, 8814, 8815, 8806, 8807
9813 拉伯德斜轴墨卡托投影 8811, 8812, 8813, 8815, 8806, 8807
9815 霍特林斜轴墨卡托投影(变体 B) 8811, 8812, 8813, 8814, 8815, 8816, 8817
9816 突尼斯采矿格网 8821, 8822, 8826, 8827
9817 朗伯近似等角圆锥投影 8801, 8802, 8805, 8806, 8807
9818 美国多圆锥投影 8801, 8802, 8806, 8807
9819 克罗瓦克投影 8811, 8833, 1036, 8818, 8819, 8806, 8807
9820 朗伯等积方位投影 8801, 8802, 8806, 8807
9822 阿尔伯斯等积投影 8821, 8822, 8823, 8824, 8826, 8827
9824 横轴墨卡托投影分带格网系统 8801, 8830, 8831, 8805, 8806, 8807
9826 朗伯等角圆锥投影(西方向) 8801, 8802, 8805, 8806, 8807
9828 邦纳投影(南方向) 8801, 8802, 8806, 8807
9829 极点立体投影(变体 B) 8832, 8833, 8806, 8807
9830 极点立体投影(变体 C) 8832, 8833, 8826, 8827
9831 关岛投影 8801, 8802, 8806, 8807
9832 改进的等距方位投影 8801, 8802, 8806, 8807
9833 双曲线卡西尼-索尔德纳投影 8801, 8802, 8806, 8807
9834 朗伯等积圆柱投影(球面) 8823, 8802, 8806, 8807
9835 朗伯等积圆柱投影 8823, 8802, 8806, 8807

下表显示了 MySQL 识别的投影参数。 识别主要通过权限代码进行。 如果没有权限代码,MySQL 会回退到对参数名称进行不区分大小写的字符串匹配。 有关每个参数的详细信息,请在 EPSG 在线注册表 中按代码查找。

表 15.8 空间参考系统投影参数

EPSG 代码 回退名称(由 MySQL 识别) EPSG 名称
1026 c1 C1
1027 c2 C2
1028 c3 C3
1029 c4 C4
1030 c5 C5
1031 c6 C6
1032 c7 C7
1033 c8 C8
1034 c9 C9
1035 c10 C10
1036 azimuth 圆锥轴的余纬度
1038 ellipsoid_scale_factor 椭球比例因子
1039 projection_plane_height_at_origin 投影平面原点高度
8617 evaluation_point_ordinate_1 评估点坐标 1
8618 evaluation_point_ordinate_2 评估点坐标 2
8801 latitude_of_origin 自然原点的纬度
8802 central_meridian 自然原点的经度
8805 scale_factor 自然原点的比例因子
8806 false_easting 东偏移量
8807 false_northing 北偏移量
8811 latitude_of_center 投影中心的纬度
8812 longitude_of_center 投影中心的经度
8813 azimuth 初始线的方位角
8814 rectified_grid_angle 从校正格网到倾斜格网的角度
8815 scale_factor 初始线上的比例因子
8816 false_easting 投影中心的东距
8817 false_northing 投影中心的北距
8818 pseudo_standard_parallel_1 伪标准纬线的纬度
8819 scale_factor 伪标准纬线上的比例因子
8821 latitude_of_origin 假原点的纬度
8822 central_meridian 假原点的经度
8823 standard_parallel_1, standard_parallel1 第一标准纬线的纬度
8824 standard_parallel_2, standard_parallel2 第二标准纬线的纬度
8826 false_easting 假原点的东距
8827 false_northing 假原点的北距
8830 initial_longitude 初始经度
8831 zone_width 区域宽度
8832 standard_parallel 标准纬线的纬度
8833 longitude_of_center 原点的经度