| 149 | |
| 150 | == Function: ST_SplitPolygon == |
| 151 | For versions of PostGIS before 2.0, a custom function can be used to split polygons using a linestring. |
| 152 | {{{ |
| 153 | CREATE OR REPLACE FUNCTION ST_SplitPolygon(poly geometry, blade geometry) |
| 154 | RETURNS geometry AS |
| 155 | 'SELECT ST_Polygonize(ST_Union(ST_Boundary($1), $2))' LANGUAGE sql IMMUTABLE STRICT COST 100; |
| 156 | }}} |
| 157 | For example: |
| 158 | {{{ |
| 159 | SELECT ST_AsText(ST_SplitPolygon(circle, line)) result |
| 160 | FROM (SELECT |
| 161 | ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)) line, |
| 162 | ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50) circle) f; |
| 163 | |
| 164 | result |
| 165 | ----------------------------------------- |
| 166 | GEOMETRYCOLLECTION( |
| 167 | POLYGON((150 90,...,150 90)), |
| 168 | POLYGON((60.1371179574584 60.1371179574584,...,60.1371179574584 60.1371179574584))) |
| 169 | }}} |