Hi Javier,
you could add the missing end point (and then try again with
ST_BuildArea() etc.). Here a more or less suiting example of the PostGIS
manual for ST_AddPoint():
UPDATE sometable
SET the_geom = ST_AddPoint(the_geom, ST_StartPoint(the_geom))
FROM sometable
WHERE ST_IsClosed(the_geom) = false;
With a MultiLineString, this might be a bit more complicated because you
have to find out first, is your multilinestring resulting in a polygon
or a multipolygon? If all linestrings form one polygon, you have to
select the start point of the first linestring as end point of the last
linestring. If the result is a multipolygon, you have to find out which
of the rings is not closed, first. As I see from your first e-mail, you
are expecting the geometry to become a multipolygon, so (assuming every
linestring is representing a polygon within the multipolygon, otherwise
it might be a solution to union the linestrings first) maybe the sql
code could look like this:
UPDATE sometable a
SET the_geom = sel.geom FROM
(SELECT b1.gid, ST_Collect(b1.geom) AS geom --put together all linestrings to
one multilinestring again
FROM
(SELECT b.gid, ST_AddPoint(b.geom, ST_StartPoint(b.geom)) --add an end point on
the position of the start point for each non-closed linestring
FROM
(SELECT gid, (st_dump(the_geom)).geom AS geom --separate the linestrings and
select the not closed ones
FROM sometable
WHERE ST_IsClosed(the_geom)=false) b
WHERE ST_IsClosed(b.geom) = false
UNION ALL
SELECT b.gid, b.geom
FROM
(SELECT gid, (st_dump(the_geom)).geom AS geom --separate the linestrings and
select the closed ones
FROM sometable
WHERE ST_IsClosed(the_geom)=false) b
WHERE ST_IsClosed(b.geom) = true) b1
GROUP BY b1.gid) sel
WHERE ST_IsClosed(a.the_geom)=false AND a.gid=sel.gid;
I did not test the code, but I hope you get the idea...
Regards,
Birgit.
On 28.03.2011 18:47, Javier Perez wrote:
Hi,
I tried |*ST_BuildArea*(|geometry A|)|; and
|*ST_BdMPolyFromText*(|text WKT, integer srid|)|;
but the output is empty. I think it's becouse this functions may need
the MULTILINESTRING to be closed and it's not.
Any suggestion?
2011/3/25 Javier Perez <javi.peis...@gmail.com
<mailto:javi.peis...@gmail.com>>
Hi Marc-Andre!
I think this usefull.
Thanks a lot!
Regards
2011/3/25 Morin, Marc-André <marc-andre.mo...@dfo-mpo.gc.ca
<mailto:marc-andre.mo...@dfo-mpo.gc.ca>>
*Hi,*
**
*This is the recipe I found in the past to get it done:*
**
http://postgis.refractions.net/pipermail/postgis-users/2008-May/019901.html
It worked well for me.
Regards,
Marc-André
------------------------------------------------------------------------
*De :* postgis-users-boun...@postgis.refractions.net
<mailto:postgis-users-boun...@postgis.refractions.net>
[mailto:postgis-users-boun...@postgis.refractions.net
<mailto:postgis-users-boun...@postgis.refractions.net>] *De la
part de* Javier Perez
*Envoyé :* March 25, 2011 7:35 AM
*À :* postgis-users@postgis.refractions.net
<mailto:postgis-users@postgis.refractions.net>
*Objet :* [postgis-users] MULTILINESTRING to MULTIPOLYGON
Hi!,
In my app I get a MULTILINESTRING and want to insert it as
MULTIPOLYGON. I think there's an easy way but I did't found,
can anyone bring some light?
Thanks in advance
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
<mailto:postgis-users@postgis.refractions.net>
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users