文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  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 REPLACEIF 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 定义冲突,从而导致新的系统提供的 SRS 未安装用于 MySQL 升级,或者用户定义的 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(修订版 1.00,OGC 01-009,2001 年 1 月 12 日,第 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 原点的经度