2013-02-24 5 views
1

J'utilise postgres avec postgis pour les données spatiales. J'ai une table contenant un ensemble de points d'intersections, celle ci-dessous est la structure de la table;Joindre des points à un seul point

enter image description here

Chaque point représente une intersection entre deux routes. MAIS j'ai quelques routes où trois routes se rencontrent plutôt que deux et pour cela, 3 points distincts sont créés. L'image suivante montre le problème.

enter image description here

Je voudrais recueillir trois points distincts en un seul point et ce point représenterait l'intersection de toutes les trois routes plutôt que d'avoir trois routes distinctes. Je pensais utiliser st_collect et st_convexhull et que st_centroid pour trouver un seul point parmi les points. MAIS je ne peux pas le faire fonctionner, probablement je prends la mauvaise approche.

Quel est le meilleur moyen de résoudre ce problème?

Répondre

1

Cet exemple montre comment calculer le point centroïde à partir de 3 points, sans utiliser st_convexhull, je ne suis pas sûr de comprendre pourquoi vous voulez utiliser 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; 
Questions connexes