From: Regina Obe Date: Wed, 1 Oct 2008 20:04:05 +0000 (+0000) Subject: Move ST_Intersection to new reference_new.xml X-Git-Tag: 1.4.0b1~679 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=554a224381d30f1b43f1e4eeb563485691dadbb8;p=postgis Move ST_Intersection to new reference_new.xml git-svn-id: http://svn.osgeo.org/postgis/trunk@3036 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/doc/reference.xml b/doc/reference.xml index 507d0f357..679bdf7d5 100644 --- a/doc/reference.xml +++ b/doc/reference.xml @@ -137,24 +137,6 @@ - - ST_Intersection(geometry, geometry) - - - Returns a geometry that represents the point set - intersection of the Geometries. - - In other words - that portion of geometry A and geometry B - that is shared between the two geometries. - - Performed by the GEOS module - - Do not call with a GeometryCollection as an argument - - OGC SPEC s2.1.1.3 - - - ST_Shift_Longitude(geometry) @@ -1793,21 +1775,7 @@ WHERE n*100.00/length < 1; SQL-MM 3: 8.2.6, 8.3.5 - - - ST_Intersection - - - Return an ST_Geometry value that represents the point set - intersection of two ST_Geometry values. - - In other words - that portion of geometry A and geometry B - that is shared between the two geometries. - - SQL-MM 3: 5.1.18 - - - + ST_IsEmpty diff --git a/doc/reference_new.xml b/doc/reference_new.xml index 5a8494783..df09dbc70 100644 --- a/doc/reference_new.xml +++ b/doc/reference_new.xml @@ -5115,6 +5115,103 @@ FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc, + + Geometry Processing Functions + + + ST_Intersection + + Returns a geometry that represents the shared portion of geomA and geomB + + + + + + geometry ST_Intersection + + geometry + geomA + + + geometry + geomB + + + + + + Description + Returns a geometry that represents the point set + intersection of the Geometries. + + In other words - that portion of geometry A and geometry B + that is shared between the two geometries. + + If the geometries do not share any space (are disjoint), then an empty geometry collection + is returned. + ST_Intersection in conjunction with ST_Intersects is very useful for clipping geometries such as in bounding box, buffer, region + queries where you only want to return that portion of a geometry that sits in a country or region of interest. + + + Do not call with a GEOMETRYCOLLECTION as an argument + + + Performed by the GEOS module + + + + + This method implements the + OpenGIS Simple + Features Implementation Specification for SQL OGC SPEC s2.1.1.3 + + + + Examples +SELECT ST_AsText(ST_Intersection('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry)); + st_astext + --------------- + GEOMETRYCOLLECTION EMPTY + (1 row) + SELECT ST_AsText(ST_Intersection('POINT(0 0)'::geometry, 'LINESTRING ( 0 0, 0 2 )'::geometry)); + st_astext + --------------- + POINT(0 0) + (1 row) + + ---Clip all lines (trails) by country (here we assume country geom are POLYGON or MULTIPOLYGONS) + -- NOTE: we are only keeping intersections that result in a LINESTRING or MULTILINESTRING because we don't + -- care about trails that just share a point + -- the dump is needed to expand a geometry collection into individual single MULT* parts + -- the below is fairly generic and will work for polys, etc. by just changing the where clause + SELECT clipped.gid, clipped.f_name, clipped_geom + FROM (SELECT trails.gid, trails.f_name, (ST_Dump(ST_Intersection(country.the_geom, trails.the_geom))).geom As clipped_geom + FROM country + INNER JOIN trails + ON ST_Intersects(country.the_geom, trails.the_geom)) As clipped + WHERE ST_Dimension(clipped.clipped_geom) = 1 ; + + --For polys e.g. polygon landmarks, you can also use the sometimes faster hack that buffering anything by 0.0 + -- except a polygon results in an empty geometry collection + --(so a geometry collection containing polys, lines and points) + -- buffered by 0.0 would only leave the polygons and dissolve the collection shell + SELECT poly.gid, ST_Multi(ST_Buffer( + ST_Intersection(country.the_geom, poly.the_geom), + 0.0) + ) As clipped_geom + FROM country + INNER JOIN poly + ON ST_Intersects(country.the_geom, poly.the_geom) + WHERE Not ST_IsEmpty(ST_Buffer(ST_Intersection(country.the_geom, poly.the_geom),0.0)); + + + + See Also + , , , + + + + Linear Referencing