Commit 45b8f722 authored by Riegel's avatar Riegel
Browse files

Add tests for new datastructures

parent 01673d2c
Pipeline #10322 passed with stage
in 1 minute and 34 seconds
package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.CityGmlParser;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
public class CompositePolygonTest {
@Test
public void testCompositePolygonParsing() throws CityGmlParseException, InvalidGmlFileException {
ParserConfiguration config = new ParserConfiguration(8, false);
CityDoctorModel m = CityGmlParser.parseCityGmlFile("src/test/resources/FZK_haus.gml", config);
Building b = m.getBuildings().get(0);
assertNotNull(b);
assertFalse(b.getBoundarySurfaces().isEmpty());
for (BoundarySurface bs : b.getBoundarySurfaces()) {
assertNotNull(bs);
assertFalse(bs.getGeometries().isEmpty());
for (Geometry geom : bs.getGeometries()) {
assertNotNull(geom);
assertFalse(geom.getPolygons().isEmpty());
}
}
}
}
package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.AbstractCheck;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.citygml4j.core.model.core.ImplicitGeometry;
import org.citygml4j.core.model.core.TransformationMatrix4x4;
import org.junit.Before;
import org.junit.Test;
import org.xmlobjects.gml.model.geometry.DirectPosition;
import org.xmlobjects.gml.model.geometry.primitives.Point;
import org.xmlobjects.gml.model.geometry.primitives.PointProperty;
import org.xmlobjects.gml.util.jama.Matrix;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.Assert.*;
public class ImplicitGeometryTest {
private Path path;
private ParserConfiguration config;
private String pathString = "src/test/resources/ImplicitTestGeom.gml";
private TransformationMatrix4x4 origin;
@Before
public void setUp() {
path = Paths.get(pathString);
config = new ParserConfiguration(8, false);
Matrix og = new Matrix(4, 4);
og.set(0, 0, 1);
og.set(1, 1, 1);
og.set(2, 2, 1);
origin = new TransformationMatrix4x4(og);
}
@Test
public void testLibraryObjectParsing() {
LibraryObject lo = LibraryObject.of(path, config);
assertNotNull(lo);
LibraryObject lo2 = LibraryObject.of(path, config);
assertSame(lo, lo2);
}
@Test
public void testObjectTransform() {
LibraryObject lo = LibraryObject.of(path, config);
assertNotNull(lo);
ImplicitGeometry geom = new ImplicitGeometry();
geom.setTransformationMatrix(origin);
geom.setReferencePoint(new PointProperty(new Point(new DirectPosition(0, 0))));
ImplicitGeometryHolder igh = new ImplicitGeometryHolder(geom, lo);
assertNotNull(igh);
geom.setReferencePoint(new PointProperty(new Point(new DirectPosition(5, 8))));
ImplicitGeometryHolder igh2 = new ImplicitGeometryHolder(geom, lo);
assertNotNull(igh2);
assertNotEquals(igh, igh2);
BoundingBox bb1 = BoundingBox.of(igh.getPolygons());
BoundingBox bb2 = BoundingBox.of(igh2.getPolygons());
assertNotEquals(bb1, bb2);
}
@Test
public void testAccept() {
LibraryObject lib = LibraryObject.of(path, config);
assertNotNull(lib);
ImplicitGeometry geom = new ImplicitGeometry();
geom.setTransformationMatrix(origin);
geom.setReferencePoint(new PointProperty(new Point(new DirectPosition(0, 0))));
int polyCount = lib.getPolygons().size();
ImplicitGeometryHolder igh = new ImplicitGeometryHolder(geom, lib);
AtomicInteger loCounter = new AtomicInteger(0);
AbstractCheck c = new AbstractCheck() {
@Override
public void check(Polygon lo) {
loCounter.incrementAndGet();
}
};
igh.accept(c);
assertEquals("ImplicitGeometryHolder should only check polygons of prototype geometry",
polyCount, loCounter.intValue());
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<core:CityModel xmlns:core='http://www.opengis.net/citygml/2.0' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:gml='http://www.opengis.net/gml' xmlns:xAL='urn:oasis:names:tc:ciq:xsdschema:xAL:2.0' xmlns:app='http://www.opengis.net/citygml/appearance/2.0' xmlns:brid='http://www.opengis.net/citygml/bridge/2.0' xmlns:bldg='http://www.opengis.net/citygml/building/2.0' xmlns:frn='http://www.opengis.net/citygml/cityfurniture/2.0' xmlns:grp='http://www.opengis.net/citygml/cityobjectgroup/2.0' xmlns:gen='http://www.opengis.net/citygml/generics/2.0' xmlns:luse='http://www.opengis.net/citygml/landuse/2.0' xmlns:dem='http://www.opengis.net/citygml/relief/2.0' xmlns:tex='http://www.opengis.net/citygml/texturedsurface/2.0' xmlns:tran='http://www.opengis.net/citygml/transportation/2.0' xmlns:tun='http://www.opengis.net/citygml/tunnel/2.0' xmlns:veg='http://www.opengis.net/citygml/vegetation/2.0' xmlns:wtr='http://www.opengis.net/citygml/waterbody/2.0' xmlns:smil20='http://www.w3.org/2001/SMIL20/' xmlns:smil='http://www.w3.org/2001/SMIL20/Language' xmlns:xml='http://www.w3.org/XML/1998/namespace' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.opengis.net/citygml/profiles/base/2.0 http://schemas.opengis.net/citygml/profiles/base/2.0/CityGML.xsd' gml:id='0'>
<core:cityObjectMember>
<frn:CityFurniture gml:id='ImplicitGeometryLod2'>
<gml:name>TestGeometry</gml:name>
<frn:lod2ImplicitRepresentation>
<core:ImplicitGeometry gml:id='ImplicitGeometry'>
<core:transformationMatrix>
1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
</core:transformationMatrix>
<core:relativeGMLGeometry>
<gml:CompositeSurface gml:id='1' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:surfaceMember>
<gml:Polygon gml:id='2' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='3' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 -2.193 58.441 4.034 -2.193 58.158 4.034 -1.750 58.441 4.034 -2.193 58.441</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='4' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='5' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 -0.039 100.000 4.034 1.864 58.441 4.034 -1.750 58.441 4.034 -0.039 59.536 4.034 -0.039 100.000</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='6' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='7' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 6.111 -37.093 35.821 6.110 -0.039 59.536 4.034 -0.039 59.536 4.034 -1.750 58.441 4.034 -2.193 58.158 4.035 -37.093 35.821 6.111 -37.093 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='8' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='9' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 6.110 -0.039 100.000 6.110 1.973 56.052 4.034 1.973 56.052 4.034 1.864 58.441 4.034 -0.039 100.000 6.110 -0.039 100.000</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='10' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='11' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.035 -37.093 35.821 4.034 -2.164 55.986 4.034 -2.050 56.052 6.110 -2.050 56.052 6.111 -37.093 35.821 4.035 -37.093 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='12' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='13' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 6.111 -37.093 35.821 6.110 -2.050 56.052 6.110 37.015 35.821 6.110 1.973 56.052 6.110 -0.039 100.000 6.110 -0.039 59.536 6.111 -37.093 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='14' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='15' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.035 -37.093 35.821 4.034 -2.193 58.158 4.034 -2.193 55.986 4.034 -2.164 55.986 4.035 -37.093 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='16' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='17' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 37.015 35.821 4.034 -1.923 55.986 4.034 2.087 55.986 4.034 37.015 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='18' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='19' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 1.696 -0.979 55.986 -0.000 -1.958 55.986 -0.000 -1.958 0.000 1.696 -0.979 0.000 1.696 -0.979 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='20' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='21' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 -2.164 55.986 4.034 -1.923 55.986 4.034 -2.050 56.052 4.034 -2.164 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='22' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='23' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 6.110 37.015 35.821 6.110 -2.050 56.052 4.034 -2.050 56.052 4.034 -1.923 55.986 4.034 37.015 35.821 6.110 37.015 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='24' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='25' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 37.015 35.821 4.034 2.087 55.986 4.034 1.973 56.052 6.110 1.973 56.052 6.110 37.015 35.821 4.034 37.015 35.821</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='26' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='27' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -0.000 1.958 0.000 1.696 0.979 0.000 1.696 -0.979 0.000 -0.000 -1.958 0.000 -1.696 -0.979 0.000 -1.696 0.979 0.000 -0.000 1.958 0.000</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='28' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='29' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -1.696 0.979 55.986 -0.000 1.958 55.986 -0.000 1.958 0.000 -1.696 0.979 0.000 -1.696 0.979 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='30' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='31' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -3.336 -2.193 58.441 4.034 -2.193 58.441 4.034 -1.750 58.441 4.034 1.864 58.441 4.034 2.116 58.441 -3.336 2.116 58.441 -3.336 -2.193 58.441</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='32' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='33' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -3.336 -2.193 55.986 4.034 -2.193 55.986 4.034 -2.193 58.158 4.034 -2.193 58.441 -3.336 -2.193 58.441 -3.336 -2.193 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='34' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='35' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 -0.039 100.000 4.034 -0.039 59.536 6.110 -0.039 59.536 6.110 -0.039 100.000 4.034 -0.039 100.000</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='36' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='37' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -0.000 1.958 55.986 1.696 0.979 55.986 1.696 0.979 0.000 -0.000 1.958 0.000 -0.000 1.958 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='38' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='39' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 4.034 2.116 58.441 4.034 1.864 58.441 4.034 1.973 56.052 4.034 2.087 55.986 4.034 2.116 55.986 4.034 2.116 58.441</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='40' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='41' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> 1.696 0.979 55.986 1.696 -0.979 55.986 1.696 -0.979 0.000 1.696 0.979 0.000 1.696 0.979 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='42' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='43' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -0.000 -1.958 55.986 -1.696 -0.979 55.986 -1.696 -0.979 0.000 -0.000 -1.958 0.000 -0.000 -1.958 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='44' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='45' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -3.336 2.116 55.986 4.034 2.116 55.986 4.034 2.087 55.986 4.034 -1.923 55.986 4.034 -2.164 55.986 4.034 -2.193 55.986 -3.336 -2.193 55.986 -3.336 2.116 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing gml:id='46' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -0.000 1.958 55.986 -1.696 0.979 55.986 -1.696 -0.979 55.986 -0.000 -1.958 55.986 1.696 -0.979 55.986 1.696 0.979 55.986 -0.000 1.958 55.986</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='47' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='48' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -1.696 -0.979 55.986 -1.696 0.979 55.986 -1.696 0.979 0.000 -1.696 -0.979 0.000 -1.696 -0.979 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='49' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='50' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -3.336 2.116 55.986 -3.336 -2.193 55.986 -3.336 -2.193 58.441 -3.336 2.116 58.441 -3.336 2.116 55.986</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id='51' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:exterior>
<gml:LinearRing gml:id='52' srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'>
<gml:posList srsName='urn:ogc:def:crs:EPSG::-1' srsDimension='3'> -3.336 2.116 58.441 4.034 2.116 58.441 4.034 2.116 55.986 -3.336 2.116 55.986 -3.336 2.116 58.441</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:CompositeSurface>
</core:relativeGMLGeometry>
<core:referencePoint>
<gml:Point><gml:pos srsDimension="3">0.0 0.0 0.0</gml:pos>
</gml:Point></core:referencePoint>
</core:ImplicitGeometry>
</frn:lod2ImplicitRepresentation>
</frn:CityFurniture>
</core:cityObjectMember>
</core:CityModel>
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