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 實作規範:座標轉換服務,修訂版 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 | 原點經度 |