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
...@@ -38,6 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -38,6 +38,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;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
/** /**
...@@ -49,7 +50,7 @@ public class RingSelfIntCheckTest { ...@@ -49,7 +50,7 @@ public class RingSelfIntCheckTest {
@Test @Test
public void testIntersect() { public void testIntersect() {
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);
...@@ -88,7 +89,7 @@ public class RingSelfIntCheckTest { ...@@ -88,7 +89,7 @@ public class RingSelfIntCheckTest {
@Test @Test
public void testNonIntersect() { public void testNonIntersect() {
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);
...@@ -121,7 +122,7 @@ public class RingSelfIntCheckTest { ...@@ -121,7 +122,7 @@ public class RingSelfIntCheckTest {
@Test @Test
public void testTouching() { public void testTouching() {
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);
...@@ -159,7 +160,7 @@ public class RingSelfIntCheckTest { ...@@ -159,7 +160,7 @@ public class RingSelfIntCheckTest {
@Test @Test
public void testNotTouching() { public void testNotTouching() {
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);
......
...@@ -38,6 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -38,6 +38,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;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
/** /**
...@@ -64,7 +65,7 @@ public class IsWallCheckTest { ...@@ -64,7 +65,7 @@ public class IsWallCheckTest {
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
p.setExteriorRing(lr); p.setExteriorRing(lr);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.addPolygon(p); geom.addPolygon(p);
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
...@@ -97,7 +98,7 @@ public class IsWallCheckTest { ...@@ -97,7 +98,7 @@ public class IsWallCheckTest {
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
p.setExteriorRing(lr); p.setExteriorRing(lr);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.addPolygon(p); geom.addPolygon(p);
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
...@@ -129,7 +130,7 @@ public class IsWallCheckTest { ...@@ -129,7 +130,7 @@ public class IsWallCheckTest {
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
p.setExteriorRing(lr); p.setExteriorRing(lr);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.addPolygon(p); geom.addPolygon(p);
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
...@@ -162,7 +163,7 @@ public class IsWallCheckTest { ...@@ -162,7 +163,7 @@ public class IsWallCheckTest {
Polygon p = new ConcretePolygon(); Polygon p = new ConcretePolygon();
p.setExteriorRing(lr); p.setExteriorRing(lr);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.addPolygon(p); geom.addPolygon(p);
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
......
...@@ -20,12 +20,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; ...@@ -20,12 +20,13 @@ 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.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
public class PolygonWithoutSurfaceCheckTest { public class PolygonWithoutSurfaceCheckTest {
@Test @Test
public void testPolygonWithoutSurface() { public void testPolygonWithoutSurface() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
geom.addPolygon(poly); geom.addPolygon(poly);
PolygonWithoutSurfaceCheck check = new PolygonWithoutSurfaceCheck(); PolygonWithoutSurfaceCheck check = new PolygonWithoutSurfaceCheck();
...@@ -44,7 +45,7 @@ public class PolygonWithoutSurfaceCheckTest { ...@@ -44,7 +45,7 @@ public class PolygonWithoutSurfaceCheckTest {
@Test @Test
public void testPolygonWithSurface() { public void testPolygonWithSurface() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Polygon poly = new ConcretePolygon(); Polygon poly = new ConcretePolygon();
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
bs.addGeometry(geom); bs.addGeometry(geom);
...@@ -61,7 +62,7 @@ public class PolygonWithoutSurfaceCheckTest { ...@@ -61,7 +62,7 @@ public class PolygonWithoutSurfaceCheckTest {
@Test @Test
public void testPolygonWithWrongLod() { public void testPolygonWithWrongLod() {
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();
BoundarySurface bs = new BoundarySurface(null); BoundarySurface bs = new BoundarySurface(null);
bs.addGeometry(geom); bs.addGeometry(geom);
......
...@@ -30,6 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -30,6 +30,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;
/** /**
* *
...@@ -39,7 +40,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; ...@@ -39,7 +40,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class GeometryTestUtils { public class GeometryTestUtils {
public static Geometry createGoodGeometry() { public static 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);
...@@ -65,7 +66,7 @@ public class GeometryTestUtils { ...@@ -65,7 +66,7 @@ public class GeometryTestUtils {
} }
public static Geometry createBadGeometry() { public static 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);
......
...@@ -37,6 +37,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -37,6 +37,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;
import de.hft.stuttgart.citydoctor2.math.Segment3d; import de.hft.stuttgart.citydoctor2.math.Segment3d;
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;
...@@ -806,7 +807,7 @@ public class SelfIntersectionUtilTest { ...@@ -806,7 +807,7 @@ public class SelfIntersectionUtilTest {
@Test @Test
public void testIsSimpleGood() { public void testIsSimpleGood() {
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);
...@@ -837,7 +838,7 @@ public class SelfIntersectionUtilTest { ...@@ -837,7 +838,7 @@ public class SelfIntersectionUtilTest {
@Test @Test
public void testIsSimpleFail() { public void testIsSimpleFail() {
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);
...@@ -867,7 +868,7 @@ public class SelfIntersectionUtilTest { ...@@ -867,7 +868,7 @@ public class SelfIntersectionUtilTest {
@Test @Test
public void testIsSimpleGood2() { public void testIsSimpleGood2() {
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);
......
...@@ -42,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; ...@@ -42,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon; import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon;
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.Geometry.Orientation;
public class HealMissingSolid implements HealingMethod { public class HealMissingSolid implements HealingMethod {
...@@ -116,7 +117,7 @@ public class HealMissingSolid implements HealingMethod { ...@@ -116,7 +117,7 @@ public class HealMissingSolid implements HealingMethod {
} }
private boolean createSolidInFeature(Lod lod, AbstractBuilding building) { private boolean createSolidInFeature(Lod lod, AbstractBuilding building) {
Geometry geom = new Geometry(GeometryType.SOLID, lod); Geometry geom = new Geometry(GeometryType.SOLID, lod, Orientation.OUTWARD);
List<Polygon> polygons = collectPolygons(building, lod, geom); List<Polygon> polygons = collectPolygons(building, lod, geom);
for (Polygon p : polygons) { for (Polygon p : polygons) {
geom.addPolygon(p); geom.addPolygon(p);
......
...@@ -19,6 +19,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; ...@@ -19,6 +19,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.LinkedPolygon; import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon;
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.Vector3d; import de.hft.stuttgart.citydoctor2.math.Vector3d;
public class HealPolygonWithoutSurface implements HealingMethod { public class HealPolygonWithoutSurface implements HealingMethod {
...@@ -60,7 +61,7 @@ public class HealPolygonWithoutSurface implements HealingMethod { ...@@ -60,7 +61,7 @@ public class HealPolygonWithoutSurface implements HealingMethod {
Geometry parentGeometry = cp.getParent(); Geometry parentGeometry = cp.getParent();
parentGeometry.getPolygons().remove(cp); parentGeometry.getPolygons().remove(cp);
ab.addBoundarySurface(bs); ab.addBoundarySurface(bs);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, parentGeometry.getLod()); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, parentGeometry.getLod(), Orientation.OUTWARD);
bs.addGeometry(geom); bs.addGeometry(geom);
geom.addPolygon(cp); geom.addPolygon(cp);
parentGeometry.addPolygon(new LinkedPolygon(cp, parentGeometry)); parentGeometry.addPolygon(new LinkedPolygon(cp, parentGeometry));
......
...@@ -2,16 +2,14 @@ package de.hft.stuttgart.citydoctor2.healing; ...@@ -2,16 +2,14 @@ package de.hft.stuttgart.citydoctor2.healing;
import java.io.IOException; import java.io.IOException;
import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
import de.hft.stuttgart.citydoctor2.datastructure.Building;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.Checker; import de.hft.stuttgart.citydoctor2.check.Checker;
import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration; import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration;
import de.hft.stuttgart.citydoctor2.datastructure.Building;
import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel; import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.healer.Healer; import de.hft.stuttgart.citydoctor2.healer.Healer;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException; import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
......
...@@ -55,6 +55,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon; ...@@ -55,6 +55,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon;
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;
import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException; import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException;
import de.hft.stuttgart.citydoctor2.healer.Healer; import de.hft.stuttgart.citydoctor2.healer.Healer;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
...@@ -75,7 +76,7 @@ public class HealMissingSolidTest { ...@@ -75,7 +76,7 @@ public class HealMissingSolidTest {
model.addBuilding(b); model.addBuilding(b);
b.setGmlObject(new org.citygml4j.core.model.building.Building()); b.setGmlObject(new org.citygml4j.core.model.building.Building());
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
ConcretePolygon p1 = new ConcretePolygon(); ConcretePolygon p1 = new ConcretePolygon();
LinearRing ext1 = createTestRing(); LinearRing ext1 = createTestRing();
...@@ -84,7 +85,7 @@ public class HealMissingSolidTest { ...@@ -84,7 +85,7 @@ public class HealMissingSolidTest {
BoundarySurface bs1 = new BoundarySurface(mock(AbstractThematicSurface.class)); BoundarySurface bs1 = new BoundarySurface(mock(AbstractThematicSurface.class));
b.addBoundarySurface(bs1); b.addBoundarySurface(bs1);
Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
bs1.addGeometry(geom2); bs1.addGeometry(geom2);
ConcretePolygon p2 = new ConcretePolygon(); ConcretePolygon p2 = new ConcretePolygon();
LinearRing ext2 = createTestRing(); LinearRing ext2 = createTestRing();
...@@ -95,7 +96,7 @@ public class HealMissingSolidTest { ...@@ -95,7 +96,7 @@ public class HealMissingSolidTest {
Installation bi = new Installation(); Installation bi = new Installation();
b.addBuildingInstallation(bi); b.addBuildingInstallation(bi);
Geometry geom3 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom3 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
bi.addGeometry(geom3); bi.addGeometry(geom3);
ConcretePolygon p3 = new ConcretePolygon(); ConcretePolygon p3 = new ConcretePolygon();
LinearRing ext3 = createTestRing(); LinearRing ext3 = createTestRing();
...@@ -104,7 +105,7 @@ public class HealMissingSolidTest { ...@@ -104,7 +105,7 @@ public class HealMissingSolidTest {
BoundarySurface bs2 = new BoundarySurface(mock(AbstractThematicSurface.class)); BoundarySurface bs2 = new BoundarySurface(mock(AbstractThematicSurface.class));
bi.addBoundarySurface(bs2); bi.addBoundarySurface(bs2);
Geometry geom4 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2); Geometry geom4 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
bs2.addGeometry(geom4); bs2.addGeometry(geom4);
ConcretePolygon p4 = new ConcretePolygon(); ConcretePolygon p4 = new ConcretePolygon();
LinearRing ext4 = createTestRing(); LinearRing ext4 = createTestRing();
......
...@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -27,6 +27,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;
import de.hft.stuttgart.citydoctor2.healer.Healer; import de.hft.stuttgart.citydoctor2.healer.Healer;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException; import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
...@@ -57,7 +58,7 @@ public class HealPlanarPolygonErrorTest { ...@@ -57,7 +58,7 @@ public class HealPlanarPolygonErrorTest {
public void testNonplanarPolygon() { public void testNonplanarPolygon() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
...@@ -162,7 +163,7 @@ public class HealPlanarPolygonErrorTest { ...@@ -162,7 +163,7 @@ public class HealPlanarPolygonErrorTest {
public void testNonplanarPolygon_Split() { public void testNonplanarPolygon_Split() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
...@@ -276,7 +277,7 @@ public class HealPlanarPolygonErrorTest { ...@@ -276,7 +277,7 @@ public class HealPlanarPolygonErrorTest {
public void testNonplanarPolygon_Split2() { public void testNonplanarPolygon_Split2() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
......
...@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; ...@@ -27,6 +27,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;
import de.hft.stuttgart.citydoctor2.healer.Healer; import de.hft.stuttgart.citydoctor2.healer.Healer;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException; import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
...@@ -35,7 +36,7 @@ public class HealRingSelfIntErrorTest { ...@@ -35,7 +36,7 @@ public class HealRingSelfIntErrorTest {
@Test @Test
public void testIntersectingEdges1() { public void testIntersectingEdges1() {
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);
...@@ -92,7 +93,7 @@ public class HealRingSelfIntErrorTest { ...@@ -92,7 +93,7 @@ public class HealRingSelfIntErrorTest {
@Test @Test
public void testDuplicatePoint1() { public void testDuplicatePoint1() {
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);
...@@ -137,7 +138,7 @@ public class HealRingSelfIntErrorTest { ...@@ -137,7 +138,7 @@ public class HealRingSelfIntErrorTest {
@Test @Test
public void testDuplicatePoint2() { public void testDuplicatePoint2() {
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);
......
...@@ -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;
import de.hft.stuttgart.citydoctor2.healer.Healer; import de.hft.stuttgart.citydoctor2.healer.Healer;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException; import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
...@@ -42,7 +43,7 @@ public class HealSolidNotClosedErrorTest { ...@@ -42,7 +43,7 @@ public class HealSolidNotClosedErrorTest {
public void testVertexCloseToEdge() { public void testVertexCloseToEdge() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); //Angelika: als Test eingefügt Building b = new Building(); //Angelika: als Test eingefügt
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); //Original Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD); //Original
// Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); //Angelika: Test // Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); //Angelika: Test
b.addGeometry(geom); //Angelika: als Test eingefügt b.addGeometry(geom); //Angelika: als Test eingefügt
...@@ -166,7 +167,7 @@ public class HealSolidNotClosedErrorTest { ...@@ -166,7 +167,7 @@ public class HealSolidNotClosedErrorTest {
public void testMissingPolygon() { public void testMissingPolygon() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
...@@ -255,7 +256,7 @@ public class HealSolidNotClosedErrorTest { ...@@ -255,7 +256,7 @@ public class HealSolidNotClosedErrorTest {
@Test @Test
public void test2MissingPolygons() { public void test2MissingPolygons() {
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
...@@ -345,7 +346,7 @@ public class HealSolidNotClosedErrorTest { ...@@ -345,7 +346,7 @@ public class HealSolidNotClosedErrorTest {
public void test2MissingPolygonsCpp() { public void test2MissingPolygonsCpp() {
CppInitializer.initCpp(); CppInitializer.initCpp();
Building b = new Building(); Building b = new Building();
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
b.addGeometry(geom); b.addGeometry(geom);
Vertex v0 = new Vertex(0, 0, 0); Vertex v0 = new Vertex(0, 0, 0);
......
...@@ -30,6 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon; ...@@ -30,6 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Opening; import de.hft.stuttgart.citydoctor2.datastructure.Opening;
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.gui.AutoProWindow; import de.hft.stuttgart.citydoctor2.gui.AutoProWindow;
import de.hft.stuttgart.citydoctor2.gui.HighlightController; import de.hft.stuttgart.citydoctor2.gui.HighlightController;
import de.hft.stuttgart.citydoctor2.gui.ListErrorVisitor; import de.hft.stuttgart.citydoctor2.gui.ListErrorVisitor;
...@@ -614,7 +615,7 @@ public class HealerController { ...@@ -614,7 +615,7 @@ public class HealerController {
List<Polygon> newPolygons = availablePolygons.get(lod); List<Polygon> newPolygons = availablePolygons.get(lod);
if (newPolygons != null) { if (newPolygons != null) {
// found polygons to be added // found polygons to be added
Geometry newGeometry = new Geometry(GeometryType.SOLID, lod); Geometry newGeometry = new Geometry(GeometryType.SOLID, lod, Orientation.OUTWARD);
Set<Polygon> polygons = existingPolygons.get(lod); Set<Polygon> polygons = existingPolygons.get(lod);
if (polygons != null) { if (polygons != null) {
// add existing polygons // add existing polygons
......
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