WHERE p.sequence = CASE WHEN m.sequence-1 < 1 THEN cnt
ELSE m.sequence-1 END
), (
- SELECT p.edge AS prev FROM edgestar p WHERE p.sequence = ((m.sequence)%cnt)+1
+ SELECT p.edge AS prev FROM edgestar p WHERE p.sequence = ((m.sequence)%cnt)+1
) ]
FROM edgestar m
WHERE edge = anedge
-- (should be part of isomorphism checking)
range := ST_MakePolygon(oldedge.geom);
iscw := ST_OrderingEquals(range, ST_ForceRHR(range));
+
+ IF ST_NumPoints(ST_RemoveRepeatedPoints(acurve)) < 3 THEN
+ RAISE EXCEPTION 'Invalid edge (no two distinct vertices exist)';
+ END IF;
range := ST_MakePolygon(acurve);
+
IF iscw != ST_OrderingEquals(range, ST_ForceRHR(range)) THEN
RAISE EXCEPTION 'Edge twist at node %',
ST_AsText(ST_StartPoint(oldedge.geom));
SELECT topology.ST_ChangeEdgeGeom('city_data', 3,
'LINESTRING(25 30, 20 36, 20 38, 25 35)');
+-- Non-simple edge
+SELECT topology.ST_ChangeEdgeGeom('city_data', 1,
+ 'LINESTRING(8 30, 9 30, 8 30)');
+
+-- Dimensionally collapsed edge (#1774)
+SELECT topology.ST_ChangeEdgeGeom('city_data', 1,
+ 'LINESTRING(8 30, 8 30, 8 30)');
+
-- Non-existent edge (#979)
SELECT topology.ST_ChangeEdgeGeom('city_data', 666,
'LINESTRING(25 30, 20 36, 20 38, 25 35)');
ERROR: SQL/MM Spatial exception - start node not geometry start point.
ERROR: SQL/MM Spatial exception - end node not geometry end point.
ERROR: SQL/MM Spatial exception - geometry crosses a node
+ERROR: SQL/MM Spatial exception - curve not simple
+ERROR: Invalid edge (no two distinct vertices exist)
ERROR: SQL/MM Spatial exception - non-existent edge 666
ERROR: SQL/MM Spatial exception - geometry crosses edge 1
T2|Edge 5 changed