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