MySQL 8.0.11 поставляется с каталогом 5108 пространственной системой определений (SRS), и 479 из них являются географическими. Как правило, мы просто ссылаемся на них SRID, но в этом блоге мы будем погружаться в детали и попытаться понять сам определение.
Давайте начнем с SRS, большинство людей знает (хотя они могут не знать, что они это знают): SRID 4326, Всемирная геодезическая система с 1984 г. SRS мы используем каждый раз, когда мы ссылаемся на GPS-координаты:
mysql> SELECT * FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS WHERE SRS_ID=4326\G *************************** 1. row *************************** SRS_NAME: WGS 84 SRS_ID: 4326 ORGANIZATION: EPSG ORGANIZATION_COORDSYS_ID: 4326 DEFINITION: GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]] DESCRIPTION: NULL 1 row in set (0,00 sec)
Всякий раз, когда какая-либо пространственная функция вызываются каждый раз, когда геометрический объект строится в запросе или считывается с диска или памяти, MySQL просматривает SRID этой геометрии, чтобы понять, что означают координаты. Первый раз MySQL встречает SRID, он находит SRID в столбце SRS_ID и считывает и анализирует соответствующее определение из столбца DEFINITION. Остальные столбцы носят только справочную информацию для нас, людей. Определение SRS кэшируются так, что последующие поиски SRID происходят быстро.
Строка определения в формате, называемом Well-Known Text (WKT). WKT используется для определения точек, линий и многоугольников с функцией ST_GeomFromText
, но определение SRS является другой частью этого языка. Это довольно длинная строка с несколькими уровнями вложенности блоков. Это легче читать, если мы распечатаем ее:
GEOGCS[ "WGS 84", DATUM[ "World Geodetic System 1984", SPHEROID[ "WGS 84", 6378137, 298.257223563, AUTHORITY["EPSG","7030"] ], AUTHORITY["EPSG","6326"] ], PRIMEM[ "Greenwich", 0, AUTHORITY["EPSG","8901"] ], UNIT[ "degree", 0.017453292519943278, AUTHORITY["EPSG","9122"] ], AXIS[ "Lat", NORTH ], AXIS[ "Lon", EAST ], AUTHORITY["EPSG","4326"] ]
Все географические определения SRS начинаются со строкой «GEOGCS» (строка 1), коротким для географической системы координат. Далее следует имя (строка 2), которая является только для человека в качестве ссылки. В общем, большинство строк только для информации и не используется MySQL. MySQL заботится о цифрах, потому что те влияют на вычисления.
DATUM(строки 3-12) является определение модели Земли. Это тоже имеет имя (строка 4), а затем определение эллипсоида . Термины сфероида и эллипсоида часто используются как взаимозаменяемые в ГИС. Если вы читали определение Википедии, вы увидите, что сфероид является типом эллипсоида, в частности, эллипсоид вращения. При работе с Землей, мы заинтересованы в сплющенных эллипсоидов, т.е. СФЕРОИДОВ где ось север-юг немного короче оси, проходящей через экватор.
Сфероида также имеет название (строка 6), а затем первые реальные цифры в строке определения: большую полуось (линия 7) и обратный уплощения (строка 8). В этом случае эллипсоидальная модель Земли имеет большую полуось (расстояние от центра до экватора) от 6378137 метров, а малая полуось (половины расстояния между Северным и Южными поляками) является 1 / 298.257223563th короче чем большая полуось. Если обратное уплощение установлено в 0 (теоретически недопустимое значении), Земля является идеальной сферой.
Код AUTHORITY (строка 9) говорит о том, что источник этого определения сфероида является EPSG Dataset, и идентификатор EPSG для сфероида 7030. Аналогичным образом, пункт органа для опорной точки (линия 11) говорит, что это EPSG точка привязка 6326. вы можете посмотреть эти коды в EPSG Online реестре, и вы увидите, что определения там соответствуют определениям MySQL в. Вы также обнаружите, что существует преобразование координат с EPSG кодом 7030, в дополнение к сфероида 7030. Эти номера являются уникальными только в пределах типа элемента, так что эти коды EPSG власти не должны быть ошибочно приняты за НИПИ .
PRIMEM (строки 13-17) указывает, где мы начинаем отсчет значений долготы. Опять же, простое имя меридиана (строка 14) игнорируются MySQL. Что важно, так это количество угловых единиц к востоку от Гринвича (строка 15). В этом случае мы определяем Гринвичский меридиан, который, конечно, является 0 градусов к востоку от Гринвича. Предложение власти (строка 16) говорит, что это EPSG меридиан 8901.
Направление меридиональных мер является всегда Postive номера на востоке от Гринвича, но блок меняется с блоком SRS определением (строки 18-22). Опять же, не обращая внимания на имя UNIT (строка 19), мы получаем коэффициент преобразования в радианы (строка 20). Поскольку 2П радиан приведет вас вокруг всей окружности и 360 градусов делают то же самое, мы имеем 2π / 360 = +0,017453292519943278. Это устройство используется для указания меридиана. Кроме того, устройство используется в координаты широты и долготы геометрий в этом SRS. Код органа (строка 21) представляет собой код, который использует EPSG для угловых градусов.
Первая AXIS (линии 23-26) имеет NAME (строка 24), что MySQL игнорирует. Но мы можем найти то, что другие люди называют широту. Направление AXIS (линия 25) говорит MySQL, что это является широта ось, с положительными числами к северу от экватора. Направление говорит только «Север», что означает положительные значения, идущие на север, но MySQL знает, что это географическая SRS, поэтому север и юг являются угловые меры, то есть широта.
Вторая AXIS (линии 27-30) также имеет удобный для пользователя NAME (строка 28) и направление (линия 29). На этот раз направление на востоке, а это означает, что это долгота измеряется с положительными числами к востоку от меридиана мы видели выше (линии 13-17). Порядок этих двух определений оси является то, что определяет порядок по оси SRS, то есть, что это система широта-долгота, а не система широты долготы.
Окончательный код AUTHORITY (строка 31) является кодом AUTHORITY всей географической SRS. Так как это SRID 4326 и каталог MySQL по SRSS является подмножеством EPSG Dataset, это не удивительно, что это EPSG SRS номер 4326. В MySQL, можно предположить, что EPSG коды SRSS такие же, как SRIDsMySQL,. EPSG Dataset Инструкция 7-1 (п. 5.9) сохраняет за собой два диапазона идентификационных номеров для EPSG SRSS. MySQL зарезервировал те же диапазоны для SRIDs и намерен использовать их только для SRSS из EPSG Dataset.
Все коды AUTHORITY не являются обязательными. Мы могли бы указать тот же SRS без каких-либо кодов authority, и никакие расчеты не изменятся. Тем не менее, коды authority могут быть использованы в будущем для выявления конкретных элементов.
Теперь мы знаем, как анализировать географические определения SRS, как MySQL делает это. Если вы были не уверены в порядке используемых осей или блоков, теперь вы знаете, где найти и как их читать!