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 代表 欧洲石油勘探集团。
-
用户不应该创建 SRIDs 在保留范围内的 SRS。这可能会导致 SRIDs 与未来 MySQL 升级时提供的 SRS 定义冲突,结果是新系统提供的 SRS 不会被安装,或者用户定义的 SRS 将被覆盖。
语句的属性必须满足以下条件:
-
属性可以以任何顺序给出,但不能给出多于一次。
-
NAME 和 DEFINITION 属性是必需的。
-
名称
NAME
srs_name
属性值必须唯一。 组织ORGANIZATION
org_name
和org_id
属性值的组合必须唯一。 -
名称
NAME
srs_name
属性值和组织ORGANIZATION
org_name
属性值不能为空或以空白字符开始或结束。 -
属性规范中的字符串值不能包含控制字符,包括换行符。
-
以下表格显示了字符串属性值的最大长度。
以下是一个示例 CREATE SPATIAL REFERENCE SYSTEM
语句。定义值跨多行重新格式化以提高可读性。(对于语句是合法的,值实际上必须在一行中给出。)
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>
生产规则(即地理和投影 SRS)。 -
有一个可选的、非标准的
<authority>
子句用于<parameter>
。这使得可以通过权威机构而不是名称来识别投影参数。 -
规范不要求
AXIS
子句在GEOGCS
空间参考系统定义中是强制性的。然而,如果没有AXIS
子句,MySQL 无法确定定义是否具有纬度-经度顺序或经度-纬度顺序。MySQL 强制执行非标准要求,即每个GEOGCS
定义必须包含两个AXIS
子句。一个必须是NORTH
或SOUTH
,另一个是EAST
或WEST
。AXIS
子句的顺序确定定义是否具有纬度-经度顺序或经度-纬度顺序。 -
SRS 定义不能包含换行符。
如果SRS定义指定了投影的权限代码(这是推荐的),那么如果定义缺少强制参数,将发生错误。在这种情况下,错误消息将指出问题所在。 MySQL支持的投影方法和强制参数如表15.7,Spatial Reference System投影方法和表15.8,Spatial Reference System投影参数所示。
以下表格显示了MySQL支持的投影方法。 MySQL允许未知的投影方法,但无法检查定义中的强制参数,也无法将空间数据从未知投影中转换出来。有关每个投影的详细解释,包括公式,请参阅EPSG指导说明7-2。
表15.7 Supported Spatial Reference System Projection Methods
EPSG Code | Projection Name | Mandatory Parameters (EPSG Codes) |
---|---|---|
1024 | ||
1027 | ||
1028 | ||
1029 | Equidistant Cylindrical (Spherical) | 8823, 8802, 8806, 8807 |
1041 | Krovak (North Orientated) | 8811, 8833, 1036, 8818, 8819, 8806, 8807 |
1042 | Krovak Modified | 8811, 8833, 1036, 8818, 8819, 8806, 8807, 8617, 8618, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035 |
1043 | Krovak Modified (North Orientated) | 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 | Colombia Urban | 8801, 8802, 8806, 8807, 1039 |
9801 | Lambert Conic Conformal (1SP) | 8801, 8802, 8805, 8806, 8807 |
9802 | Lambert Conic Conformal (2SP) | 8821, 8822, 8823, 8824, 8826, 8827 |
9803 | Lambert Conic Conformal (2SP Belgium) | 8821, 8822, 8823, 8824, 8826, 8827 |
9804 | Mercator (variant A) | 8801, 8802, 8805, 8806, 8807 |
9805 | Mercator (variant B) | 8823, 8802, 8806, 8807 |
9806 | Cassini-Soldner | 8801, 8802, 8806, 8807 |
9807 | Transverse Mercator | 8801, 8802, 8805, 8806, 8807 |
9808 | Transverse Mercator (South Orientated) | 8801, 8802, 8805, 8806, 8807 |
9809 | Oblique Stereographic | 8801, 8802, 8805, 8806, 8807 |
9810 | Polar Stereographic (variant A) | 8801, 8802, 8805, 8806, 8807 |
9811 | New Zealand Map Grid | 8801, 8802, 8806, 8807 |
9812 | Hotine Oblique Mercator (variant A) | 8811, 8812, 8813, 8814, 8815, 8806, 8807 |
9813 | Laborde Oblique Mercator | 8811, 8812, 8813, 8815, 8806, 8807 |
9815 | Hotine Oblique Mercator (variant B) | 8811, 8812, 8813, 8814, 8815, 8816, 8817 |
9816 | Tunisia Mining Grid | 8821, 8822, 8826, 8827 |
9817 | Lambert Conic Near-Conformal | 8801, 8802, 8805, 8806, 8807 |
9818 | American Polyconic | 8801, 8802, 8806, 8807 |
9819 | Krovak | 8811, 8833, 1036, 8818, 8819, 8806, 8807 |
9820 | Lambert Azimuthal Equal Area | 8801, 8802, 8806, 8807 |
9822 | Albers Equal Area | 8821, 8822, 8823, 8824, 8826, 8827 |
9824 | Transverse Mercator Zoned Grid System | 8801, 8830, 8831, 8805, 8806, 8807 |
9826 | Lambert Conic Conformal (West Orientated) | 8801, 8802, 8805, 8806, 8807 |
9828 | Bonne (South Orientated) | 8801, 8802, 8806, 8807 |
9829 | Polar Stereographic (variant B) | 8832, 8833, 8806, 8807 |
9830 | Polar Stereographic (variant C) | 8832, 8833, 8826, 8827 |
9831 | Guam Projection | 8801, 8802, 8806, 8807 |
9832 | Modified Azimuthal Equidistant | 8801, 8802, 8806, 8807 |
9833 | Hyperbolic Cassini-Soldner | 8801, 8802, 8806, 8807 |
9834 | Lambert Cylindrical Equal Area (Spherical) | 8823, 8802, 8806, 8807 |
9835 |
以下表格显示了MySQL识别的投影参数。识别主要是通过权限代码进行的。如果没有权限代码,MySQL将回退到参数名称的不区分大小写的字符串匹配。有关每个参数的详细信息,请在EPSG在线注册表中按代码查找。
表15.8 Spatial Reference System投影参数
EPSG Code | Fallback Name (Recognized by MySQL) | EPSG Name |
---|---|---|
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 | Co-latitude of cone axis |
1038 | ellipsoid_scale_factor | Ellipsoid scaling factor |
1039 | projection_plane_height_at_origin | Projection plane origin height |
8617 | evaluation_point_ordinate_1 | Ordinate 1 of evaluation point |
8618 | evaluation_point_ordinate_2 | Ordinate 2 of evaluation point |
8801 | latitude_of_origin | Latitude of natural origin |
8802 | central_meridian | Longitude of natural origin |
8805 | scale_factor | Scale factor at natural origin |
8806 | false_easting | False easting |
8807 | false_northing | False northing |
8811 | latitude_of_center | Latitude of projection centre |
8812 | longitude_of_center | Longitude of projection centre |
8813 | azimuth | Azimuth of initial line |
8814 | rectified_grid_angle | Angle from Rectified to Skew Grid |
8815 | scale_factor | Scale factor on initial line |
8816 | false_easting | Easting at projection centre |
8817 | false_northing | Northing at projection centre |
8818 | pseudo_standard_parallel_1 | Latitude of pseudo standard parallel |
8819 | scale_factor | Scale factor on pseudo standard parallel |
8821 | latitude_of_origin | Latitude of false origin |
8822 | central_meridian | Longitude of false origin |
8823 | standard_parallel_1, standard_parallel1 | Latitude of 1st standard parallel |
8824 | standard_parallel_2, standard_parallel2 | Latitude of 2nd standard parallel |
8826 | false_easting | Easting at false origin |
8827 | false_northing | Northing at false origin |
8830 | initial_longitude | Initial longitude |
8831 | zone_width | Zone width |
8832 | standard_parallel | Latitude of standard parallel |
8833 |