Получить многоугольники MySQL - PullRequest
5 голосов
/ 24 февраля 2011

Я создал таблицу в 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?Почему я спрашиваю, значит, позже я хочу выяснить, находится ли точка внутри многоугольника.И для этого я надеюсь, что мне нужны вершины многоугольника.

Ответы [ 2 ]

10 голосов
/ 24 февраля 2011

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

2 голосов
/ 02 сентября 2016

Если вы хотите узнать, находится ли точка в многоугольнике, вам не нужно извлекать отдельные вершины, чтобы сделать это. Для этого в 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)")
);
...