2013-12-09 2 views
0

У меня очень маленькая база данных, которая включает в себя 6 пунктов, с этими столбцами id, the_geom, descr. И моя цель написать функцию PL/pgSQL, которая находит пару точек, расстояние между которыми максимальнее. В качестве вывода я хотел бы показать id или descr двух точек, а также расстояние между ними.Поиск пары точек, расстояние друг от друга которых максимальны

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

ответ

1

Вы можете попробовать что-то вроде кросс-соединения, чтобы найти все комбинации, а затем упорядочить разницу. Если имя таблицы было Foo что-то подобное:

SELECT set1.id, set2.id, abs(set1.the_geom - set2.the_geom) --- May want to use earth_distance extension ehre 
FROM foo set1, foo set2 
WHERE set1.id != set2.id 
ORDER BY 3 DESC; 

И если вам нужно расстояние земли для расчета самого расстояния - http://www.postgresql.org/docs/9.3/static/earthdistance.html

+0

Большое спасибо. Я пробовал на самом деле вложенный цикл, чтобы достичь результата перекрестного соединения, что вы написали. I'll дать попробовать, чтобы добавить расстояние в нем .. – jugoslaviaa

+0

Он работает в данный момент, как этот ВЫБОР set1.id, set2.id ОТ geom_tab_1 set1, geom_tab_1 set2 ГДЕ set1.id! = Set2.id ORDER BY ST_Distance (set1.the_geom, set2.the_geom) DESC limit 1; Но в качестве вывода у меня есть только пара точек. Как я могу добавить информацию о расстоянии для вывода? – jugoslaviaa

Смежные вопросы