15.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
该语句创建一个空间参考系统(SRS)定义,并将其存储在数据字典中。它需要SUPER
特权。生成的数据字典条目可以使用INFORMATION_SCHEMA
ST_SPATIAL_REFERENCE_SYSTEMS
表来检查。
SRID值必须唯一,如果不指定OR REPLACE
或IF NOT EXISTS
,如果已经存在具有给定srid
值的SRS定义,则发生错误。
使用CREATE OR REPLACE
语法,任何已有的SRS定义具有相同SRID值将被替换,除非该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
语法,任何已有的SRS定义具有相同SRID值将被忽略,并出现警告。
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 在保留范围内。这样做将会导致 SRIDs 与 MySQL 发布的 SRS 定义冲突,结果是新系统提供的 SRS 不安装或用户定义的 SRS 将被覆盖。
语句属性必须满足这些条件:
-
属性可以任意顺序,但不能重复出现一个属性。
-
语句中必须包含
NAME
和DEFINITION
属性。 -
语句中的
NAME
srs_name
属性值必须唯一。ORGANIZATION
org_name
和org_id
属性值的组合也必须唯一。 -
语句中的
NAME
srs_name
属性值和ORGANIZATION
org_name
属性值不能是空或以空格开头结尾。 -
属性指定中的字符串值不能包含控制字符,包括换行符。
-
以下表格显示了字符串属性值的最大长度。
表15.6 CREATE SPATIAL REFERENCE SYSTEM 属性长度
Attribute Maximum Length (characters) 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 实施规范:坐标变换服务》Revision 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 就会出现错误。在这种情况下,错误信息将指出问题所在。MySQL 支持的投影方法和必需参数如表15.7,“支持的空间参考系统投影方法”和表15.8,“空间参考系统投影参数”中所示。
MySQL 支持的投影方法表。MySQL 允许未知的投影方法,但不能检查必需参数定义,也不能将空间数据转换为或从未知投影中。关于每种投影的详细解释,包括公式,请参阅EPSG 指南 7-2。
表15.7 支持的空间参考系统投影方法
EPSG Code | Projection Name | Mandatory Parameters (EPSG Codes) |
---|---|---|
1024 | Popular Visualisation Pseudo Mercator | 8801, 8802, 8806, 8807 |
1027 | 球面 Lambert 等面积投影 | 8801, 8802, 8806, 8807 |
1028 | 等距圆柱投影 | 8823, 8802, 8806, 8807 |
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 | 圆柱 Lambert 等面积投影 | 8823, 8802, 8806, 8807 |
MySQL 认识的投影参数表。主要是通过权威代码进行识别。如果没有权威代码,MySQL 将回退到不区分大小写的字符串匹配方式来匹配参数名称。关于每个参数的详细信息,请在EPSG 在线注册表中查找。
表15.8 空间参考系统投影参数
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 | 中心经度 | 起点经度 |