I have a table containing a set of points of intersections.

Most of the roads intersects whith just one road BUT i have some roads which intersects with two, therefore three different point of intersection has been created. BUT, i want only one point of intersection for all the three distinct roads.

Any suggestion how I can merge the 3 points to just one where there is such situation.

I am using postgresql with postgis

The following is the table where i have the points of intersection

enter image description here

The following is a graphical screenshot of the situation.

enter image description here

1 Answer 1


You could write a script or query to identify those points which share intersections (i.e. find where road A intersects with B and C plus where road C intersects with B) and then derive the average of the point geometries. However, this is dangerous because roads B and C could intersect legitimately somewhere else, so you will have to put a distance constraint on the points to allow them to be considered for merger.

An alternative and possibly easier approach would be to collapse all your roads to centerlines and then re-calculate your intersections. You would need to be careful about roads which cross over each other where there is no intersection (as per your image - presumably a fly-over). How you handle that will depend on what attributes you have in the road network (e.g. many transport datasets include attributes for layering of roads) and how the geometry is created (i.e. do roads only ever intersect at their endpoints, or can a side road join a main road at a mid-point vertex?)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.