Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  CREATE SPATIAL REFERENCE SYSTEM Statement

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 语法,任何具有相同 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_nameorg_id 属性值的组合必须唯一。

  • 名称 NAME srs_name 属性值和组织 ORGANIZATION org_name 属性值不能为空或以空白字符开始或结束。

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

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

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

    Attribute Maximum Length (characters)
    NAME
    DEFINITION
    ORGANIZATION
    DESCRIPTION

以下是一个示例 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 子句。一个必须是 NORTHSOUTH,另一个是 EASTWESTAXIS 子句的顺序确定定义是否具有纬度-经度顺序或经度-纬度顺序。

  • 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