-- Create polygon layer with 500m buffer to original pointsCREATE TABLE buffer_geom ASSELECT PK_UID, d1, ST_Buffer(Geometry, 500) AS Geom FROM vpoints; -- original point layerSELECT CreateSpatialIndex('buffer_geom','Geom');-- Register the GeometrySELECT RecoverGeometryColumn('buffer_geom','Geom', 3763, 'POLYGON');
CREATE TABLE dist(PK_UID INTEGER,dist INTEGER);INSERT INTO dist (PK_UID, dist) VALUES (1, 250);INSERT INTO dist (PK_UID, dist) VALUES (1, 500);INSERT INTO dist (PK_UID, dist) VALUES (1, 750);INSERT INTO dist (PK_UID, dist) VALUES (2, 250);INSERT INTO dist (PK_UID, dist) VALUES (2, 500);INSERT INTO dist (PK_UID, dist) VALUES (2, 750);
CREATE TABLE bdist AS SELECT D.PK_UID, D.dist, V.Geometry FROM dist AS D LEFT JOIN vpoints AS V ON D.PK_UID = V.PK_UID;
CREATE TABLE buffer_geom ASSELECT
PK_UID, -- columns from vpoints CASE WHEN dist = 250 THEN ST_Buffer(Geometry, 250) WHEN dist = 500 THEN ST_Buffer(Geometry, 500) ELSE ST_Buffer(Geometry, 750) END Geom FROM bdist;
SELECT RecoverGeometryColumn('buffer_geom','Geom', 3763, 'POLYGON');
SELECT CreateSpatialIndex('buffer_geom','Geom');
CREATE TABLE buffer_geom ASSELECT PK_UID, -- columns from vpoints
CASE dist WHEN 250 THEN ST_Buffer(Geometry, 250) ELSE ST_Buffer(Geometry, dist * 250)
END Geom FROM bdist;SELECT RecoverGeometryColumn('buffer_geom','Geom', 3763, 'POLYGON');SELECT CreateSpatialIndex('buffer_geom','Geom');
CREATE TABLE dist(dist DOUBLE NOT NULL);INSERT INTO dist (dist) VALUES (250.0);INSERT INTO dist (dist) VALUES (500.0);INSERT INTO dist (dist) VALUES (750.0);INSERT INTO dist (dist) VALUES (1000.0);
CREATE TABLE bdist AS SELECT V.PK_UID AS PID, D.dist, V.Geometry FROM dist AS D CROSS JOIN vpoints V; CREATE TABLE buffer_geom(PK_UID INTEGER NOT NULL PRIMARY KEY,PID INTEGER,dist);SELECT AddGeometryColumn('buffer_geom', 'Geom', 3763, 'POLYGON','XY');
INSERT INTO buffer_geom (PID, dist, Geom) SELECT p.PK_UID AS PID, s.dist, ST_Buffer(p.Geometry, s.dist) AS Geom FROM vpoints AS p, dist AS s ORDER BY PID;
SELECT RecoverGeometryColumn('buffer_geom','Geom', 3763, 'POLYGON');SELECT CreateSpatialIndex('buffer_geom','Geom');
DROP TABLE dist;DROP TABLE bdist;
-- Polygons to LinesCREATE TABLE buffer_lines( PK_UID INTEGER NOT NULL PRIMARY KEY, -- PRIMARY KEY, PID INTEGER, dist INTEGER);INSERT INTO buffer_lines (PID, dist) SELECT PID, dist FROM buffer_geom;SELECT AddGeometryColumn('buffer_lines', 'Geom', 3763, 'MULTILINESTRING','XY');
-- Populate the linestring geometry with the converted polygon geometryUPDATE buffer_lines SET Geom=( SELECT (CastToMultiLinestring( ST_LinesFromRings(P.Geom) ) ) FROM buffer_geom AS P WHERE (buffer_lines.PK_UID = P.PK_UID ));SELECT CreateSpatialIndex('buffer_lines','Geom');