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 代表 歐洲石油調查小組 (European Petroleum Survey Group)。
使用者不應在保留的範圍內建立具有 SRID 的 SRS。這樣做會導致 SRID 與未來隨 MySQL 發布的 SRS 定義發生衝突,導致新的系統提供的 SRS 無法安裝以進行 MySQL 升級,或導致使用者定義的 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 實作規範:座標轉換服務,修訂版 1.00,OGC 01-009,2001 年 1 月 12 日,第 7.2 節中定義的文法。此規範可在 http://www.opengeospatial.org/standards/ct 取得。
MySQL 將以下變更納入規範:
僅實作
<horz cs>
產生規則(即,地理和投影 SRS)。對於
<parameter>
,有一個可選的、非標準的<authority>
子句。這使得可以透過授權而非名稱來識別投影參數。該規範並未強制要求在
GEOGCS
空間參考系統定義中必須包含AXIS
子句。但是,如果沒有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 | 原點的經度 |