[postgis-users] RE : Using ST_intersection on Polygons returns multiple types

Francois Hugues hugues.francois at irstea.fr
Wed Mar 7 10:38:41 PST 2012


Maybe you could also try to extract polygons to a new table polygons only 

with intersection as (
SELECT st_intersection(the_geom, (select the_geom from B)) as the_geom
FROM  A
WHERE st_intersects(the_geom, (select the_geom from B))
AND ST_GeometryType(the_geom) = 'ST_Polygon'
)

select * from intersection
where st_geometrytype(the_geom) in ('ST_Polygon', 'ST_MultiPolygon')

I may be wrong but i think shape file can mix polygons and multipolygons

Hug


-------- Message d'origine--------
De: postgis-users-bounces at postgis.refractions.net de la part de Paul Ramsey
Date: mer. 07/03/2012 19:08
À: PostGIS Users Discussion
Objet : Re: [postgis-users] Using ST_intersection on Polygons returns multiple types
 
ST_Intersection is perhaps a bit more complete than most users would
like. If two polygons share a boundary what is their intersection? Not
a polygon, but that linear, shared boundary: a line. Similar for
touching at a point.

Anyhow, probably a cleaner approach would be an extra optional
argument to ST_Intersection allowing users to specify the
dimensionally of the return, but in the meanwhile you can go to
ST_CollectionExtract and use that to pull out just the polygons.

P.

On Wed, Mar 7, 2012 at 9:58 AM, Rebecca Clarke <rebecca at clarke.net.nz> wrote:
> Hi there
>
> I have 2000 polygons in table A and I want to show only the polygons that
> intersect with the bounding box specified in table B  . So I do this:
>
>     SELECT the_geom
> FROM  A
> WHERE st_intersects(the_geom, (select the_geom from B))
> AND ST_GeometryType(the_geom) = 'ST_Polygon'
>
> This query returns all the intersecting polygons. When I run st_geometrytype
> they are all St_Polygon.
>
> Some of the polygons are large and exceed the boxes boundary so I use this
> query to trim them:
>
>     SELECT st_intersection(the_geom, (select the_geom from B)) as the_geom
> FROM  A
> WHERE st_intersects(the_geom, (select the_geom from B))
> AND ST_GeometryType(the_geom) = 'ST_Polygon'
>
>
> The problem I'm having is that when I use the st_intersection, instead of
> returning just St_Polygon's, it's returning other types as well:
>
> ST_LineString
> ST_MultiLineString
> ST_MultiPolygon
> ST_Polygon
>
> I need to output the results to a SHP file and this is preventing me from
> doing so seeing there is more than one Geom Type.
>
> Any ideas how I can keep the results of the st_intersection as just
> St_Polygons? Am I doing something wrong?
>
> Regards
>
> Rebecca
>
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
_______________________________________________
postgis-users mailing list
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 4238 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120307/e0631c7f/attachment.bin>


More information about the postgis-users mailing list