база данных — Найти радиус круга в PostGIS, используя запрос в php?

У меня есть тип геометрии, определенный для полигонов и окружности в PostGIS, и теперь мне нужно найти радиус окружности в этом типе геометрии ??
Я нашел центр с помощью
ST_X (ST_ASTEXT (ST_CENTROID (shape))) AS lat,
ST_Y (ST_ASTEXT (ST_CENTROID (shape))) как lgt,
Может ли кто-нибудь помочь мне получить радиус ??

0

Решение

Вы можете использовать ST_Envelope функция, чтобы получить ограничивающий прямоугольник любого многоугольника (не просто круг). Затем вы можете использовать ST_XMin, ST_YMin, ST_XMax а также ST_YMax функции для извлечения ширины и высоты. Поскольку это круг, вы можете использовать любой, так что-то вроде:

SELECT (ST_XMax(bbox)-ST_XMin(bbox))/2 as radius
FROM
(SELECT ST_Envelope(shape) as bbox from sometable) env

где подзапрос — просто сокращение, чтобы избежать необходимости дважды вызывать ST_Envelope, но вы также можете написать,

SELECT (ST_XMax(ST_Envelope(shape)) - ST_XMin(ST_Envelope(shape)))/2 as radius
FROM sometable

который кажется короче, но я чувствую себя менее элегантно, и был бы длиннее, если бы вы хотели рост. Оптимизатор запросов будет рассматривать их как один и тот же запрос в любом случае.

4

Другие решения

Других решений пока нет …