[postgis-users] Points in a geometry.

Kevin Neufeld kneufeld at refractions.net
Wed Feb 4 09:25:18 PST 2009

Hi Paul,

Yes, there is a way.

ST_PointN will extract the Nth point from a LINESTRING.  When used with generate_series, you can extract all POINTs from 

ST_GeometryN will extract the Nth geometry in a MULTILINESTRING.  Again, use generate_series to extract all LINESTRINGs 

ST_Boundary will extract the boundary from a MULTIPOLYGON as a MULTILINESTRING.

So, put together, to extract all points from a table with MULTILINESTRINGs:
       generate_series(1, ST_NPoints(lines)))
          generate_series(1, ST_NumGeometries(ST_Boundary(the_geom)))
       ) AS lines
    FROM my_multipolygon_table
    ) AS foo;

You should note that there is no ST_Dump equivalent for points yet (ST_Dump expands MULTI* geometries extremely 
quickly).  Using generate_series is all we can do at the moment for extracting Points.  If your geometries have more 
than a few thousand points, you'll notice a significant reduction in performance.  This is something we have on our TODO 
list for future PostGIS enhancements.

On a side Paul, when creating a new topic, don't reply to an old thread or your question will get buried in someone 
else's topic.  Rather, create a new thread.

Hope that helps,

Moen, Paul T. wrote:
> Is there an easy way to get all the points from a geometry?  For 
> instance, I have a multipolygon and I would like to get the distance 
> from a point to each point that makes up the multipolygon.  I know how 
> to do it by parsing the wkt, but was wondering if there was a better way 
> to do it using Postgis and SQL.
> Thanks,
> Paul
> ------------------------------------------------------------------------
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users

More information about the postgis-users mailing list