[postgis-users] Cut a hole in a line layer (opposite of a cookiecutter)??

Matt Doughty matt.doughty at geograma.com
Mon Jun 4 09:15:06 PDT 2007


The 'Difference(geometry,geometry)' tool? I've had a look at that but
could quite understand how it works and what the syntax was, the PostGIS
manual was particularly unhelpful. 

I'll have another look the how I can take the difference, but in the
meantime, if you've got any pointers...

... Matt
 
 
Matt Doughty
 
GEOGRAMA S.L.
Tel.:  +34 945 13 13 72    652 77 14 15
Fax: +34 945 23 03 40 
www.geograma.com
 
 

-----Mensaje original-----
De: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] En nombre de
Martin Davis
Enviado el: lunes, 04 de junio de 2007 17:53
Para: PostGIS Users Discussion
Asunto: Re: [postgis-users] Cut a hole in a line layer (opposite of a
cookiecutter)??

You could form the union of the "mask" polygons and then use the 
difference function to obtain the portion of each line which lies 
outside them.

This assumes of course that your polygon layer isn't too big. If it is 
very big, you may need to use the approach of taking the difference of 
every line from the union of the polys which interact with that line. 
This might be slow, however.

Matt Doughty wrote:
>
> Hi,
>
> I've got a new problem... how in PostGIS could I perform the opposite
of 
> a cookie cutting operation? Better said, use a polygon layer to cut a 
> hole in a line layer thereby keeping the lines from outside the 
> polygons but not those inside. I've been trying with a cooking cutting

> script (see below) by placing NOT before the operators but without 
> much luck.
>
> SELECT
>
> cookie.gid,
>
> INTERSECTION(cookie.the_geom, cutter.the_geom) AS the_geom
>
> INTO
>
> curvas_isla_not_02
>
> FROM
>
> roads AS cookie,
>
> urban_areas AS cutter
>
> WHERE
>
> cookie.the_geom && cutter.the_geom
>
> AND
>
> INTERSECTS(cookie.the_geom, cutter.the_geom)
>
> I've also tried to use the results from the cookie cutter script to 
> select those lines that don't coincide with those from the cookie (see

> below), but also without any luck.
>
> SELECT
>
> roads.gid,
>
> roads.the_geom
>
> INTO
>
> roads_not_urban
>
> FROM
>
> roads,
>
> roads_urban
>
> WHERE
>
> roads.the_geom && roads_urban.the_geom
>
> AND
>
> NOT INTERSECTS(roads.the_geom, roads_urban.the_geom);
>
> If anybody's got any tips on how to do this, or advice on where I'm 
> going wrong....!
>
> Many thanks,
>
> Matt
>
> Matt Doughty
>
> 	
>
> GEOGRAMA S.L.
>
> Tel.: +34 945 13 13 72 652 77 14 15
>
> Fax: +34 945 23 03 40
>
> www.geograma.com
>
> 	
>
>
------------------------------------------------------------------------
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>   

-- 
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022

_______________________________________________
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