MySQL - геопространственный объект - PullRequest
2 голосов
/ 16 июня 2009

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

select * from table_name, где st_contains (столбец, st_setsrid (st_makepoint (-92.095109, 46.804100), 4326));

столбец является мультиполией (((баллы)))

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

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

1 Ответ

2 голосов
/ 16 июня 2009

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 есть более короткая строка для мотыги в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...