Commit 52e6ef7c authored by Matthias Betz's avatar Matthias Betz
Browse files

add INWARD/OUTWARD property to geometries for inward facing geometries

extend all polygon wrong orientation test to handle inward facing geometries
fix validation plan not written when validating in stream mode
parent 1e80192c
Pipeline #11546 failed with stage
in 1 minute and 27 seconds
...@@ -32,21 +32,22 @@ import java.util.ArrayList; ...@@ -32,21 +32,22 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
import org.citygml4j.core.model.bridge.AbstractBridge; import org.citygml4j.core.model.bridge.AbstractBridge;
import org.citygml4j.core.model.deprecated.bridge.DeprecatedPropertiesOfAbstractBridge; import org.citygml4j.core.model.deprecated.bridge.DeprecatedPropertiesOfAbstractBridge;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.citygml4j.core.visitor.ObjectVisitor; import org.citygml4j.core.visitor.ObjectVisitor;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mockito;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType; import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.mockito.Mockito; import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
public class BridgeObjectTest { public class BridgeObjectTest {
...@@ -117,7 +118,7 @@ public class BridgeObjectTest { ...@@ -117,7 +118,7 @@ public class BridgeObjectTest {
@Test @Test
public void testPrepareForChecking() { public void testPrepareForChecking() {
BridgeObject bo = new BridgeObject(mock(AbstractBridge.class)); BridgeObject bo = new BridgeObject(mock(AbstractBridge.class));
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
Geometry spyGeom = Mockito.spy(geom); Geometry spyGeom = Mockito.spy(geom);
bo.addGeometry(spyGeom); bo.addGeometry(spyGeom);
......
...@@ -32,6 +32,7 @@ import org.junit.Test; ...@@ -32,6 +32,7 @@ import org.junit.Test;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.xmlobjects.gml.model.basictypes.Code; import org.xmlobjects.gml.model.basictypes.Code;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.utils.Copy; import de.hft.stuttgart.citydoctor2.utils.Copy;
...@@ -55,7 +56,7 @@ public class BuildingTest { ...@@ -55,7 +56,7 @@ public class BuildingTest {
lr.addVertex(v1); lr.addVertex(v1);
lr.addVertex(v2); lr.addVertex(v2);
lr.addVertex(v1); lr.addVertex(v1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
geom.addPolygon(p); geom.addPolygon(p);
geom.updateEdgesAndVertices(); geom.updateEdgesAndVertices();
b.addGeometry(geom); b.addGeometry(geom);
...@@ -64,7 +65,7 @@ public class BuildingTest { ...@@ -64,7 +65,7 @@ public class BuildingTest {
RoofSurface rs = new RoofSurface(); RoofSurface rs = new RoofSurface();
rs.setId("testRoof"); rs.setId("testRoof");
BoundarySurface surface = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.ROOF, rs); BoundarySurface surface = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.ROOF, rs);
Geometry geomSurface = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geomSurface = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geomSurface.addPolygon(new LinkedPolygon(p, geomSurface)); geomSurface.addPolygon(new LinkedPolygon(p, geomSurface));
geomSurface.updateEdgesAndVertices(); geomSurface.updateEdgesAndVertices();
surface.addGeometry(geomSurface); surface.addGeometry(geomSurface);
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import java.util.ArrayList;
import java.util.List;
import org.citygml4j.core.model.core.AbstractCityObject;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder; import de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor; import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
import org.citygml4j.core.model.core.AbstractCityObject;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class CityObjectTest { public class CityObjectTest {
...@@ -101,10 +106,10 @@ public class CityObjectTest { ...@@ -101,10 +106,10 @@ public class CityObjectTest {
@Test @Test
public void testGetHighestLodGeometry() { public void testGetHighestLodGeometry() {
Geometry geometryLod1 = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geometryLod1 = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Geometry geometryLod2 = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geometryLod2 = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Geometry geometryLod3 = new Geometry(GeometryType.SOLID, Lod.LOD3); Geometry geometryLod3 = new Geometry(GeometryType.SOLID, Lod.LOD3, Orientation.OUTWARD);
Geometry geometryLod4 = new Geometry(GeometryType.SOLID, Lod.LOD4); Geometry geometryLod4 = new Geometry(GeometryType.SOLID, Lod.LOD4, Orientation.OUTWARD);
assertNull(co.getHighestLodGeometry()); assertNull(co.getHighestLodGeometry());
co.addGeometry(geometryLod1); co.addGeometry(geometryLod1);
......
...@@ -44,6 +44,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; ...@@ -44,6 +44,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.math.Vector3d; import de.hft.stuttgart.citydoctor2.math.Vector3d;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
...@@ -58,7 +59,7 @@ public class GeometryTest { ...@@ -58,7 +59,7 @@ public class GeometryTest {
@Test @Test
public void testVisitorPropagation() { public void testVisitorPropagation() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
ConcretePolygon mockPolygon = mock(ConcretePolygon.class); ConcretePolygon mockPolygon = mock(ConcretePolygon.class);
geom.addPolygon(mockPolygon); geom.addPolygon(mockPolygon);
...@@ -72,7 +73,7 @@ public class GeometryTest { ...@@ -72,7 +73,7 @@ public class GeometryTest {
@Test @Test
public void testCreate() { public void testCreate() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
assertNotNull(geom); assertNotNull(geom);
assertSame(GeometryType.SOLID, geom.getType()); assertSame(GeometryType.SOLID, geom.getType());
...@@ -81,7 +82,7 @@ public class GeometryTest { ...@@ -81,7 +82,7 @@ public class GeometryTest {
@Test @Test
public void testAddPolygon() { public void testAddPolygon() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -99,7 +100,7 @@ public class GeometryTest { ...@@ -99,7 +100,7 @@ public class GeometryTest {
var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation(); var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation();
Installation bi = new Installation(); Installation bi = new Installation();
bi.setGmlObject(gmlBi); bi.setGmlObject(gmlBi);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon(); ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
...@@ -112,7 +113,7 @@ public class GeometryTest { ...@@ -112,7 +113,7 @@ public class GeometryTest {
bs.addGeometry(geom); bs.addGeometry(geom);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2); Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2, Orientation.OUTWARD);
biGeom.addPolygon(new LinkedPolygon(p, biGeom)); biGeom.addPolygon(new LinkedPolygon(p, biGeom));
bi.addGeometry(biGeom); bi.addGeometry(biGeom);
...@@ -133,7 +134,7 @@ public class GeometryTest { ...@@ -133,7 +134,7 @@ public class GeometryTest {
ParserConfiguration config = new ParserConfiguration(4, false); ParserConfiguration config = new ParserConfiguration(4, false);
AbstractConstructionSurface abs = new WallSurface(); AbstractConstructionSurface abs = new WallSurface();
BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, abs); BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, abs);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon(); ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
...@@ -159,7 +160,7 @@ public class GeometryTest { ...@@ -159,7 +160,7 @@ public class GeometryTest {
var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation(); var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation();
Installation bi = new Installation(); Installation bi = new Installation();
bi.setGmlObject(gmlBi); bi.setGmlObject(gmlBi);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon(); ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
...@@ -171,7 +172,7 @@ public class GeometryTest { ...@@ -171,7 +172,7 @@ public class GeometryTest {
p.setPartOfSurface(bs); p.setPartOfSurface(bs);
p.setPartOfInstallation(bi); p.setPartOfInstallation(bi);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2); Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2, Orientation.OUTWARD);
LinkedPolygon linkedPolygon = new LinkedPolygon(p, biGeom); LinkedPolygon linkedPolygon = new LinkedPolygon(p, biGeom);
biGeom.addPolygon(linkedPolygon); biGeom.addPolygon(linkedPolygon);
bi.addGeometry(biGeom); bi.addGeometry(biGeom);
...@@ -197,7 +198,7 @@ public class GeometryTest { ...@@ -197,7 +198,7 @@ public class GeometryTest {
Installation bi = new Installation(); Installation bi = new Installation();
bi.setGmlObject(gmlBi); bi.setGmlObject(gmlBi);
bi.addBoundarySurface(bs); bi.addBoundarySurface(bs);
Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon(); ConcretePolygon p = new ConcretePolygon();
geom2.addPolygon(p); geom2.addPolygon(p);
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
...@@ -210,7 +211,7 @@ public class GeometryTest { ...@@ -210,7 +211,7 @@ public class GeometryTest {
p.setPartOfInstallation(bi); p.setPartOfInstallation(bi);
bs.addGeometry(geom2); bs.addGeometry(geom2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Polygon linkedPoly = new LinkedPolygon(p, geom); Polygon linkedPoly = new LinkedPolygon(p, geom);
geom.addPolygon(linkedPoly); geom.addPolygon(linkedPoly);
...@@ -241,7 +242,7 @@ public class GeometryTest { ...@@ -241,7 +242,7 @@ public class GeometryTest {
@Test @Test
public void testSetParent() { public void testSetParent() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
CityObject co = mock(CityObject.class); CityObject co = mock(CityObject.class);
geom.setParent(co); geom.setParent(co);
assertEquals(co, geom.getParent()); assertEquals(co, geom.getParent());
...@@ -262,7 +263,7 @@ public class GeometryTest { ...@@ -262,7 +263,7 @@ public class GeometryTest {
@Test @Test
public void testSetType() { public void testSetType() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.setType(GeometryType.SOLID); geom.setType(GeometryType.SOLID);
assertEquals(GeometryType.SOLID, geom.getType()); assertEquals(GeometryType.SOLID, geom.getType());
} }
...@@ -278,7 +279,7 @@ public class GeometryTest { ...@@ -278,7 +279,7 @@ public class GeometryTest {
@Test @Test
public void testContainsError() { public void testContainsError() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class))); geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
...@@ -293,7 +294,7 @@ public class GeometryTest { ...@@ -293,7 +294,7 @@ public class GeometryTest {
@Test @Test
public void testClearAllContainedCheckResults() { public void testClearAllContainedCheckResults() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class))); geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
...@@ -306,7 +307,7 @@ public class GeometryTest { ...@@ -306,7 +307,7 @@ public class GeometryTest {
@Test @Test
public void testCollectContainedErrors() { public void testCollectContainedErrors() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class))); geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
...@@ -324,7 +325,7 @@ public class GeometryTest { ...@@ -324,7 +325,7 @@ public class GeometryTest {
@Test @Test
public void testContainsAnyError() { public void testContainsAnyError() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsAnyError()); assertFalse(geom.containsAnyError());
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class))); geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsAnyError()); assertTrue(geom.containsAnyError());
...@@ -343,7 +344,7 @@ public class GeometryTest { ...@@ -343,7 +344,7 @@ public class GeometryTest {
@Test @Test
public void testAccept() { public void testAccept() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Check c = mock(Check.class); Check c = mock(Check.class);
geom.accept(c); geom.accept(c);
when(c.canExecute(geom)).thenReturn(true); when(c.canExecute(geom)).thenReturn(true);
...@@ -434,7 +435,7 @@ public class GeometryTest { ...@@ -434,7 +435,7 @@ public class GeometryTest {
@Test @Test
public void testContainsPolygon() { public void testContainsPolygon() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
ConcretePolygon cdPoly = new ConcretePolygon(); ConcretePolygon cdPoly = new ConcretePolygon();
geom.addPolygon(cdPoly); geom.addPolygon(cdPoly);
cdPoly.setGmlId(new GmlId("test1")); cdPoly.setGmlId(new GmlId("test1"));
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import org.xmlobjects.gml.model.geometry.primitives.AbstractRing; import org.xmlobjects.gml.model.geometry.primitives.AbstractRing;
import org.xmlobjects.gml.model.geometry.primitives.AbstractSolid; import org.xmlobjects.gml.model.geometry.primitives.AbstractSolid;
...@@ -48,7 +49,7 @@ public class GeometryTestUtils { ...@@ -48,7 +49,7 @@ public class GeometryTestUtils {
} }
public static Geometry createDummyGeometry(GeometryType type, Lod lod) { public static Geometry createDummyGeometry(GeometryType type, Lod lod) {
Geometry geom = new Geometry(type, lod); Geometry geom = new Geometry(type, lod, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon(); ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon); geom.getPolygons().add(polygon);
polygon.setParent(geom); polygon.setParent(geom);
...@@ -68,7 +69,7 @@ public class GeometryTestUtils { ...@@ -68,7 +69,7 @@ public class GeometryTestUtils {
} }
public static Geometry createDummyGeometryWithInnerRingWithNeighboringPolygon(GeometryType type, Lod lod) { public static Geometry createDummyGeometryWithInnerRingWithNeighboringPolygon(GeometryType type, Lod lod) {
Geometry geom = new Geometry(type, lod); Geometry geom = new Geometry(type, lod, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon(); ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon); geom.getPolygons().add(polygon);
polygon.setParent(geom); polygon.setParent(geom);
......
...@@ -25,6 +25,7 @@ import java.util.Set; ...@@ -25,6 +25,7 @@ import java.util.Set;
import org.junit.Test; import org.junit.Test;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.math.Vector3d; import de.hft.stuttgart.citydoctor2.math.Vector3d;
...@@ -46,7 +47,7 @@ public class VertexTest { ...@@ -46,7 +47,7 @@ public class VertexTest {
@Test @Test
public void testGetAdjacentRings() { public void testGetAdjacentRings() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -64,7 +65,7 @@ public class VertexTest { ...@@ -64,7 +65,7 @@ public class VertexTest {
@Test(expected = IllegalStateException.class) @Test(expected = IllegalStateException.class)
public void testGetAdjacentRingsGeometryNotContainingVertex() { public void testGetAdjacentRingsGeometryNotContainingVertex() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
......
...@@ -890,9 +890,6 @@ public class Checker { ...@@ -890,9 +890,6 @@ public class Checker {
* @param co the city object to be checked * @param co the city object to be checked
*/ */
public void checkFeature(XmlStreamReporter xmlReporter, PdfStreamReporter pdfReporter, CityObject co) { public void checkFeature(XmlStreamReporter xmlReporter, PdfStreamReporter pdfReporter, CityObject co) {
if (logger.isDebugEnabled()) {
logger.debug(Localization.getText("Checker.checkFeature"), co);
}
executeChecksForCityObject(co); executeChecksForCityObject(co);
if (xmlReporter != null) { if (xmlReporter != null) {
xmlReporter.report(co); xmlReporter.report(co);
......
...@@ -29,11 +29,6 @@ import java.util.Set; ...@@ -29,11 +29,6 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.AbstractFeatureProperty; import org.citygml4j.core.model.core.AbstractFeatureProperty;
import org.citygml4j.core.model.core.CityModel; import org.citygml4j.core.model.core.CityModel;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
...@@ -42,9 +37,12 @@ import org.xmlobjects.gml.model.base.Reference; ...@@ -42,9 +37,12 @@ import org.xmlobjects.gml.model.base.Reference;
import de.hft.stuttgart.citydoctor2.check.error.SchematronError; import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import de.hft.stuttgart.citydoctor2.checks.SvrlContentHandler; import de.hft.stuttgart.citydoctor2.checks.SvrlContentHandler;
import de.hft.stuttgart.citydoctor2.checks.util.FeatureCheckedListener; import de.hft.stuttgart.citydoctor2.checks.util.FeatureCheckedListener;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject; import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject;
import de.hft.stuttgart.citydoctor2.datastructure.Building; import de.hft.stuttgart.citydoctor2.datastructure.Building;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.CityObject; import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import de.hft.stuttgart.citydoctor2.datastructure.LandObject; import de.hft.stuttgart.citydoctor2.datastructure.LandObject;
import de.hft.stuttgart.citydoctor2.datastructure.TransportationObject; import de.hft.stuttgart.citydoctor2.datastructure.TransportationObject;
import de.hft.stuttgart.citydoctor2.datastructure.Vegetation; import de.hft.stuttgart.citydoctor2.datastructure.Vegetation;
...@@ -64,8 +62,6 @@ import de.hft.stuttgart.quality.model.types.ValidationPlan; ...@@ -64,8 +62,6 @@ import de.hft.stuttgart.quality.model.types.ValidationPlan;
public class StreamCityGmlConsumer implements CityGmlConsumer { public class StreamCityGmlConsumer implements CityGmlConsumer {
private static final Logger logger = LogManager.getLogger(StreamCityGmlConsumer.class);
private final Checker c; private final Checker c;
private final XmlStreamReporter xmlReporter; private final XmlStreamReporter xmlReporter;
private final PdfStreamReporter pdfReporter; private final PdfStreamReporter pdfReporter;
...@@ -82,7 +78,7 @@ public class StreamCityGmlConsumer implements CityGmlConsumer { ...@@ -82,7 +78,7 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
private final FeatureStatistics waterStatistics; private final FeatureStatistics waterStatistics;
private final Validation val; private final Validation val;
private final FeatureCheckedListener l; private final FeatureCheckedListener l;
public StreamCityGmlConsumer(Checker c, XmlStreamReporter xmlReporter, PdfStreamReporter pdfReporter, public StreamCityGmlConsumer(Checker c, XmlStreamReporter xmlReporter, PdfStreamReporter pdfReporter,
SvrlContentHandler handler, ValidationConfiguration config, FeatureCheckedListener l) { SvrlContentHandler handler, ValidationConfiguration config, FeatureCheckedListener l) {
this.c = c; this.c = c;
...@@ -116,10 +112,6 @@ public class StreamCityGmlConsumer implements CityGmlConsumer { ...@@ -116,10 +112,6 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
@Override @Override
public void accept(CityObject co) { public void accept(CityObject co) {
if (logger.isDebugEnabled()) {
logger.debug(Localization.getText("Checker.checkFeature"), co);
}
// check without reporters, nothing will be put into the reports like that // check without reporters, nothing will be put into the reports like that
// this will also clear old check results if any (though in stream mode there // this will also clear old check results if any (though in stream mode there
// won't be any) // won't be any)
......
...@@ -35,6 +35,7 @@ import de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils; ...@@ -35,6 +35,7 @@ import de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry; import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.math.Ray; import de.hft.stuttgart.citydoctor2.math.Ray;
import de.hft.stuttgart.citydoctor2.math.Triangle3d; import de.hft.stuttgart.citydoctor2.math.Triangle3d;
import de.hft.stuttgart.citydoctor2.math.Vector3d; import de.hft.stuttgart.citydoctor2.math.Vector3d;
...@@ -76,6 +77,10 @@ public class AllPolygonsWrongOrientationCheck extends Check { ...@@ -76,6 +77,10 @@ public class AllPolygonsWrongOrientationCheck extends Check {
return; return;
} }
boolean isOutwardOriented = geometryIsOutwardOrientedJava(g); boolean isOutwardOriented = geometryIsOutwardOrientedJava(g);
// invert outward direction for inward facing geometries
if (g.getOrientation() == Orientation.INWARD) {
isOutwardOriented = !isOutwardOriented;
}
CheckResult cr; CheckResult cr;
if (isOutwardOriented) { if (isOutwardOriented) {
cr = new CheckResult(this, ResultStatus.OK, null); cr = new CheckResult(this, ResultStatus.OK, null);
......
...@@ -41,6 +41,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; ...@@ -41,6 +41,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.quality.model.enums.RequirementId; import de.hft.stuttgart.quality.model.enums.RequirementId;
...@@ -48,7 +49,7 @@ public class DegeneratedPolygonCheckTest { ...@@ -48,7 +49,7 @@ public class DegeneratedPolygonCheckTest {
@Test @Test
public void testDegeneratedPolygon() { public void testDegeneratedPolygon() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon(); ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon); geom.getPolygons().add(polygon);
polygon.setParent(geom); polygon.setParent(geom);
......
...@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -90,7 +91,7 @@ public class DuplicatePointsCheckTest { ...@@ -90,7 +91,7 @@ public class DuplicatePointsCheckTest {
@Test @Test
public void testCheckSelfInt() { public void testCheckSelfInt() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = new Vertex(1, 1, 1); Vertex v0 = new Vertex(1, 1, 1);
Vertex v1 = new Vertex(2, 2, 2); Vertex v1 = new Vertex(2, 2, 2);
Vertex v2 = new Vertex(3, 3, 3); Vertex v2 = new Vertex(3, 3, 3);
......
...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -40,7 +41,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; ...@@ -40,7 +41,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class FaceOutCheckTest { public class FaceOutCheckTest {
private Geometry createBadGeometry() { private Geometry createBadGeometry() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = createVertex(0, 0, 0, geom); Vertex v0 = createVertex(0, 0, 0, geom);
Vertex v1 = createVertex(10, 0, 0, geom); Vertex v1 = createVertex(10, 0, 0, geom);
...@@ -62,7 +63,7 @@ public class FaceOutCheckTest { ...@@ -62,7 +63,7 @@ public class FaceOutCheckTest {
} }
private Geometry createGoodGeometry() { private Geometry createGoodGeometry() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = createVertex(0, 0, 0, geom); Vertex v0 = createVertex(0, 0, 0, geom);
Vertex v1 = createVertex(10, 0, 0, geom); Vertex v1 = createVertex(10, 0, 0, geom);
......
...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -43,7 +44,7 @@ public class HoleOutsideCheckTest { ...@@ -43,7 +44,7 @@ public class HoleOutsideCheckTest {
@Test @Test
public void testHoleOutside() { public void testHoleOutside() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -79,7 +80,7 @@ public class HoleOutsideCheckTest { ...@@ -79,7 +80,7 @@ public class HoleOutsideCheckTest {
@Test @Test
public void testPolygonGood() { public void testPolygonGood() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
......
...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -44,7 +45,7 @@ public class InteriorDisconnectedCheckTest { ...@@ -44,7 +45,7 @@ public class InteriorDisconnectedCheckTest {
*/ */
@Test @Test
public void testBadPolygon1() { public void testBadPolygon1() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -89,7 +90,7 @@ public class InteriorDisconnectedCheckTest { ...@@ -89,7 +90,7 @@ public class InteriorDisconnectedCheckTest {
*/ */
@Test @Test
public void testBadPolygon2() { public void testBadPolygon2() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -145,7 +146,7 @@ public class InteriorDisconnectedCheckTest { ...@@ -145,7 +146,7 @@ public class InteriorDisconnectedCheckTest {
*/ */
@Test @Test
public void testBadPolygon3() { public void testBadPolygon3() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -213,7 +214,7 @@ public class InteriorDisconnectedCheckTest { ...@@ -213,7 +214,7 @@ public class InteriorDisconnectedCheckTest {
*/ */
@Test @Test
public void testGoodPolygon3() { public void testGoodPolygon3() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -274,7 +275,7 @@ public class InteriorDisconnectedCheckTest { ...@@ -274,7 +275,7 @@ public class InteriorDisconnectedCheckTest {
@Test @Test
public void testGoodPolygon2() { public void testGoodPolygon2() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
......
...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; ...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -41,7 +42,7 @@ public class ManifoldVertexCheckTest { ...@@ -41,7 +42,7 @@ public class ManifoldVertexCheckTest {
@Test @Test
public void testNonManifoldVertex() { public void testNonManifoldVertex() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v12 = createVertex(10, 10, 3, geom); Vertex v12 = createVertex(10, 10, 3, geom);
Vertex v13 = createVertex(10, 10, 0, geom); Vertex v13 = createVertex(10, 10, 0, geom);
......
...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -43,7 +44,7 @@ public class NestedRingsCheckTest { ...@@ -43,7 +44,7 @@ public class NestedRingsCheckTest {
@Test @Test
public void testNestedRings() { public void testNestedRings() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -90,7 +91,7 @@ public class NestedRingsCheckTest { ...@@ -90,7 +91,7 @@ public class NestedRingsCheckTest {
@Test @Test
public void testPolygonGood() { public void testPolygonGood() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
......
...@@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -38,7 +39,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; ...@@ -38,7 +39,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class NullAreaCheckTest { public class NullAreaCheckTest {
private LinearRing setupValidGeometry() { private LinearRing setupValidGeometry() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
...@@ -62,7 +63,7 @@ public class NullAreaCheckTest { ...@@ -62,7 +63,7 @@ public class NullAreaCheckTest {
} }
private LinearRing setupErrorGeometry() { private LinearRing setupErrorGeometry() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
geom.addPolygon(p); geom.addPolygon(p);
......
...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -41,7 +42,7 @@ public class PlanarCheckTest { ...@@ -41,7 +42,7 @@ public class PlanarCheckTest {
@Test @Test
public void testCheckPolygonOK() { public void testCheckPolygonOK() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
Vertex v1 = new Vertex(0, 0, 1); Vertex v1 = new Vertex(0, 0, 1);
Vertex v2 = new Vertex(1, 0, 1); Vertex v2 = new Vertex(1, 0, 1);
...@@ -62,7 +63,7 @@ public class PlanarCheckTest { ...@@ -62,7 +63,7 @@ public class PlanarCheckTest {
@Test @Test
public void testCheckPolygonDistanceERROR() { public void testCheckPolygonDistanceERROR() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
Vertex v1 = new Vertex(0, 0.06, 1); Vertex v1 = new Vertex(0, 0.06, 1);
Vertex v2 = new Vertex(1, 1, 1); Vertex v2 = new Vertex(1, 1, 1);
......
...@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -44,7 +45,7 @@ public class PolygonSameOrientationCheckTest { ...@@ -44,7 +45,7 @@ public class PolygonSameOrientationCheckTest {
@Test @Test
public void testSameOrientation() { public void testSameOrientation() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = GeometryTestUtils.createVertex(0, 0, 0, geom); Vertex v0 = GeometryTestUtils.createVertex(0, 0, 0, geom);
Vertex v1 = GeometryTestUtils.createVertex(6, 0, 0, geom); Vertex v1 = GeometryTestUtils.createVertex(6, 0, 0, geom);
...@@ -76,7 +77,7 @@ public class PolygonSameOrientationCheckTest { ...@@ -76,7 +77,7 @@ public class PolygonSameOrientationCheckTest {
@Test @Test
public void testGoodPoly() { public void testGoodPoly() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = GeometryTestUtils.createVertex(0, 0, 0, geom); Vertex v0 = GeometryTestUtils.createVertex(0, 0, 0, geom);
Vertex v1 = GeometryTestUtils.createVertex(6, 0, 0, geom); Vertex v1 = GeometryTestUtils.createVertex(6, 0, 0, geom);
......
...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/** /**
* *
...@@ -45,7 +46,7 @@ public class PolygonSelfIntCheckTest { ...@@ -45,7 +46,7 @@ public class PolygonSelfIntCheckTest {
@Test @Test
public void testPolygonInteriorIntersectExterior() { public void testPolygonInteriorIntersectExterior() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
...@@ -95,7 +96,7 @@ public class PolygonSelfIntCheckTest { ...@@ -95,7 +96,7 @@ public class PolygonSelfIntCheckTest {
@Test @Test
public void testPolygonGood() { public void testPolygonGood() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
...@@ -143,7 +144,7 @@ public class PolygonSelfIntCheckTest { ...@@ -143,7 +144,7 @@ public class PolygonSelfIntCheckTest {
@Test @Test
public void test2InteriorRingsIntersecting() { public void test2InteriorRingsIntersecting() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
...@@ -211,7 +212,7 @@ public class PolygonSelfIntCheckTest { ...@@ -211,7 +212,7 @@ public class PolygonSelfIntCheckTest {
@Test @Test
public void test2InteriorRingsNotIntersecting() { public void test2InteriorRingsNotIntersecting() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment