2013-02-24 4 views
1

공간 데이터에 postgis와 함께 postgres를 사용하고 있습니다. 나는 교차점 집합을 포함하는 테이블을 가지고 있는데, 아래 테이블의 구조가있다.단일 점에 점을 합치는 것

enter image description here

각 점은 두 개의 도로 사이의 교차를 나타낸다. 그러나 나는 3 개의 길이 2보다는 오히려 만나는 어떤 길을 가지고있다. 그리고 그것을 위해, 3 개의 별개의 점이 만들어지고있다. 다음 그림은이 문제를 보여줍니다.

enter image description here

난 그냥 한 지점에 세 가지 포인트를 수집하고자하는 그 시점이 아니라 세 개의 서로 다른 길을하는 것보다 모든 세 개의 도로의 교차점을 나타내는 것입니다.

나는 st_collect와 st_convexhull 및 st_centroid를 사용하여 점에서 단일 점을 찾으려고했습니다. 그러나 나는 그것이 작동하지 않을 수 있습니다, 아마 내가 잘못된 접근 방식을 취하고있다.

이러한 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

1

여기 예제에서는 st_convexhull을 사용하지 않고 3 점에서 중심점을 계산하는 방법을 보여줍니다. 왜 내가 convexhull을 사용하는지 알고 있는지 잘 모르겠습니다.

with mypoints as (
    select 1 id, 1 cat, ST_MakePoint(5, 5) geom 
    union all 
    select 2 id, 1 cat, ST_MakePoint(5, 10) geom 
    union all 
    select 3 id, 1 cat, ST_MakePoint(8, 8) geom 
) 
select st_astext(st_centroid(st_collect(geom))) from mypoints group by cat;