From 0135def5ae5b0ac44ed1c743dfc1dcf320c83456 Mon Sep 17 00:00:00 2001
From: Riegel <alexander.riegel@hft-stuttgart.de>
Date: Wed, 27 Nov 2024 16:12:30 +0100
Subject: [PATCH] Test: Add UnitTests for ZipLoader

---
 .../citydoctor2/ziploader/ZipTest.java        |  65 ++++++
 .../src/test/resources/mock_archive.zip       | Bin 0 -> 6157 bytes
 .../src/test/resources/mock_archive/mock1.gml | 193 ++++++++++++++++++
 .../src/test/resources/mock_archive/mock2.gml | 193 ++++++++++++++++++
 .../src/test/resources/mock_archive/mock3.gml | 193 ++++++++++++++++++
 .../src/test/resources/mock_archive/mock4.gml | 193 ++++++++++++++++++
 .../src/test/resources/mock_archive/mock5.gml | 193 ++++++++++++++++++
 7 files changed, 1030 insertions(+)
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/java/de/hft/stuttgart/citydoctor2/ziploader/ZipTest.java
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive.zip
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock1.gml
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock2.gml
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock3.gml
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock4.gml
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock5.gml

diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/java/de/hft/stuttgart/citydoctor2/ziploader/ZipTest.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/java/de/hft/stuttgart/citydoctor2/ziploader/ZipTest.java
new file mode 100644
index 0000000..d4403c0
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/java/de/hft/stuttgart/citydoctor2/ziploader/ZipTest.java
@@ -0,0 +1,65 @@
+package de.hft.stuttgart.citydoctor2.ziploader;
+
+import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
+import org.apache.commons.io.FileUtils;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static org.junit.Assert.*;
+
+public class ZipTest {
+
+    ParserConfiguration config = new ParserConfiguration(8,false);
+
+    @Rule
+    public ExpectedException excRule = ExpectedException.none();
+
+    @Test
+    public void testUnzipping() {
+        CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/mock_archive.zip", config);
+        assertNotNull(cgmlArch);
+        assertEquals(5,cgmlArch.getEntries().size());
+        for (CityGmlZipEntry entry : cgmlArch.getEntries()) {
+            assertNotNull(entry);
+            assertTrue(entry.getFileName().matches("^mock[1-5].gml$"));
+            assertNotNull(entry.getModel());
+        }
+    }
+
+    @Test
+    public void testZippingWithFaultyFilepath(){
+        CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/mock_archive.zip", config);
+        excRule.expect(IllegalArgumentException.class);
+        excRule.expectMessage("Target zip-filepath must end with '.zip'");
+        cgmlArch.exportToZipFile("src/test/resources/mock");
+    }
+
+    @Test
+    public void testZipping() throws IOException {
+        CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/mock_archive.zip", config);
+        Path tmpDir = null;
+        try {
+            tmpDir = Files.createTempDirectory("testTmp");
+            tmpDir.toFile().deleteOnExit();
+            String expPath = tmpDir.toString() + "/export.zip";
+            cgmlArch.exportToZipFile(expPath);
+            CityGmlArchive cgmlExport = CityGmlArchive.fromZipFile(expPath, config);
+            assertNotNull(cgmlExport);
+            assertEquals(5, cgmlExport.getEntries().size());
+        } catch (Exception e) {
+            // Rethrow Exceptions to ensure deletion of tmpDir with finally
+            throw e;
+        } finally {
+            if (tmpDir != null) {
+                FileUtils.deleteDirectory(tmpDir.toFile());
+            }
+        }
+    }
+
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive.zip b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive.zip
new file mode 100644
index 0000000000000000000000000000000000000000..accc8527ab523e3f82e65893f6a39a7eea0cd903
GIT binary patch
literal 6157
zcmWIWW@Zs#-~dARpqxksD6o}gVBlm>V93o+&Nk9Z&&>%9;bmYCmo-kW6m?He0^-sN
zZU#mcka95bHu7xWBR2uN<|Ec6CsZdMu$MTWqH`m3#>q*{8mkkhp5>LiGsEvz-j%!e
z62Db`lPtP<SngTlC$5)e(#O>PH6EQ9k*U|Q?)~a@MOUvcJ@)7G&(jaSnjLt+yo6_B
z!3{Ih#k>hSROGn+CR#sQ{m%dG_4QF_4^9eraYyN&g{s^Uhl<uS6OScUpZ$64;@9?e
z_THR?7s|_8C%pD{{KmZI`;&QH?+<U7q-QZ<k*fD^-3`yft@M;yQg3Ctmv3JAMOfxV
zka^6ZEz8-Pz5KZhn^vD;X4`SWJHh&v*y0cCc|IPz#PPNC^Rs7e{TFSgF0@HHZ{YK{
z|7FUyn8OF&E}BsIljTsiV*Al!oRPb1-o4^%W#$aeJ*f5bck8xPIg6E-j<=kuS~Bf;
zOLg9P!-ey1p1hvyB(rn-osc?te|6>QvQuk*NyrE*oxQK0vS6FV-ba7xuD{(jYyX0R
zr(M1h5{HjoUVfrk!9k`cQ>047kZlb^PNOWtMmFQ=#T~W>-#3(B=?#0meE;=;0ILVQ
zi+Wb4?oVc4n`R^8a#5q-T*h(!p%2L-zj9jV+jVv*{$N}r&}6+aHtAJ^UB&yhdwmxf
zmz`2E{BwhG?Xva<cH#1q7>cxX^wJXC3_e*MXcp<X)1b0X^~XhZr7n|aPaPg|c_q(T
zp>uj|7MFnQ<kPWB_*vW;d1MpfORLN{bU0_VrDfY5-ZQOxzVbe`D~$WIA50TCW%b~?
z`TGMs?sI<YJze{ZrB<X-MsVrvUh4}1$|2ugZ$CP};N)_H2nVeVZpjMlbBw+EgarPU
zOfb(mpRREu!9xCSW}3B{nvc((xIceR-H`C;-{KhgU>diiz%FC0*Sef$EsA{Uf}&Xs
z)gcFcB16j*=DD7W63M&q&u;GdKW`&cme%hrelL^$TITsb%X8l>&xJp?h+jU3y(&^&
zwCX}_s!wOig6El@oH>q1EL-lqD10sxeSf!v`obbpD}TXf)<>6_TK5{bw{PlxJ)!%_
zloyi02}MsnU+xT@_DRD+v^qseZHo8%?!JUQ_iKvQ&z$KioPM#BGfBqa)Vm21a<80H
zWdo#_sXp78+0E~KZcfdKQ|&!PD^d<Sdvq##T1Io&MtA!B{L=JGQ{koSs@kf;|02__
zf19FL{D8$*Q+M$*=7-moJ-g?+;^wNzv)68BnRQ*w5m|lnN)GE+)89vo0|Z~YzDVb~
zyNhGt_iVAM{c;PR^FI(;7%t1dSY}h)m7008ev2<m+nr{5`)iDo*E=4!k2lPUj+b5i
zxT52$(YF8EU#gwLmOA+h>OI+38@l<z`hVv)#x8m`>9^<A4g1e*jCIampZ)Ib*PDBF
zGZU_!UpjgH($<apetJ%wr4(<y@>s|$@AS~NBE`$6)<j-RtG#^6;;CBXSGR)}Z~y%~
zt8KM-tB|kyvAfyfnbI#@^)rQ2zVl1eebo=}X6GoZ)fSfp78Rh9C4gX=V~kPeq>Pq1
zqh-!$nKN4E(5%cc87*^0+c~4{oY8g;9ospkC}mD3u#J;E+Rhnm=Zv;<M%y_wYv&lE
zlsP`Y@`i_fbUbHtJZE$~XLLM=-0>VnCJ|=DC^GU`4`>t_2DUYVSVWI02Y3@}Yzc5+
z31lo$!$!m#`+@^vEKxl};*E{rg&0dz<Bxb_F9<@6C8~T6@MdKLMFuMnZf0a)a1jIX
E0O5S&AOHXW

literal 0
HcmV?d00001

diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock1.gml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock1.gml
new file mode 100644
index 0000000..4671362
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock1.gml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd">
+
+<!--
+Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
+Modelliert mit Begrenzungsflächen (eine Dachfläche, 4 Wandflächen, 1 Grundfläche), 
+die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen referenziert 
+
+CityGML 2.0
+
+Gebäudevolumen: 56,25 m3
+
+10.5.2017
+
+Author: V. Coors, HFT Stuttgart
+Lizenz: 
+-->
+
+	<core:cityObjectMember>
+		<bldg:Building gml:id="_Simple_BD.1">
+			<bldg:lod2Solid>
+				<gml:Solid>
+					<gml:exterior>
+						<gml:CompositeSurface>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
+						</gml:CompositeSurface>
+					</gml:exterior>
+				</gml:Solid>
+			</bldg:lod2Solid>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.2">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.2_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 15.0 0.0
+												13.0 15.0 3.0
+												13.0 10.0 3.0
+												13.0 10.0 0.0
+												13.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_2">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.3">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.3_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 15.0 0.0
+												10.0 15.0 3.0
+												11.5 15.0 4.5
+												13.0 15.0 3.0
+												13.0 15.0 0.0
+												10.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_3">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.4">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.4_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												10.0 15.0 3.0
+												10.0 15.0 0.0
+												10.0 10.0 0.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_4">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.5">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.5_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 10.0 0.0
+												13.0 10.0 3.0
+												11.5 10.0 4.5
+												10.0 10.0 3.0
+												10.0 10.0 0.0
+												13.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:RoofSurface gml:id="_Simple_BD.1_RoofSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.6">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.6_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												11.5 10.0 4.5
+												11.5 15.0 4.5
+												10.0 15.0 3.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.7">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.7_LR.1">
+											<gml:posList srsDimension="3">
+												11.5 10.0 4.5
+												13.0 10.0 3.0
+												13.0 15.0 3.0
+												11.5 15.0 4.5
+												11.5 10.0 4.5
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:RoofSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:GroundSurface gml:id="_Simple_BD.1_GroundSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.1">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.1_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 0.0
+												10.0 15.0 0.0
+												13.0 15.0 0.0
+												13.0 10.0 0.0
+												10.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:GroundSurface>
+			</bldg:boundedBy>
+		</bldg:Building>
+	</core:cityObjectMember>
+</core:CityModel>
\ No newline at end of file
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock2.gml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock2.gml
new file mode 100644
index 0000000..4671362
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock2.gml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd">
+
+<!--
+Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
+Modelliert mit Begrenzungsflächen (eine Dachfläche, 4 Wandflächen, 1 Grundfläche), 
+die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen referenziert 
+
+CityGML 2.0
+
+Gebäudevolumen: 56,25 m3
+
+10.5.2017
+
+Author: V. Coors, HFT Stuttgart
+Lizenz: 
+-->
+
+	<core:cityObjectMember>
+		<bldg:Building gml:id="_Simple_BD.1">
+			<bldg:lod2Solid>
+				<gml:Solid>
+					<gml:exterior>
+						<gml:CompositeSurface>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
+						</gml:CompositeSurface>
+					</gml:exterior>
+				</gml:Solid>
+			</bldg:lod2Solid>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.2">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.2_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 15.0 0.0
+												13.0 15.0 3.0
+												13.0 10.0 3.0
+												13.0 10.0 0.0
+												13.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_2">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.3">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.3_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 15.0 0.0
+												10.0 15.0 3.0
+												11.5 15.0 4.5
+												13.0 15.0 3.0
+												13.0 15.0 0.0
+												10.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_3">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.4">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.4_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												10.0 15.0 3.0
+												10.0 15.0 0.0
+												10.0 10.0 0.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_4">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.5">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.5_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 10.0 0.0
+												13.0 10.0 3.0
+												11.5 10.0 4.5
+												10.0 10.0 3.0
+												10.0 10.0 0.0
+												13.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:RoofSurface gml:id="_Simple_BD.1_RoofSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.6">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.6_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												11.5 10.0 4.5
+												11.5 15.0 4.5
+												10.0 15.0 3.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.7">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.7_LR.1">
+											<gml:posList srsDimension="3">
+												11.5 10.0 4.5
+												13.0 10.0 3.0
+												13.0 15.0 3.0
+												11.5 15.0 4.5
+												11.5 10.0 4.5
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:RoofSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:GroundSurface gml:id="_Simple_BD.1_GroundSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.1">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.1_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 0.0
+												10.0 15.0 0.0
+												13.0 15.0 0.0
+												13.0 10.0 0.0
+												10.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:GroundSurface>
+			</bldg:boundedBy>
+		</bldg:Building>
+	</core:cityObjectMember>
+</core:CityModel>
\ No newline at end of file
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock3.gml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock3.gml
new file mode 100644
index 0000000..4671362
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock3.gml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd">
+
+<!--
+Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
+Modelliert mit Begrenzungsflächen (eine Dachfläche, 4 Wandflächen, 1 Grundfläche), 
+die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen referenziert 
+
+CityGML 2.0
+
+Gebäudevolumen: 56,25 m3
+
+10.5.2017
+
+Author: V. Coors, HFT Stuttgart
+Lizenz: 
+-->
+
+	<core:cityObjectMember>
+		<bldg:Building gml:id="_Simple_BD.1">
+			<bldg:lod2Solid>
+				<gml:Solid>
+					<gml:exterior>
+						<gml:CompositeSurface>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
+						</gml:CompositeSurface>
+					</gml:exterior>
+				</gml:Solid>
+			</bldg:lod2Solid>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.2">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.2_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 15.0 0.0
+												13.0 15.0 3.0
+												13.0 10.0 3.0
+												13.0 10.0 0.0
+												13.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_2">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.3">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.3_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 15.0 0.0
+												10.0 15.0 3.0
+												11.5 15.0 4.5
+												13.0 15.0 3.0
+												13.0 15.0 0.0
+												10.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_3">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.4">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.4_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												10.0 15.0 3.0
+												10.0 15.0 0.0
+												10.0 10.0 0.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_4">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.5">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.5_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 10.0 0.0
+												13.0 10.0 3.0
+												11.5 10.0 4.5
+												10.0 10.0 3.0
+												10.0 10.0 0.0
+												13.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:RoofSurface gml:id="_Simple_BD.1_RoofSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.6">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.6_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												11.5 10.0 4.5
+												11.5 15.0 4.5
+												10.0 15.0 3.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.7">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.7_LR.1">
+											<gml:posList srsDimension="3">
+												11.5 10.0 4.5
+												13.0 10.0 3.0
+												13.0 15.0 3.0
+												11.5 15.0 4.5
+												11.5 10.0 4.5
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:RoofSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:GroundSurface gml:id="_Simple_BD.1_GroundSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.1">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.1_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 0.0
+												10.0 15.0 0.0
+												13.0 15.0 0.0
+												13.0 10.0 0.0
+												10.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:GroundSurface>
+			</bldg:boundedBy>
+		</bldg:Building>
+	</core:cityObjectMember>
+</core:CityModel>
\ No newline at end of file
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock4.gml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock4.gml
new file mode 100644
index 0000000..4671362
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock4.gml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd">
+
+<!--
+Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
+Modelliert mit Begrenzungsflächen (eine Dachfläche, 4 Wandflächen, 1 Grundfläche), 
+die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen referenziert 
+
+CityGML 2.0
+
+Gebäudevolumen: 56,25 m3
+
+10.5.2017
+
+Author: V. Coors, HFT Stuttgart
+Lizenz: 
+-->
+
+	<core:cityObjectMember>
+		<bldg:Building gml:id="_Simple_BD.1">
+			<bldg:lod2Solid>
+				<gml:Solid>
+					<gml:exterior>
+						<gml:CompositeSurface>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
+						</gml:CompositeSurface>
+					</gml:exterior>
+				</gml:Solid>
+			</bldg:lod2Solid>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.2">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.2_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 15.0 0.0
+												13.0 15.0 3.0
+												13.0 10.0 3.0
+												13.0 10.0 0.0
+												13.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_2">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.3">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.3_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 15.0 0.0
+												10.0 15.0 3.0
+												11.5 15.0 4.5
+												13.0 15.0 3.0
+												13.0 15.0 0.0
+												10.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_3">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.4">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.4_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												10.0 15.0 3.0
+												10.0 15.0 0.0
+												10.0 10.0 0.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_4">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.5">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.5_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 10.0 0.0
+												13.0 10.0 3.0
+												11.5 10.0 4.5
+												10.0 10.0 3.0
+												10.0 10.0 0.0
+												13.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:RoofSurface gml:id="_Simple_BD.1_RoofSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.6">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.6_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												11.5 10.0 4.5
+												11.5 15.0 4.5
+												10.0 15.0 3.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.7">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.7_LR.1">
+											<gml:posList srsDimension="3">
+												11.5 10.0 4.5
+												13.0 10.0 3.0
+												13.0 15.0 3.0
+												11.5 15.0 4.5
+												11.5 10.0 4.5
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:RoofSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:GroundSurface gml:id="_Simple_BD.1_GroundSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.1">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.1_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 0.0
+												10.0 15.0 0.0
+												13.0 15.0 0.0
+												13.0 10.0 0.0
+												10.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:GroundSurface>
+			</bldg:boundedBy>
+		</bldg:Building>
+	</core:cityObjectMember>
+</core:CityModel>
\ No newline at end of file
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock5.gml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock5.gml
new file mode 100644
index 0000000..4671362
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/test/resources/mock_archive/mock5.gml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd">
+
+<!--
+Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
+Modelliert mit Begrenzungsflächen (eine Dachfläche, 4 Wandflächen, 1 Grundfläche), 
+die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen referenziert 
+
+CityGML 2.0
+
+Gebäudevolumen: 56,25 m3
+
+10.5.2017
+
+Author: V. Coors, HFT Stuttgart
+Lizenz: 
+-->
+
+	<core:cityObjectMember>
+		<bldg:Building gml:id="_Simple_BD.1">
+			<bldg:lod2Solid>
+				<gml:Solid>
+					<gml:exterior>
+						<gml:CompositeSurface>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
+						</gml:CompositeSurface>
+					</gml:exterior>
+				</gml:Solid>
+			</bldg:lod2Solid>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.2">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.2_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 15.0 0.0
+												13.0 15.0 3.0
+												13.0 10.0 3.0
+												13.0 10.0 0.0
+												13.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_2">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.3">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.3_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 15.0 0.0
+												10.0 15.0 3.0
+												11.5 15.0 4.5
+												13.0 15.0 3.0
+												13.0 15.0 0.0
+												10.0 15.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_3">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.4">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.4_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												10.0 15.0 3.0
+												10.0 15.0 0.0
+												10.0 10.0 0.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:WallSurface gml:id="_Simple_BD.1_WallSurface_4">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.5">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.5_LR.1">
+											<gml:posList srsDimension="3">
+												13.0 10.0 0.0
+												13.0 10.0 3.0
+												11.5 10.0 4.5
+												10.0 10.0 3.0
+												10.0 10.0 0.0
+												13.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:WallSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:RoofSurface gml:id="_Simple_BD.1_RoofSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.6">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.6_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 3.0
+												11.5 10.0 4.5
+												11.5 15.0 4.5
+												10.0 15.0 3.0
+												10.0 10.0 3.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.7">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.7_LR.1">
+											<gml:posList srsDimension="3">
+												11.5 10.0 4.5
+												13.0 10.0 3.0
+												13.0 15.0 3.0
+												11.5 15.0 4.5
+												11.5 10.0 4.5
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:RoofSurface>
+			</bldg:boundedBy>
+			<bldg:boundedBy>
+				<bldg:GroundSurface gml:id="_Simple_BD.1_GroundSurface_1">
+					<bldg:lod2MultiSurface>
+						<gml:MultiSurface>
+							<gml:surfaceMember>
+								<gml:Polygon gml:id="_Simple_BD.1_PG.1">
+									<gml:exterior>
+										<gml:LinearRing gml:id="_Simple_BD.1_PG.1_LR.1">
+											<gml:posList srsDimension="3">
+												10.0 10.0 0.0
+												10.0 15.0 0.0
+												13.0 15.0 0.0
+												13.0 10.0 0.0
+												10.0 10.0 0.0
+											</gml:posList>
+										</gml:LinearRing>
+									</gml:exterior>
+								</gml:Polygon>
+							</gml:surfaceMember>
+						</gml:MultiSurface>
+					</bldg:lod2MultiSurface>
+				</bldg:GroundSurface>
+			</bldg:boundedBy>
+		</bldg:Building>
+	</core:cityObjectMember>
+</core:CityModel>
\ No newline at end of file
-- 
GitLab