2010-02-19 3 views

ответ

5

В общем: Да

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

1

Да, вы можете прочитать его с 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)));