2013-12-09 3 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

대단히 감사합니다. 나는 네가 작성한 것에 십자가의 결과에 도달하기 위해 실제로 중첩 된 루프를 시도했다. set1.id가! = 을 set2.id WHERE .. – jugoslaviaa

+0

을 거기에 거리를 추가 할 시도해 I'll 그것은이 SELECT set1.id 같은 순간에 작동은 SET2, geom_tab_1 SET1로부터 geom_tab_1을 을 set2.id ORDER BY ST_Distance (set1.the_geom, set2.the_geom) DESC 제한 1; 그러나 출력으로, 나는 포인트 쌍을 가지고 있습니다. 거리 정보를 출력에 어떻게 추가 할 수 있습니까? – jugoslaviaa

관련 문제