### 13.1.19 创建空间参考系统语句

[](<>)

```
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
```

该声明创建了一个[空间参考系统](spatial-reference-systems.html)(SRS) 定义并将其存储在数据字典中。它需要[`极好的`](privileges-provided.html#priv_super)特权。可以使用以下命令检查生成的数据字典条目`INFORMATION_SCHEMA` [`ST_SPATIAL_REFERENCE_SYSTEMS`](information-schema-st-spatial-reference-systems-table.html)桌子。

SRID 值必须是唯一的，所以如果两者都不是`或更换`也不`如果不存在`如果指定了 SRS 定义，则会发生错误*`斯里德`*值已经存在。

和`创建或替换`语法，任何现有的具有相同 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;
```

和`创建...如果不存在`语法，具有相同 SRID 值的任何现有 SRS 定义都会导致新定义被忽略并出现警告。

SRID 值必须在 32 位无符号整数范围内，但有以下限制：

-   SRID 0 是有效的 SRID，但不能与[`创建空间参考系统`](create-spatial-reference-system.html).

-   如果该值在保留的 SRID 范围内，则会出现警告。保留范围是[0, 32767]（由 EPSG 保留），[60,000,000, 69,999,999]（由 EPSG 保留），和[2,000,000,000, 2,147,483,647]（由 MySQL 保留）。EPSG 代表[欧洲石油调查组](http://epsg.org).

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

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

-   属性可以按任意顺序给出，但不能多次给出属性。

-   这`姓名`和`定义`属性是必需的。

-   这`姓名` *`srs_name`*属性值必须是唯一的。的组合`组织` *`组织名称`*和*`org_id`*属性值必须是唯一的。

-   这`姓名` *`srs_name`*属性值和`组织` *`组织名称`*属性值不能为空或以空格开头或结尾。

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

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

     [](<>)

     **表 13.6 创建空间参考系统属性长度**

    | 属性 | 最大长度（字符） |
    | --- | -------- |
    | `姓名` | 80 |
    | `定义` | 4096 |
    | `组织` | 256 |
    | `描述` | 2048 |

    这是一个例子[`创建空间参考系统`](create-spatial-reference-system.html)陈述。这`定义`值被重新格式化为多行以提高可读性。（为了使声明合法，实际上必须在一行中给出值。）


```
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 实施规范：坐标转换服务*，修订版 1.00，OGC 01-009，2001 年 1 月 12 日，第 7.2 节。该规范可在<http://www.opengeospatial.org/standards/ct>.

MySQL 将这些更改合并到规范中：

-   只有`<horz cs>`实施生产规则（即地理和预计的 S​​RS）。

-   有一个可选的，非标准的`<权威>`条款`<参数>`.这使得可以通过权限而不是名称来识别投影参数。

-   规范不做`轴`强制性条款`GEOGCS`空间参考系统定义。但是，如果没有`轴`子句，MySQL 无法确定定义是否具有纬度-经度顺序或经度-纬度顺序的轴。MySQL 强制执行非标准要求，即每个`GEOGCS`定义必须包括两个`轴`条款。一个必须是`北`要么`南`， 和另一个`东方`要么`西`.这`轴`子句顺序确定定义是否具有纬度-经度顺序或经度-纬度顺序的轴。

-   SRS 定义可能不包含换行符。

    如果 SRS 定义为投影指定了权限代码（推荐），则如果定义缺少强制参数，则会发生错误。在这种情况下，错误消息会指出问题所在。MySQL 支持的投影方式和强制参数见[表 13.7，“支持的空间参考系统投影方法”](create-spatial-reference-system.html#supported-srs-projections-table)和[表 13.8，“空间参考系统投影参数”](create-spatial-reference-system.html#srs-projection-parameters-table).

    有关为 MySQL 编写 SRS 定义的更多信息，请参阅[MySQL 8.0 中的地理空间参考系统](https://mysqlserverteam.com/geographic-spatial-reference-systems-in-mysql-8-0/)和[MySQL 8.0 中的投影空间参考系统](https://mysqlserverteam.com/projected-spatial-reference-systems-in-mysql-8-0/)

    下表显示了 MySQL 支持的投影方法。MySQL 允许未知投影方法，但无法检查强制参数的定义，也无法将空间数据转换为未知投影或从未知投影转换。有关每个投影如何工作的详细说明（包括公式），请参阅[EPSG 指导说明 7-2](http://www.epsg.org/Portals/0/373-07-2.pdf).

[](<>)

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

| EPSG代码 | 投影名称 | 强制参数（EPSG 代码） |
| ------ | ---- | ------------- |
| 1024 | 流行的可视化伪墨卡托 | 8801、8802、8806、8807 |
| 1027 | 兰伯特方位角等面积（球面） | 8801、8802、8806、8807 |
| 1028 | 等距圆柱 | 8823、8802、8806、8807 |
| 1029 | 等距圆柱（球面） | 8823、8802、8806、8807 |
| 1041 | Krovak（北向） | 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 | Krovak Modified（北向） | 8811、8833、1036、8818、8819、8806、8807、8617、8618、1026、1027、1028、1029、1030、1031、1032、1033、1034、1035 |
| 1051 | Lambert Conic Conformal (2SP Michigan) | 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 | Lambert Conic Conformal (2SP Belgium) | 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 | Hotine Oblique Mercator（变体 A） | 8811、8812、8813、8814、8815、8806、8807 |
| 9813 | 拉伯德斜墨卡托 | 8811、8812、8813、8815、8806、8807 |
| 9815 | Hotine Oblique Mercator（变体 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 | Lambert Conic Conformal (West Oriented) | 8801、8802、8805、8806、8807 |
| 9828 | Bonne（南向） | 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 在线注册](https://www.epsg-registry.org).

[](<>)

**表 13.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 | 方位角 | 锥轴同纬度 |
| 1038 | 椭球体\_规模\_因素 | 椭球比例因子 |
| 1039 | 投影\_飞机\_高度\_在\_起源 | 投影平面原点高度 |
| 8617 | 评估\_观点\_纵坐标\_1 | 评价点纵坐标 1 |
| 8618 | 评估\_观点\_纵坐标\_2 | 评价点纵坐标 2 |
| 8801 | 纬度\_的\_起源 | 自然起源的纬度 |
| 8802 | 中央\_子午线 | 自然起源经度 |
| 8805 | 规模\_因素 | 自然来源的比例因子 |
| 8806 | 错误的\_东东 | 假东移 |
| 8807 | 错误的\_北上 | 伪北向 |
| 8811 | 纬度\_的\_中央 | 投影中心纬度 |
| 8812 | 经度\_的\_中央 | 投影中心经度 |
| 8813 | 方位角 | 初始线方位角 |
| 8814 | 已整改\_网格\_角度 | 从校正到倾斜网格的角度 |
| 8815 | 规模\_因素 | 初始行的比例因子 |
| 8816 | 错误的\_东东 | 在投影中心向东 |
| 8817 | 错误的\_北上 | 投影中心北向 |
| 8818 | 伪\_标准\_平行线\_1 | 伪标准平行纬度 |
| 8819 | 规模\_因素 | 伪标准并行上的比例因子 |
| 8821 | 纬度\_的\_起源 | 假原点纬度 |
| 8822 | 中央\_子午线 | 假原点经度 |
| 8823 | 标准\_平行线\_1、标准\_并行1 | 第一标准纬线的纬度 |
| 8824 | 标准\_平行线\_2、标准\_并行2 | 第二标准平行纬度 |
| 8826 | 错误的\_东东 | 以假原点东移 |
| 8827 | 错误的\_北上 | 在假原点北移 |
| 8830 | 最初的\_经度 | 初始经度 |
| 8831 | 区\_宽度 | 区域宽度 |
| 8832 | 标准\_平行线 | 标准平行纬度 |
| 8833 | 经度\_的\_中央 | 原产地经度 |
