Чи зберігає MySQL типи даних типу LAT LNG або LNG LAT?


9

Я звик бачити формат розташування як широту з подальшим довготою, але, використовуючи бібліотеки, я вважаю, що я розумію MySQL, щоб зберігати його як POINT(LNG LAT)зворотний порядок. Моя бібліотека неправильна чи це фактичний формат? Я не можу знайти цю деталь у документації на MySQL.


Ви , ймовірно , може дати це в такий спосіб: stackoverflow.com/questions/159255 / ...
codedawg82

Відповіді:


14

Синтаксис конструктора

Подивившись на посилання на просторову функцію, ви побачите

Point(x, y)
Constructs a Point using its coordinates

Це не зовсім правильно. Усі реалізації ГІС повинні виконувати (x,y)для проектованих координат, що є (long,lat). Але, на геодезичних кординатних системах є певна розбіжність щодо того, що робити. MySQL (і SQL Server), (lat,long)але PostGIS підтримує (long,lat)всюди.

Це порушених в специфікації OpenGIS® реалізації стандарту для географічної інформації - Простий доступ до функції - Частина 2: варіант SQL ,

  • Для геодезичних КРС, що мають еліпсоїдальну 2-D систему координат, двовимірні осі еліпсоїдальної системи координат мають геодезичну широту, позитивну на північ та геодезичну довготу, позитивну на схід. Напрямок осі має бути відповідно "північ" та "схід".
  • Для геодезичних КРС, що мають тривимірну еліпсоїдальну систему координат, назва та абревіатура горизонтальних осей у рядку WKT повинні відповідати вимогам у пункті (ii). Назва вертикальної осі має бути "еліпсоїдальна висота"; абревіатура вертикальної осі має бути "h" і повинна бути включена при включенні абревіатур для горизонтальних осей.

Зауважте, що вищезазначені слова знаходяться дослівно в Географічній інформації - Відомому текстовому поданні координатних систем відліку

Навіть ще в 1,1 специфікації,

Просторова система відліку, яка також називається системою координат, - це географічна (широта-довгота) , проектована (X, Y) або геоцентрична (X, Y, Z) система координат.

Зважаючи на це, схоже, що PostGIS і Oracle і багато інших сторонніх бібліотек підтримують (x,y,[z])усі типи точок. Це є порушенням специфікації для WKT, але є досить поширеною умовою. Наприклад, GeoJSON також робить це,

Координати точок у порядку x, y (на схід, північ для прогнозованих координат, довготи та широти для географічних координат)

І, (лат, довгий) впорядкування явно визначається EPSG для SRSID 4326, .

2D або 3D система координат, в якій положення задається геодезичною широтою, геодезичною довготою та (у тривимірному випадку) еліпсоїдальною висотою, що використовується в географічних КРС.

Ви також можете розглянути блог Пола Рамзі (Капітан ПостГІС) на цю тему під назвою "Давайте подзвонимо цілу річ"

Благодаті

Як особлива примітка, MySQL пропонує дві нові функції суміші,

Ці функції стоять в стороні від ST_X()і ST_Y()і вимагають географічної SRS або вони кидають виняток і помилки.

Зберігання

Від док

Внутрішньо MySQL зберігає значення геометрії у форматі, не ідентичному ні формату WKT, ні WKB. (Внутрішній формат схожий на WKB, але з початковими 4 байтами для позначення SRID.)

Зберігання визначено тут .

Table 11.1 WKB Components Example

Component       Size    Value
Byte order      1 byte  01
WKB type        4 bytes 01000000
X coordinate    8 bytes 000000000000F03F
Y coordinate    8 bytes 000000000000F0BF

0

Простий спосіб перевірити замовлення - це вихід із широти діапазону:

SELECT ST_Longitude(ST_SRID(POINT(45, 160), 4326));

Помилка 3732 (22S03): Параметр функції st_srid містить геометрію з широтою 160,000000, яка знаходиться поза діапазоном. Він повинен бути в межах [-90.000000, 90.000000];

Слідкуйте за тим, щоб порядок мінявся залежно від функцій, які ви використовуєте:

SELECT ST_Longitude(ST_SRID(POINT(45, 90), 4326));
SELECT ST_Longitude(ST_GeomFromText('POINT(45 90)', 4326));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.