Hi Ricardo,

Having been through the mailing list's archives myself over the last few weeks, 
i came up with the following recipe:




        
        
        
        First you dump all multipolygons into polygons:

SELECT
    (ST_Dump(the_geom)).geom AS the_geom
INTO  polygon_table
FROM multipolygon_table 

and create an index on that one

CREATE INDEX geo_idx_polygon_temp ON polygon_table_temp USING GIST (the_geom);
VACUUM ANALYZE polygon_table_temp;

then you create a new table that contains the borders using ST_Intersection:

CREATE TABLE borders AS 
SELECT
    ST_Intersection(t1.the_geom,t2.the_geom) AS the_geom
FROM
    polygon_table_temp AS t1,
    polygon_table_temp AS t2
WHERE
    t1.the_geom && t2.the_geom;

These borders are duplicated, as the intersection is computed twice (A 
intersects B and B intersects A). Also contains records of geometry other than 
multilinestring

DELETE FROM borders WHERE GeometryType(the_geom) <> 'MULTILINESTRING'::text; 
SELECT Populate_Geometry_Columns('borders'::regclass);

ALTER TABLE borders ADD COLUMN gid SERIAL;

ALTER TABLE borders ADD PRIMARY KEY (gid);

CREATE INDEX geo_idx_borders ON borders USING GIST (the_geom);
VACUUM ANALYZE borders;

 so remove duplicates:

DELETE FROM borders WHERE
borders.gid <  
(SELECT  MAX(b.gid )
    FROM borders b    
    WHERE b.the_geom && borders.the_geom 
        AND ST_Equals(borders.the_geom, b.the_geom));

REINDEX TABLE borders;
VACUUM ANALYZE borders;

That should do it. Thanks to previous postings to this mailing list!

regards,

Edward



Date: Thu, 24 Jun 2010 16:53:54 -0300
From: vilella.rica...@gmail.com
To: postgis-users@postgis.refractions.net
Subject: [postgis-users] Polygon to line

Hi all, is the first time I use the list. I have a polygon that represent a 
country, if i want extract only the sides that touch with other polygon. How i 
have to do? The result should be a MultiLineString or a LineString representing 
the limits of the country but without the coast line if it has one. I tried 
with ST_Touches but i can't get it work.
                                          
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to