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 被覆盖。
语句的属性必须满足以下条件
属性可以按任何顺序给出,但任何属性都不能给出多次。
NAME
和DEFINITION
属性是必需的。NAME
srs_name
属性值必须唯一。ORGANIZATION
org_name
和org_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
子句。 一个必须是NORTH
或SOUTH
,另一个必须是EAST
或WEST
。AXIS
子句顺序决定了定义是在纬度-经度顺序还是经度-纬度顺序中具有轴。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 | 原点的经度 |