Получить полигональные точки mysql


Я создал таблицу в mysql для хранения полигональных данных:

CREATE TABLE geom (g GEOMETRY);

И я вставил в него многоугольник, используя следующий синтаксис:

INSERT INTO geom (g)
VALUES(PolygonFromText('POLYGON((
9.190586853 45.464518970,
9.190602686 45.463993916,
9.191572471 45.464001929,
9.191613325 45.463884676,
9.192136130 45.463880767,
9.192111509 45.464095594,
9.192427961 45.464117804,
9.192417811 45.464112862,
9.192509035 45.464225851,
9.192493139 45.464371079,
9.192448471 45.464439002,
9.192387444 45.464477861,
9.192051402 45.464483037,
9.192012814 45.464643592,
9.191640825 45.464647090,
9.191622331 45.464506215,
9.190586853 45.464518970))')
);

Теперь как я могу вернуть вершины (точки) этого многоугольника в mysql? Почему я спрашиваю, означает, что позже я хочу выяснить, находится ли точка внутри многоугольника. И для достижения этого, я надеюсь, мне понадобятся вершины многоугольника.

Author: shasi kanth, 2011-02-24

2 answers

Если вы хотите вернуть WKT: SELECT AsText(g) FROM geom;

 9
Author: Wrikken, 2011-02-24 19:13:44

Если вы хотите определить, находится ли точка в многоугольнике, вам не нужно выводить отдельные вершины для этого. Для этого в MySQL есть функция (5.6+):

SELECT ST_Contains(PolygonFromText('POLYGON((
9.190586853 45.464518970,
9.190602686 45.463993916,
9.191572471 45.464001929,
9.191613325 45.463884676,
9.192136130 45.463880767,
9.192111509 45.464095594,
9.192427961 45.464117804,
9.192417811 45.464112862,
9.192509035 45.464225851,
9.192493139 45.464371079,
9.192448471 45.464439002,
9.192387444 45.464477861,
9.192051402 45.464483037,
9.192012814 45.464643592,
9.191640825 45.464647090,
9.191622331 45.464506215,
9.190586853 45.464518970))'), PointFromText("POINT(10 42)")
);
 2
Author: jcorry, 2016-09-02 14:39:20