]> granicus.if.org Git - postgis/commitdiff
Use a 2d geometry for face mbr, even for 2.5d topologies. After all mbr is a rectangl...
authorSandro Santilli <strk@keybit.net>
Sat, 2 Apr 2011 12:27:13 +0000 (12:27 +0000)
committerSandro Santilli <strk@keybit.net>
Sat, 2 Apr 2011 12:27:13 +0000 (12:27 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@6995 b70326c6-7e19-0410-871a-916f4a2858ee

topology/test/Makefile
topology/test/regress/addface2.5d.sql [new file with mode: 0644]
topology/test/regress/addface2.5d_expected [new file with mode: 0644]
topology/topology.sql.in.c

index 1e61e4c31cf601b01e96772e07781af913543719..a497ed6d72daff7b90fba4c484f2a7b34fc17ddc 100644 (file)
@@ -26,6 +26,7 @@ TESTS = regress/legacy_validate.sql regress/legacy_predicate.sql \
        regress/legacy_invalid.sql regress/sqlmm.sql \
        regress/legacy_query.sql regress/addnode.sql \
        regress/addedge.sql regress/addface.sql \
+       regress/addface2.5d.sql \
        regress/st_getfacegeometry.sql \
        regress/topoelement.sql \
        regress/topoelementarray_agg.sql \
@@ -37,7 +38,7 @@ TESTS = regress/legacy_validate.sql regress/legacy_predicate.sql \
        regress/gml.sql \
        regress/getnodebypoint.sql \
        regress/getedgebypoint.sql \
-  regress/getfacebypoint.sql
+       regress/getfacebypoint.sql
 
 check: topo_predicates.sql load_topology.sql load_topology-4326.sql
        $(MAKE) -C ../../regress postgis.sql staged-install
diff --git a/topology/test/regress/addface2.5d.sql b/topology/test/regress/addface2.5d.sql
new file mode 100644 (file)
index 0000000..cc7fd6a
--- /dev/null
@@ -0,0 +1,24 @@
+set client_min_messages to ERROR;
+
+-- Test with zero tolerance
+
+SELECT topology.CreateTopology('tt3d', -1, 0, true) > 0;
+
+-- Create 4 edges
+
+SELECT 'e1',  topology.addEdge('tt3d', 'LINESTRING(0 0 10, 10 0 20)');
+SELECT 'e2',  topology.addEdge('tt3d', 'LINESTRING(10 0 20, 10 10 30)');
+SELECT 'e3',  topology.addEdge('tt3d', 'LINESTRING(0 10 20, 10 10 30)');
+SELECT 'e4',  topology.addEdge('tt3d', 'LINESTRING(0 0 10, 0 10 20)');
+
+-- Register a face with no holes
+SELECT 'f1',  topology.addFace('tt3d', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))');
+
+-- Check added faces
+SELECT face_id, st_asewkt(mbr) from tt3d.face ORDER by face_id;
+
+-- Check linking
+SELECT edge_id, left_face, right_face from tt3d.edge ORDER by edge_id;
+
+SELECT topology.DropTopology('tt3d');
+
diff --git a/topology/test/regress/addface2.5d_expected b/topology/test/regress/addface2.5d_expected
new file mode 100644 (file)
index 0000000..d81a5de
--- /dev/null
@@ -0,0 +1,13 @@
+t
+e1|1
+e2|2
+e3|3
+e4|4
+f1|1
+0|
+1|POLYGON((0 0,0 10,10 10,10 0,0 0))
+1|1|0
+2|1|0
+3|0|1
+4|0|1
+Topology 'tt3d' dropped
index 9dcce4cbe618b9eb7e20523322bbc7f16178c9c2..58caa4c38fdc34a2b804f0fd67753ccb320d37f1 100644 (file)
@@ -1640,7 +1640,7 @@ CREATE SCHEMA ' || quote_ident(atopology) || ';
        EXECUTE
        'SELECT AddGeometryColumn('||quote_literal(atopology)
        ||',''face'',''mbr'','||quote_literal(srid)
-       ||',''POLYGON'',' || ndims || ')';
+       ||',''POLYGON'',2)'; -- 2d only mbr is good enough
 
        -------------} END OF face CREATION