1set client_min_messages to WARNING; 2 3-- 4-- ST_InitTopoGeo 5-- 6 7SELECT regexp_replace(ST_InitTopoGeo('sqlmm_topology'), 'id:[0-9]*', 'id:x'); 8 9------------------------------------------------------------- 10-- ST_AddIsoNode (1) 11------------------------------------------------------------- 12 13SELECT '-- ST_AddIsoNode ------------------------'; 14 15-- null input 16SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, NULL); 17SELECT topology.ST_AddIsoNode(NULL, NULL, 'POINT(0 0)'); 18SELECT topology.ST_AddIsoNode(NULL, 1, NULL); 19 20-- good nodes on the 'world' face 21SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(0 0)'); 22SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10 0)'); 23SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(5 0)'); 24SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(5 10)'); 25SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10 10)'); 26SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(20 10)'); 27 28-- existing nodes 29SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(0 0)'); 30SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10 0)'); 31 32-- other good ones (add another 0 to be detected as coincident) 33SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10.000000000000001 0)'); 34SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(7 10)'); 35 36-- non-existent face specification 37SELECT topology.ST_AddIsoNode('sqlmm_topology', 1, 'POINT(20 0)'); 38 39-- using other then point 40SELECT topology.ST_AddIsoNode('sqlmm_topology', 1, 'MULTIPOINT(20 0)'); 41 42-- coincident nodes 43SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10.000000000000001 0)'); 44SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(0 0)'); 45SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(10 0)'); 46 47-- ST_AddIsoNode not within face (TODO when ST_GetFaceGeometry is done) 48 49------------------------------------------ 50-- ST_AddIsoEdge (1) 51------------------------------------------ 52 53SELECT '-- ST_AddIsoEdge ------------------------'; 54 55-- null input 56SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, NULL); 57SELECT topology.ST_AddIsoEdge(NULL, 1, 2, 'LINESTRING(0 0, 1 1)'); 58SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, NULL, 'LINESTRING(0 0, 1 1)'); 59SELECT topology.ST_AddIsoEdge('sqlmm_topology', NULL, 2, 'LINESTRING(0 0, 1 1)'); 60 61-- invalid curve 62SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'POINT(0 0)'); 63 64-- non-simple curve 65SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 10 0, 5 5, 5 -5)'); 66 67-- non-existing nodes 68SELECT topology.ST_AddIsoEdge('sqlmm_topology', 10000, 2, 'LINESTRING(0 0, 1 1)'); 69 70-- Curve endpoints mismatch 71SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 1 1)'); 72SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 1, 10 0)'); 73 74-- Node crossing 75SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 10 0)'); 76 77-- Good ones 78SELECT topology.ST_AddIsoEdge('sqlmm_topology', 4, 5, 'LINESTRING(5 10, 5 9, 10 10)'); 79SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 2 1, 10 5, 10 0)'); 80 81-- Not isolated edge (shares endpoint with previous) 82SELECT topology.ST_AddIsoEdge('sqlmm_topology', 4, 6, 'LINESTRING(5 10, 10 9, 20 10)'); 83SELECT topology.ST_AddIsoEdge('sqlmm_topology', 5, 6, 'LINESTRING(10 10, 20 10)'); 84 85-- Edge intersection (geometry intersects an edge) 86SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 2 20, 10 0)'); 87 88-- on different faces (TODO req. nodes contained in face) 89 90------------------------------------------------------------- 91-- ST_AddIsoNode (2) 92------------------------------------------------------------- 93 94SELECT '-- ST_AddIsoNode(2) ------------------------'; 95 96-- ST_AddIsoNode edge-crossing node 97SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(5 9.5)'); 98 99------------------------------------------------------------- 100-- ST_RemoveIsoEdge 101------------------------------------------------------------- 102SELECT '-- ST_RemoveIsoEdge ---------------------'; 103 104CREATE TEMP TABLE edge1_endnodes AS 105 WITH edge AS ( 106 SELECT start_node,end_node 107 FROM sqlmm_topology.edge_data 108 WHERE edge_id = 1 109 ) 110 SELECT start_node id FROM edge UNION 111 SELECT end_node FROM edge; 112SELECT '#3351.1', node_id, containing_face 113 FROM sqlmm_topology.node where node_id in ( 114 SELECT id FROM edge1_endnodes 115 ) 116 ORDER BY node_id; 117SELECT topology.ST_RemoveIsoEdge('sqlmm_topology', 1); 118SELECT '#3351.2', node_id, containing_face 119 FROM sqlmm_topology.node where node_id in ( 120 SELECT id FROM edge1_endnodes 121 ) 122 ORDER BY node_id; 123DROP TABLE edge1_endnodes; 124 125------------------------------------------------------------- 126-- ST_NewEdgesSplit 127------------------------------------------------------------- 128 129SELECT '-- ST_NewEdgesSplit ---------------------'; 130SELECT topology.ST_NewEdgesSplit('sqlmm_topology', 2, 'POINT(10 2)'); 131 132SELECT topology.DropTopology('sqlmm_topology'); 133