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 a LINESTRING.
(http://postgis.refractions.net/documentation/manual-svn/ST_PointN.html)
(http://www.postgresql.org/docs/8.3/static/functions-srf.html)
(http://postgis.refractions.net/documentation/manual-svn/ch07.html#Geometry_Accessors)

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

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

So, put together, to extract all points from a table with MULTILINESTRINGs:
SELECT
   ST_PointN(
      lines,
      generate_series(1, ST_NPoints(lines)))
FROM (
   SELECT
      ST_GeometryN(
         ST_Boundary(the_geom),
         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,
Kevin

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
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to