Простой вопрос, мне интересно, реализован ли метод centroid в пространственных расширениях MySQL. Я просмотрел документацию, но не смог найти окончательного ответа.Является ли метод centroid реализованным в MySQL пространственном?
ответ
В общем: Да
MultiPolygon: Нет
Спецификация OpenGIS также определяет следующие функции, которые MySQL не реализует:
Centroid (mpoly)
Возвращает математический центроид для Значение MultiPolygon mpoly как Точка. Результат не гарантируется на MultiPolygon.
http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#function_centroid
Вы можете получить центроид каждого полигона, в MultiPolygon, хотя это не описано в руководстве по MySQL, используя функцию geometryn. Для exmaple,
select astext(centroid(geometryn(geomfromtext('MultiPolygon(((0 0,0 3,3 3,3 0,0 0)),((10 10,10 20,20 20,20 10,10 10)))'),2)));
возвращает
POINT(15 15)
который является Центроид 2-го полигона внутри MultiPolygon. Во всяком случае, для MultiPolygon, вероятно, не имеет большого смысла иметь центроид.
Да, вы можете прочитать его с MySQL - Polygon Property Functions. Посмотрите ниже страницы для первого комментария пользователя. Там говорится:
Есть не только эти функции. Я думаю, что это не достаточно ясно в документах. например, функция MultiPolygon 'Centroid' работает и для полигонов.
Пример:
mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0))';
mysql> select astext(Centroid(PolygonFromText(@poly)));
Внешних ссылки утверждают, что центроид (mpoly) доступна. –