Mysql - преобразовать точечную геометрию в британской национальной сетке (OSGB36) в широту / долготу (wgs84) - PullRequest
0 голосов
/ 04 января 2019

У меня есть дамп данных (csv) географических названий от https://www.ordnancesurvey.co.uk/business-and-government/help-and-support/products/os-open-names.html

Мне нужно импортировать это в mysql, однако в координатах геометрии используется BNG (OSGB36). Есть ли в Mysql какие-либо функции для преобразования этих координат в wgs84 lat / long или есть другой метод sql для достижения этой цели?

другой вариант, возможно, загружает его в postgis - есть ли у postgis какая-либо функция для преобразования BNG в lat / long? Возможно, я мог бы сделать это, а затем экспортировать данные после преобразования и загрузить их в MySQL?

В postgis я мог бы сделать что-то следующее (не проверено)

select AddGeometryColumn('locations', 'the_geom', 27700, 'POINT', 2);

-- X and Y are the BNG co-ordinates
UPDATE locations SET the_geom = ST_GeomFromText('POINT(' || x || ' ' || y || ')', 27700 );

alter table locations add column lat real;

alter table locations add column long real;

update locations set long=st_x(st_transform(the_geom,4326)), 
                      lat=st_y(st_transform(the_geom,4326));

Возможно ли выполнять функции такого типа в mysql - в основном это эквивалентные функции в mysql. Я не могу понять синтаксис? Следующее не работает в MySQL:

update locations set long=ST_X(ST_Transform(the_geom,4326)), 
                  lat=ST_Y(ST_Transform(the_geom,4326));

Я получаю ошибку function ST_Transform does not exist. Я использую MySQL 5.7

* ОБНОВЛЕНИЕ * Пример данных:

 NAME1      LOCAL_TYPE  GEOMETRY_X  GEOMETRY_Y  DISTRICT_BOROUGH    REGION      COUNTRY 
 Southport  Town        333510      417225      Sefton              North West  England 

1 Ответ

0 голосов
/ 06 января 2019

Ответ, если все места, здесь

Ответ Хартмута Хольцграфе в этом комментарии.

Пока свойство SRID в MySQL просто фиктивное, оно хранится как часть метаданных геометрии, но все фактические вычисления игнорируют ее и расчеты выполняются в предположении евклидовой (плоской) геометрии.

Так что ST_Transform на самом деле ничего не сделает на этом этапе.

Я думаю, что то же самое относится и к MariaDB, по крайней мере, к знанию Базовая страница для функции SRID () по-прежнему гласит:

В этом WorlLog обсуждается ход реализации ST_Transform.

MySQL 8.0 делает реализованным: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html#function_st-transform

Итак, решение может потребует обновления до MySQL 8.0.

В журнале изменений для самой последней версии 8.0.13 написано:

----- 2018-10-22 8.0.13 Общая доступность - - -----

MySQL теперь реализует ST_Transform () пространственная функция для использования при преобразовании значений геометрии из одного система пространственной привязки (SRS) к другому. В настоящее время он поддерживает конверсия между географическими СГД. Подробнее см. Пространственный оператор Функции .

...