Split Polygons with LineString

110 views
Skip to first unread message

cka...@googlemail.com

unread,
Mar 2, 2011, 7:08:21 AM3/2/11
to geodjango
Hi everybody,

I would like to split a polygon with a line. I found this code at
Postgis-Wiki [1].

SELECT ST_AsText(geom )
FROM ST_Dump ((

SELECT ST_Polygonize(ST_Union(ST_Boundary(poly), line)) AS mpoly
FROM
(SELECT 'POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1 ))'::geometry AS poly)
AS a,
(SELECT 'LINESTRING (0 2, 4 2)'::geometry AS line) AS b

));


How can I use this for my Django Model???
Or: When will you support ST_Split (PostGIS 2.0)?


[1] http://trac.osgeo.org/postgis/wiki/UsersWikiSplitPolygonWithLineString

Thank you

cka...@googlemail.com

unread,
Mar 2, 2011, 10:53:13 AM3/2/11
to geodjango
Here is my solution, obj is an Model Instance:

line = LineString(start, end)

params = {'polygon':obj.the_geom.wkt,
'line': line.wkt}

raw = """
SELECT ST_AsText(geom)
FROM ST_Dump ((
SELECT ST_Polygonize(ST_Union(ST_Boundary(poly), line)) AS
mpoly
FROM
(SELECT '%(polygon)s'::geometry AS poly)
AS a,
(SELECT '%(line)s'::geometry AS line) AS b
));
""" % params

from django.db import connection, transaction
cursor = connection.cursor()
# Data modifying operation - commit required
cursor.execute(raw)
transaction.commit_unless_managed()

# Data retrieval operation - no commit required
rows = cursor.fetchall()

On 2 Mrz., 13:08, "ckar...@googlemail.com" <ckar...@googlemail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages