Вопрос

Я работаю в Postgis над точками в поли, и у меня есть эта функция:

выберите * из table_name, где st_contains(column, st_setsrid(st_makepoint(-92.095109, 46.804100),4326));

столбец представляет собой мультиполи(((точки)))

Я пытаюсь найти способ выполнить подобное упражнение с MySQL и задаюсь вопросом, существуют ли для этого подобные функции.Сайт разработки MySQL очень ограничен описаниями и документацией по Multipolys.

Кто-нибудь делал что-то подобное?

Это было полезно?

Решение

MySQL не реализует множество пространственных запросов - я не знаю наверняка о содержании, но есть способы аппроксимации его и других функций.Например, вы можете определить расстояния между точками, вытащив все результаты с координатами в заданном прямоугольнике, а затем вычислив расстояние, как описано. здесь. Вы также можете использовать прямоугольники для приближения вашего contains проблема.Во-первых, более общий синтаксис WKT на ваш выбор:

select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

Я думаю, что открытая спецификация для contains не реализован, но существует функция MySQL для использования минимальный ограничивающий прямоугольник чтобы приблизительно определить, находится ли ваша точка в многоугольнике:

select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');

В итоге я стал использовать много прямоугольников в MySQL, потому что внешние границы наборов координат легко вычислить.В целом PostGIS намного лучше, но при необходимости вы можете выполнить несколько операций между базами данных.

ОБНОВЛЯТЬ:После того как этот вопрос был задан хорошее резюме было опубликовано на opengeo.org;кажется, что даже там, где это не очевидно или не указано, MySQL часто использует MBR.Также обратите внимание на собственные типы Postgres. point, lseg, box, path, polygon, и circle если вы хотите больше узнать о том, как работает PostGIS и почему его разработчикам 2D-функций в целом нужно меньше времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top