# How to find the center point of MULTILINESTRING?

How to find the center point of MULTILINESTRING, which lies on the multiline?

-
What software are you using? The more details you give, the better an answer you will receive. – sgrieve Sep 17 '12 at 13:22
I am using SQL in PostGIS. – Marko Sep 17 '12 at 13:26

Here's an algorithm that will work for a use case such as a single road with a T-intersection.

1. Find the ST_Centroid(geometry g1);
2. Choose the linestring from the MULTILINESTRING with the min(ST_Distance(centroid,linestring))
3. ST_Line_Interpolate_Point(line, ST_Line_Locate_Point(line, centroid))

or even simpler

``` SELECT ST_ClosestPoint(geom, ST_Centroid(geom) FROM table; ```

-

Have a look at `ST_Line_Interpolate_Point()`. If you give 0.5 as the second parameter, it will return a point 1/2 way along the line. BTW, if your layer is a MULTILINESTRING, then "center point" really doesn't have any meaning. For example, a MULTILINESTRING can be non-contiguous or intersecting LINESTRINGs.

-

I have found, the function is called ST_PointOnSurface.

-

Technicly speaking , you wont find it everytime. MULTILINESTRING may be collection of strings which may or may not touch eachother. If Your data type is LINESTRING then you can have middle point every time, @Micha has correct answer for that.

-