Как десериализовать в MySQL данные полигона для получения широты/долготы?

Я сохранил в одно поле таблицы геопространственные данные. Его тип Polygon.

Если использовать такой запрос:

SELECT AsWKT(area) as `polygon` FROM geo.info_buildings;

Я получаю следующий тип результата, например:

POLYGON((55.4295824 36.8635427),(55.4296539 36.8636714),
(55.4291776 36.8644788),(55.4290999 36.86435)

Я хочу знать, как я могу разобрать/десериализовать объект Polygon из команд SQL таким образом, чтобы я мог получить longitude/latitude из каждой точки Polygon.

Насколько я понимаю, способ десериализации:

Внимание

У меня не было хороших навыков в SQL, поэтому следующий псевдокод - это всего лишь концепция/идея, так что будьте терпеливы и добры, пожалуйста :) и простите мне мое отсутствие знаний в области MySQL.

1). Сделайте что-то похожее на блок foreach().

Псевдокод:

foreach (Point p in Polygon) { ... }

2). Затем в этом блоке foreach сделайте что-нибудь. как:

foreach (Point p in Polygon)
{
    SET @var1 = p.GetLatitude();
    SET @var2 = p.GetLongitude();
}

person Community    schedule 04.10.2013    source источник


Ответы (1)


чтобы извлечь точки многоугольника или линии, вы должны использовать "NumPoints (ls)" для определения количества точек, то необходимо использовать команду PointN (ls, N), чтобы просмотреть их одну за другой и извлечь координаты, по следующей ссылке вы можете найти пример каждой

http://dev.mysql.com/doc/refman/5.6/en/geometry-property-functions.html

person phipex    schedule 12.10.2013