Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Compare Revisions
040af2d29b2cb2c6aae2db6f7a2bb4eb95fc7e4b...2d57794b38269d8f588b97439753c98e05695651
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorModel/src/test/resources/zip/epsg/epsg2.gml
0 → 100644
View file @
2d57794b
<?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"
>
<gml:boundedBy>
<gml:Envelope
srsDimension=
"3"
srsName=
"urn:ogc:def:crs:EPSG::7415"
>
<gml:lowerCorner>
84616.468 447422.999 0
</gml:lowerCorner>
<gml:upperCorner>
85140.839 447750.636 100
</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
</core:CityModel>
\ No newline at end of file
CityDoctorParent/CityDoctorModel/src/test/resources/zip/implicit.zip
0 → 100644
View file @
2d57794b
File added
CityDoctorParent/CityDoctorModel/src/test/resources/zip/implicit/Implicit1.gml
0 → 100644
View file @
2d57794b
<?xml version="1.0" encoding="UTF-8"?>
<core:CityModel
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
xmlns:tran=
"http://www.opengis.net/citygml/transportation/2.0"
xmlns:wtr=
"http://www.opengis.net/citygml/waterbody/2.0"
xmlns:smil20lang=
"http://www.w3.org/2001/SMIL20/Language"
xmlns:grp=
"http://www.opengis.net/citygml/cityobjectgroup/2.0"
xmlns:luse=
"http://www.opengis.net/citygml/landuse/2.0"
xmlns:frn=
"http://www.opengis.net/citygml/cityfurniture/2.0"
xmlns:app=
"http://www.opengis.net/citygml/appearance/2.0"
xmlns:tex=
"http://www.opengis.net/citygml/texturedsurface/2.0"
xmlns:smil20=
"http://www.w3.org/2001/SMIL20/"
xmlns:xAL=
"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:dem=
"http://www.opengis.net/citygml/relief/2.0"
xmlns:veg=
"http://www.opengis.net/citygml/vegetation/2.0"
xmlns:brid=
"http://www.opengis.net/citygml/bridge/2.0"
xmlns:tun=
"http://www.opengis.net/citygml/tunnel/2.0"
xmlns:gen=
"http://www.opengis.net/citygml/generics/2.0"
xmlns:wfs=
"http://www.opengis.net/wfs"
xsi:schemaLocation=
"http://www.opengis.net/citygml/landuse/2.0 http://schemas.opengis.net/citygml/landuse/2.0/landUse.xsd http://www.opengis.net/citygml/cityfurniture/2.0 http://schemas.opengis.net/citygml/cityfurniture/2.0/cityFurniture.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/texturedsurface/2.0 http://schemas.opengis.net/citygml/texturedsurface/2.0/texturedSurface.xsd http://www.opengis.net/citygml/transportation/2.0 http://schemas.opengis.net/citygml/transportation/2.0/transportation.xsd http://www.opengis.net/citygml/waterbody/2.0 http://schemas.opengis.net/citygml/waterbody/2.0/waterBody.xsd http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/vegetation/2.0 http://schemas.opengis.net/citygml/vegetation/2.0/vegetation.xsd http://www.opengis.net/citygml/cityobjectgroup/2.0 http://schemas.opengis.net/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd http://www.opengis.net/citygml/bridge/2.0 http://schemas.opengis.net/citygml/bridge/2.0/bridge.xsd http://www.opengis.net/citygml/tunnel/2.0 http://schemas.opengis.net/citygml/tunnel/2.0/tunnel.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd"
>
<gml:description>
Testdataset
</gml:description>
<gml:name>
ImplicitGeometry zipfile testdata
</gml:name>
<core:cityObjectMember>
<gen:GenericCityObject>
<gml:description>
CPA_Symbol
</gml:description>
<gml:name>
Implicit1
</gml:name>
<gen:lod2Geometry>
<gml:MultiSurface>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-5"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-5"
>
<gml:posList
srsDimension=
"3"
>
0.549000 0.854000 1.282000 0.549000 0.854000 1.232000 -0.542000 0.855000 1.232000 -0.542000 0.855000 1.282000 0.549000 0.854000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-6"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-6"
>
<gml:posList
srsDimension=
"3"
>
-0.744000 0.755000 0.000000 -0.744000 0.755000 2.100000 -0.745000 -0.895000 2.100000 -0.745000 -0.895000 2.190000 -0.745000 -0.825000 2.260000 -0.744000 0.785000 2.260000 -0.744000 0.855000 2.190000 -0.744000 0.855000 0.000000 -0.744000 0.755000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-7"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-7"
>
<gml:posList
srsDimension=
"3"
>
0.647000 -0.896000 2.100000 0.647000 -0.896000 2.190000 -0.745000 -0.895000 2.190000 -0.745000 -0.895000 2.100000 0.647000 -0.896000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-8"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-8"
>
<gml:posList
srsDimension=
"3"
>
-0.745000 -0.825000 2.260000 -0.745000 -0.895000 2.190000 0.647000 -0.896000 2.190000 0.647000 -0.826000 2.260000 -0.745000 -0.825000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-9"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-9"
>
<gml:posList
srsDimension=
"3"
>
-0.744000 0.855000 2.190000 -0.744000 0.785000 2.260000 0.647000 0.784000 2.260000 0.647000 0.854000 2.190000 -0.744000 0.855000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-10"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-10"
>
<gml:posList
srsDimension=
"3"
>
-0.542000 0.855000 1.132000 -0.542000 0.855000 1.182000 0.549000 0.854000 1.182000 0.549000 0.854000 1.132000 -0.542000 0.855000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-11"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-11"
>
<gml:posList
srsDimension=
"3"
>
0.647000 0.784000 2.260000 -0.744000 0.785000 2.260000 -0.745000 -0.825000 2.260000 0.647000 -0.826000 2.260000 0.647000 0.784000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-12"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-12"
>
<gml:posList
srsDimension=
"3"
>
-0.646000 0.755000 2.100000 -0.744000 0.755000 2.100000 -0.744000 0.755000 0.000000 -0.646000 0.755000 0.000000 -0.646000 0.755000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-13"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-13"
>
<gml:posList
srsDimension=
"3"
>
-0.745000 -0.895000 2.100000 -0.744000 0.755000 2.100000 -0.646000 0.755000 2.100000 -0.646000 0.855000 2.100000 0.647000 0.854000 2.100000 0.647000 -0.896000 2.100000 -0.745000 -0.895000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-14"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-14"
>
<gml:posList
srsDimension=
"3"
>
-0.744000 0.855000 2.190000 0.647000 0.854000 2.190000 0.647000 0.854000 2.100000 -0.646000 0.855000 2.100000 -0.646000 0.855000 0.547000 -0.646000 0.855000 0.504000 -0.646000 0.855000 0.300000 -0.646000 0.855000 0.220000 -0.646000 0.855000 0.000000 -0.744000 0.855000 0.000000 -0.744000 0.855000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-15"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-15"
>
<gml:posList
srsDimension=
"3"
>
-0.646000 0.855000 0.220000 -0.646000 0.855000 0.300000 0.647000 0.854000 0.300000 0.647000 0.854000 0.220000 -0.646000 0.855000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-16"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-16"
>
<gml:posList
srsDimension=
"3"
>
-0.646000 0.855000 2.100000 -0.646000 0.755000 2.100000 -0.646000 0.755000 0.000000 -0.646000 0.855000 0.000000 -0.646000 0.855000 0.220000 -0.646000 0.855000 0.300000 -0.646000 0.855000 0.504000 -0.646000 0.855000 0.547000 -0.646000 0.855000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-17"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-17"
>
<gml:posList
srsDimension=
"3"
>
-0.646000 0.855000 0.547000 -0.646000 0.855000 0.504000 -0.546000 0.855000 0.504000 -0.546000 0.855000 0.547000 -0.646000 0.855000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-18"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-18"
>
<gml:posList
srsDimension=
"3"
>
-0.546000 0.855000 0.504000 -0.546000 0.530000 0.504000 -0.546000 0.530000 0.547000 -0.546000 0.855000 0.547000 -0.546000 0.855000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-19"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-19"
>
<gml:posList
srsDimension=
"3"
>
-0.496000 0.530000 0.504000 -0.496000 0.855000 0.504000 -0.496000 0.855000 0.547000 -0.496000 0.530000 0.547000 -0.496000 0.530000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-20"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-20"
>
<gml:posList
srsDimension=
"3"
>
-0.546000 0.530000 0.547000 -0.546000 0.530000 0.504000 -0.496000 0.530000 0.504000 -0.496000 0.530000 0.547000 -0.546000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-21"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-21"
>
<gml:posList
srsDimension=
"3"
>
-0.546000 0.855000 0.547000 -0.546000 0.530000 0.547000 -0.496000 0.530000 0.547000 -0.496000 0.855000 0.547000 -0.546000 0.855000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-22"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-22"
>
<gml:posList
srsDimension=
"3"
>
0.497000 0.854000 0.504000 0.497000 0.530000 0.504000 0.497000 0.530000 0.547000 0.497000 0.854000 0.547000 0.497000 0.854000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-23"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-23"
>
<gml:posList
srsDimension=
"3"
>
0.547000 0.530000 0.504000 0.547000 0.530000 0.547000 0.497000 0.530000 0.547000 0.497000 0.530000 0.504000 0.547000 0.530000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-24"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-24"
>
<gml:posList
srsDimension=
"3"
>
0.547000 0.530000 0.547000 0.547000 0.854000 0.547000 0.497000 0.854000 0.547000 0.497000 0.530000 0.547000 0.547000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-25"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-25"
>
<gml:posList
srsDimension=
"3"
>
-0.196000 0.855000 0.547000 -0.196000 0.530000 0.547000 -0.146000 0.530000 0.547000 -0.146000 0.854000 0.547000 -0.196000 0.855000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-26"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-26"
>
<gml:posList
srsDimension=
"3"
>
-0.196000 0.530000 0.547000 -0.196000 0.530000 0.504000 -0.146000 0.530000 0.504000 -0.146000 0.530000 0.547000 -0.196000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-27"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-27"
>
<gml:posList
srsDimension=
"3"
>
-0.146000 0.530000 0.504000 -0.146000 0.854000 0.504000 -0.146000 0.854000 0.547000 -0.146000 0.530000 0.547000 -0.146000 0.530000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-28"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-28"
>
<gml:posList
srsDimension=
"3"
>
-0.196000 0.855000 0.504000 -0.196000 0.530000 0.504000 -0.196000 0.530000 0.547000 -0.196000 0.855000 0.547000 -0.196000 0.855000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-29"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-29"
>
<gml:posList
srsDimension=
"3"
>
0.144000 0.530000 0.547000 0.144000 0.530000 0.504000 0.194000 0.530000 0.504000 0.194000 0.530000 0.547000 0.144000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-30"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-30"
>
<gml:posList
srsDimension=
"3"
>
0.194000 0.530000 0.504000 0.194000 0.854000 0.504000 0.194000 0.854000 0.547000 0.194000 0.530000 0.547000 0.194000 0.530000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-31"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-31"
>
<gml:posList
srsDimension=
"3"
>
0.144000 0.854000 0.547000 0.144000 0.530000 0.547000 0.194000 0.530000 0.547000 0.194000 0.854000 0.547000 0.144000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-32"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-32"
>
<gml:posList
srsDimension=
"3"
>
-0.476000 0.835000 0.547000 -0.476000 0.530000 0.547000 -0.216000 0.530000 0.547000 -0.216000 0.835000 0.547000 -0.476000 0.835000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-33"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-33"
>
<gml:posList
srsDimension=
"3"
>
-0.476000 0.530000 0.520000 -0.476000 0.835000 0.520000 -0.216000 0.835000 0.520000 -0.216000 0.530000 0.520000 -0.476000 0.530000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-34"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-34"
>
<gml:posList
srsDimension=
"3"
>
-0.476000 0.530000 0.547000 -0.476000 0.835000 0.547000 -0.476000 0.835000 0.520000 -0.476000 0.530000 0.520000 -0.476000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-35"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-35"
>
<gml:posList
srsDimension=
"3"
>
-0.476000 0.835000 0.547000 -0.216000 0.835000 0.547000 -0.216000 0.835000 0.520000 -0.476000 0.835000 0.520000 -0.476000 0.835000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-36"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-36"
>
<gml:posList
srsDimension=
"3"
>
-0.216000 0.835000 0.547000 -0.216000 0.530000 0.547000 -0.216000 0.530000 0.520000 -0.216000 0.835000 0.520000 -0.216000 0.835000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-37"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-37"
>
<gml:posList
srsDimension=
"3"
>
-0.216000 0.530000 0.547000 -0.476000 0.530000 0.547000 -0.476000 0.530000 0.520000 -0.216000 0.530000 0.520000 -0.216000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-38"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-38"
>
<gml:posList
srsDimension=
"3"
>
0.144000 0.854000 0.504000 0.144000 0.530000 0.504000 0.144000 0.530000 0.547000 0.144000 0.854000 0.547000 0.144000 0.854000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-39"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-39"
>
<gml:posList
srsDimension=
"3"
>
-0.132000 0.834000 0.547000 0.128000 0.834000 0.547000 0.128000 0.834000 0.520000 -0.132000 0.834000 0.520000 -0.132000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-40"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-40"
>
<gml:posList
srsDimension=
"3"
>
-0.132000 0.530000 0.520000 -0.132000 0.834000 0.520000 0.128000 0.834000 0.520000 0.128000 0.530000 0.520000 -0.132000 0.530000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-41"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-41"
>
<gml:posList
srsDimension=
"3"
>
-0.132000 0.530000 0.547000 -0.132000 0.834000 0.547000 -0.132000 0.834000 0.520000 -0.132000 0.530000 0.520000 -0.132000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-42"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-42"
>
<gml:posList
srsDimension=
"3"
>
0.128000 0.530000 0.547000 -0.132000 0.530000 0.547000 -0.132000 0.530000 0.520000 0.128000 0.530000 0.520000 0.128000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-43"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-43"
>
<gml:posList
srsDimension=
"3"
>
0.128000 0.834000 0.547000 0.128000 0.530000 0.547000 0.128000 0.530000 0.520000 0.128000 0.834000 0.520000 0.128000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-44"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-44"
>
<gml:posList
srsDimension=
"3"
>
-0.132000 0.834000 0.547000 -0.132000 0.530000 0.547000 0.128000 0.530000 0.547000 0.128000 0.834000 0.547000 -0.132000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-45"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-45"
>
<gml:posList
srsDimension=
"3"
>
0.215000 0.834000 0.547000 0.215000 0.530000 0.547000 0.475000 0.530000 0.547000 0.475000 0.834000 0.547000 0.215000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-46"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-46"
>
<gml:posList
srsDimension=
"3"
>
0.475000 0.834000 0.547000 0.475000 0.530000 0.547000 0.475000 0.530000 0.520000 0.475000 0.834000 0.520000 0.475000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-47"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-47"
>
<gml:posList
srsDimension=
"3"
>
0.215000 0.530000 0.520000 0.215000 0.834000 0.520000 0.475000 0.834000 0.520000 0.475000 0.530000 0.520000 0.215000 0.530000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-48"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-48"
>
<gml:posList
srsDimension=
"3"
>
0.475000 0.530000 0.547000 0.215000 0.530000 0.547000 0.215000 0.530000 0.520000 0.475000 0.530000 0.520000 0.475000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-49"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-49"
>
<gml:posList
srsDimension=
"3"
>
0.215000 0.834000 0.547000 0.475000 0.834000 0.547000 0.475000 0.834000 0.520000 0.215000 0.834000 0.520000 0.215000 0.834000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-50"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-50"
>
<gml:posList
srsDimension=
"3"
>
0.215000 0.530000 0.547000 0.215000 0.834000 0.547000 0.215000 0.834000 0.520000 0.215000 0.530000 0.520000 0.215000 0.530000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-51"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-51"
>
<gml:posList
srsDimension=
"3"
>
0.547000 0.530000 0.504000 0.547000 0.854000 0.504000 0.547000 0.854000 0.547000 0.547000 0.530000 0.547000 0.547000 0.530000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-52"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-52"
>
<gml:posList
srsDimension=
"3"
>
0.194000 0.854000 0.547000 0.194000 0.854000 0.504000 0.144000 0.854000 0.504000 0.144000 0.854000 0.547000 0.194000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-53"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-53"
>
<gml:posList
srsDimension=
"3"
>
-0.146000 0.854000 0.547000 -0.146000 0.854000 0.504000 -0.196000 0.855000 0.504000 -0.196000 0.855000 0.547000 -0.146000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-54"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-54"
>
<gml:posList
srsDimension=
"3"
>
0.547000 0.854000 0.504000 0.497000 0.854000 0.504000 0.497000 0.854000 0.547000 0.547000 0.854000 0.547000 0.547000 0.854000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-55"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-55"
>
<gml:posList
srsDimension=
"3"
>
-0.496000 0.855000 0.504000 -0.546000 0.855000 0.504000 -0.546000 0.855000 0.547000 -0.496000 0.855000 0.547000 -0.496000 0.855000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-56"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-56"
>
<gml:posList
srsDimension=
"3"
>
-0.546000 0.855000 0.504000 -0.496000 0.855000 0.504000 -0.196000 0.855000 0.504000 -0.146000 0.854000 0.504000 0.144000 0.854000 0.504000 0.194000 0.854000 0.504000 0.497000 0.854000 0.504000 0.547000 0.854000 0.504000 0.647000 0.854000 0.504000 0.647000 0.854000 0.300000 -0.646000 0.855000 0.300000 -0.646000 0.855000 0.504000 -0.546000 0.855000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-57"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-57"
>
<gml:posList
srsDimension=
"3"
>
-0.146000 0.854000 0.547000 -0.146000 0.854000 0.504000 0.144000 0.854000 0.504000 0.144000 0.854000 0.547000 -0.146000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-58"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-58"
>
<gml:posList
srsDimension=
"3"
>
-0.496000 0.855000 0.547000 -0.496000 0.855000 0.504000 -0.196000 0.855000 0.504000 -0.196000 0.855000 0.547000 -0.496000 0.855000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-59"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-59"
>
<gml:posList
srsDimension=
"3"
>
0.194000 0.854000 0.547000 0.194000 0.854000 0.504000 0.497000 0.854000 0.504000 0.497000 0.854000 0.547000 0.194000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-60"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-60"
>
<gml:posList
srsDimension=
"3"
>
0.547000 0.854000 0.547000 0.547000 0.854000 0.504000 0.647000 0.854000 0.504000 0.647000 0.854000 0.547000 0.547000 0.854000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-61"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-61"
>
<gml:posList
srsDimension=
"3"
>
0.647000 0.854000 2.100000 0.647000 0.854000 0.547000 0.547000 0.854000 0.547000 0.497000 0.854000 0.547000 0.194000 0.854000 0.547000 0.144000 0.854000 0.547000 -0.146000 0.854000 0.547000 -0.196000 0.855000 0.547000 -0.496000 0.855000 0.547000 -0.546000 0.855000 0.547000 -0.646000 0.855000 0.547000 -0.646000 0.855000 2.100000 0.647000 0.854000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-61_1"
>
<gml:posList
srsDimension=
"3"
>
0.549000 0.854000 1.182000 -0.542000 0.855000 1.182000 -0.542000 0.855000 1.132000 0.549000 0.854000 1.132000 0.549000 0.854000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-61_2"
>
<gml:posList
srsDimension=
"3"
>
-0.542000 0.855000 1.282000 -0.542000 0.855000 1.232000 0.549000 0.854000 1.232000 0.549000 0.854000 1.282000 -0.542000 0.855000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-62"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-62"
>
<gml:posList
srsDimension=
"3"
>
2.136000 0.754000 2.100000 2.038000 0.754000 2.100000 2.038000 0.754000 0.000000 2.136000 0.754000 0.000000 2.136000 0.754000 0.220000 2.136000 0.754000 0.300000 2.136000 0.754000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-63"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-63"
>
<gml:posList
srsDimension=
"3"
>
2.068000 0.784000 2.260000 2.136000 0.854000 2.190000 0.647000 0.854000 2.190000 0.647000 0.784000 2.260000 2.068000 0.784000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-64"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-64"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.396000 1.182000 2.136000 -0.396000 1.132000 2.136000 0.654000 1.132000 2.136000 0.654000 1.182000 2.136000 -0.396000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-65"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-65"
>
<gml:posList
srsDimension=
"3"
>
2.136000 0.854000 2.190000 2.068000 0.784000 2.260000 2.067000 -0.826000 2.260000 2.136000 -0.896000 2.190000 2.136000 0.854000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-66"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-66"
>
<gml:posList
srsDimension=
"3"
>
0.647000 -0.896000 2.190000 2.136000 -0.896000 2.190000 2.067000 -0.826000 2.260000 0.647000 -0.826000 2.260000 0.647000 -0.896000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-67"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-67"
>
<gml:posList
srsDimension=
"3"
>
0.843000 0.854000 1.232000 0.843000 0.854000 1.282000 1.934000 0.854000 1.282000 1.934000 0.854000 1.232000 0.843000 0.854000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-68"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-68"
>
<gml:posList
srsDimension=
"3"
>
2.038000 -0.596000 2.100000 2.038000 -0.596000 0.000000 2.136000 -0.596000 0.000000 2.136000 -0.596000 2.100000 2.038000 -0.596000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-69"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-69"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.496000 0.300000 2.136000 -0.496000 0.220000 2.136000 0.754000 0.220000 2.136000 0.754000 0.300000 2.136000 -0.496000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-70"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-70"
>
<gml:posList
srsDimension=
"3"
>
2.038000 -0.596000 2.100000 2.038000 -0.496000 2.100000 2.038000 -0.496000 0.000000 2.038000 -0.596000 0.000000 2.038000 -0.596000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-71"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-71"
>
<gml:posList
srsDimension=
"3"
>
2.038000 0.854000 0.300000 2.038000 0.854000 0.220000 0.745000 0.854000 0.220000 0.745000 0.854000 0.300000 2.038000 0.854000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-72"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-72"
>
<gml:posList
srsDimension=
"3"
>
0.745000 0.854000 2.100000 2.038000 0.854000 2.100000 2.038000 0.854000 0.300000 0.745000 0.854000 0.300000 0.745000 0.854000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-72_1"
>
<gml:posList
srsDimension=
"3"
>
1.934000 0.854000 1.182000 0.843000 0.854000 1.182000 0.843000 0.854000 1.132000 1.934000 0.854000 1.132000 1.934000 0.854000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-72_2"
>
<gml:posList
srsDimension=
"3"
>
1.934000 0.854000 1.232000 1.934000 0.854000 1.282000 0.843000 0.854000 1.282000 0.843000 0.854000 1.232000 1.934000 0.854000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-73"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-73"
>
<gml:posList
srsDimension=
"3"
>
2.136000 0.654000 1.232000 2.136000 0.654000 1.282000 2.136000 -0.396000 1.282000 2.136000 -0.396000 1.232000 2.136000 0.654000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-74"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-74"
>
<gml:posList
srsDimension=
"3"
>
1.934000 0.854000 1.182000 1.934000 0.854000 1.132000 0.843000 0.854000 1.132000 0.843000 0.854000 1.182000 1.934000 0.854000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-75"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-75"
>
<gml:posList
srsDimension=
"3"
>
2.038000 0.754000 2.100000 2.038000 0.854000 2.100000 2.038000 0.854000 0.300000 2.038000 0.854000 0.220000 2.038000 0.854000 0.000000 2.038000 0.754000 0.000000 2.038000 0.754000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-76"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-76"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.496000 2.100000 2.136000 -0.496000 0.300000 2.136000 0.754000 0.300000 2.136000 0.754000 2.100000 2.136000 -0.496000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-76_1"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.396000 1.132000 2.136000 -0.396000 1.182000 2.136000 0.654000 1.182000 2.136000 0.654000 1.132000 2.136000 -0.396000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-76_2"
>
<gml:posList
srsDimension=
"3"
>
2.136000 0.654000 1.232000 2.136000 -0.396000 1.232000 2.136000 -0.396000 1.282000 2.136000 0.654000 1.282000 2.136000 0.654000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-77"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-77"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.896000 2.100000 2.136000 -0.896000 2.190000 0.647000 -0.896000 2.190000 0.647000 -0.896000 2.100000 2.136000 -0.896000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-78"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-78"
>
<gml:posList
srsDimension=
"3"
>
2.136000 0.854000 0.000000 2.136000 0.854000 2.190000 2.136000 -0.896000 2.190000 2.136000 -0.896000 2.100000 2.136000 -0.596000 2.100000 2.136000 -0.596000 0.000000 2.136000 -0.496000 0.000000 2.136000 -0.496000 0.220000 2.136000 -0.496000 0.300000 2.136000 -0.496000 2.100000 2.136000 0.754000 2.100000 2.136000 0.754000 0.300000 2.136000 0.754000 0.220000 2.136000 0.754000 0.000000 2.136000 0.854000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-79"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-79"
>
<gml:posList
srsDimension=
"3"
>
2.038000 0.854000 2.100000 0.745000 0.854000 2.100000 0.745000 0.854000 0.300000 0.745000 0.854000 0.220000 0.745000 0.854000 0.000000 0.647000 0.854000 0.000000 0.647000 0.854000 2.190000 2.136000 0.854000 2.190000 2.136000 0.854000 0.000000 2.038000 0.854000 0.000000 2.038000 0.854000 0.220000 2.038000 0.854000 0.300000 2.038000 0.854000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-80"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-80"
>
<gml:posList
srsDimension=
"3"
>
2.038000 -0.496000 2.100000 2.136000 -0.496000 2.100000 2.136000 -0.496000 0.300000 2.136000 -0.496000 0.220000 2.136000 -0.496000 0.000000 2.038000 -0.496000 0.000000 2.038000 -0.496000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-81"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-81"
>
<gml:posList
srsDimension=
"3"
>
2.068000 0.784000 2.260000 0.647000 0.784000 2.260000 0.647000 -0.826000 2.260000 2.067000 -0.826000 2.260000 2.068000 0.784000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-82"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-82"
>
<gml:posList
srsDimension=
"3"
>
0.745000 0.754000 2.100000 0.647000 0.754000 2.100000 0.647000 0.754000 0.000000 0.745000 0.754000 0.000000 0.745000 0.754000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-83"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-83"
>
<gml:posList
srsDimension=
"3"
>
0.647000 0.754000 0.000000 0.647000 0.754000 2.100000 0.647000 -0.896000 2.100000 0.647000 -0.896000 2.190000 0.647000 -0.826000 2.260000 0.647000 0.784000 2.260000 0.647000 0.854000 2.190000 0.647000 0.854000 0.000000 0.647000 0.754000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-84"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-84"
>
<gml:posList
srsDimension=
"3"
>
0.745000 0.854000 2.100000 0.745000 0.754000 2.100000 0.745000 0.754000 0.000000 0.745000 0.854000 0.000000 0.745000 0.854000 0.220000 0.745000 0.854000 0.300000 0.745000 0.854000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-85"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-85"
>
<gml:posList
srsDimension=
"3"
>
2.136000 -0.596000 2.100000 2.136000 -0.896000 2.100000 0.647000 -0.896000 2.100000 0.647000 0.754000 2.100000 0.745000 0.754000 2.100000 0.745000 0.854000 2.100000 2.038000 0.854000 2.100000 2.038000 0.754000 2.100000 2.136000 0.754000 2.100000 2.136000 -0.496000 2.100000 2.038000 -0.496000 2.100000 2.038000 -0.596000 2.100000 2.136000 -0.596000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-86"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-86"
>
<gml:posList
srsDimension=
"3"
>
-0.745000 -0.895000 2.100000 -0.745000 -0.895000 2.190000 -2.136000 -0.895000 2.190000 -2.136000 -0.895000 2.100000 -0.745000 -0.895000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-87"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-87"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 -0.495000 0.300000 -2.136000 -0.495000 2.100000 -2.136000 0.755000 2.100000 -2.136000 0.755000 0.300000 -2.136000 -0.495000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-87_1"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 0.655000 1.132000 -2.136000 0.655000 1.182000 -2.136000 -0.395000 1.182000 -2.136000 -0.395000 1.132000 -2.136000 0.655000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-87_2"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 -0.395000 1.232000 -2.136000 0.655000 1.232000 -2.136000 0.655000 1.282000 -2.136000 -0.395000 1.282000 -2.136000 -0.395000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-88"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-88"
>
<gml:posList
srsDimension=
"3"
>
-2.067000 0.785000 2.260000 -2.068000 -0.825000 2.260000 -0.745000 -0.825000 2.260000 -0.745000 0.785000 2.260000 -2.067000 0.785000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-89"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-89"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 0.855000 2.190000 -0.745000 0.855000 2.190000 -0.745000 0.855000 2.100000 -2.038000 0.855000 2.100000 -2.038000 0.855000 0.300000 -2.038000 0.855000 0.220000 -2.038000 0.855000 0.000000 -2.136000 0.855000 0.000000 -2.136000 0.855000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-90"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-90"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 0.755000 2.100000 -2.038000 0.755000 2.100000 -2.038000 0.855000 2.100000 -0.745000 0.855000 2.100000 -0.745000 -0.895000 2.100000 -2.136000 -0.895000 2.100000 -2.136000 -0.595000 2.100000 -2.038000 -0.595000 2.100000 -2.038000 -0.495000 2.100000 -2.136000 -0.495000 2.100000 -2.136000 0.755000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-91"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-91"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 0.755000 0.300000 -2.136000 0.755000 2.100000 -2.136000 -0.495000 2.100000 -2.136000 -0.495000 0.300000 -2.136000 -0.495000 0.220000 -2.136000 -0.495000 0.000000 -2.136000 -0.595000 0.000000 -2.136000 -0.595000 2.100000 -2.136000 -0.895000 2.100000 -2.136000 -0.895000 2.190000 -2.136000 0.855000 2.190000 -2.136000 0.855000 0.000000 -2.136000 0.755000 0.000000 -2.136000 0.755000 0.220000 -2.136000 0.755000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-92"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-92"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 -0.495000 2.100000 -2.038000 -0.495000 2.100000 -2.038000 -0.495000 0.000000 -2.136000 -0.495000 0.000000 -2.136000 -0.495000 0.220000 -2.136000 -0.495000 0.300000 -2.136000 -0.495000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-93"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-93"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 -0.595000 2.100000 -2.136000 -0.595000 2.100000 -2.136000 -0.595000 0.000000 -2.038000 -0.595000 0.000000 -2.038000 -0.595000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-94"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-94"
>
<gml:posList
srsDimension=
"3"
>
-2.067000 0.785000 2.260000 -2.136000 0.855000 2.190000 -2.136000 -0.895000 2.190000 -2.068000 -0.825000 2.260000 -2.067000 0.785000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-95"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-95"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 -0.495000 2.100000 -2.038000 -0.595000 2.100000 -2.038000 -0.595000 0.000000 -2.038000 -0.495000 0.000000 -2.038000 -0.495000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-96"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-96"
>
<gml:posList
srsDimension=
"3"
>
-0.745000 -0.895000 2.190000 -0.745000 -0.825000 2.260000 -2.068000 -0.825000 2.260000 -2.136000 -0.895000 2.190000 -0.745000 -0.895000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-97"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-97"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 0.755000 2.100000 -2.136000 0.755000 2.100000 -2.136000 0.755000 0.300000 -2.136000 0.755000 0.220000 -2.136000 0.755000 0.000000 -2.038000 0.755000 0.000000 -2.038000 0.755000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-98"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-98"
>
<gml:posList
srsDimension=
"3"
>
-0.745000 0.785000 2.260000 -0.745000 0.855000 2.190000 -2.136000 0.855000 2.190000 -2.067000 0.785000 2.260000 -0.745000 0.785000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-99"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-99"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 0.855000 2.100000 -2.038000 0.755000 2.100000 -2.038000 0.755000 0.000000 -2.038000 0.855000 0.000000 -2.038000 0.855000 0.220000 -2.038000 0.855000 0.300000 -2.038000 0.855000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-100"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-100"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 -0.495000 0.220000 -2.136000 -0.495000 0.300000 -2.136000 0.755000 0.300000 -2.136000 0.755000 0.220000 -2.136000 -0.495000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-101"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-101"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 0.855000 0.220000 -2.038000 0.855000 0.300000 -0.745000 0.855000 0.300000 -0.745000 0.855000 0.220000 -2.038000 0.855000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-102"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-102"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 0.655000 1.282000 -2.136000 0.655000 1.232000 -2.136000 -0.395000 1.232000 -2.136000 -0.395000 1.282000 -2.136000 0.655000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-103"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-103"
>
<gml:posList
srsDimension=
"3"
>
-2.136000 -0.395000 1.132000 -2.136000 -0.395000 1.182000 -2.136000 0.655000 1.182000 -2.136000 0.655000 1.132000 -2.136000 -0.395000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-104"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-104"
>
<gml:posList
srsDimension=
"3"
>
-1.934000 0.855000 1.132000 -1.934000 0.855000 1.182000 -0.843000 0.855000 1.182000 -0.843000 0.855000 1.132000 -1.934000 0.855000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-105"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-105"
>
<gml:posList
srsDimension=
"3"
>
-0.843000 0.855000 1.282000 -0.843000 0.855000 1.232000 -1.934000 0.855000 1.232000 -1.934000 0.855000 1.282000 -0.843000 0.855000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-106"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-106"
>
<gml:posList
srsDimension=
"3"
>
-2.038000 0.855000 2.100000 -0.745000 0.855000 2.100000 -0.745000 0.855000 0.300000 -2.038000 0.855000 0.300000 -2.038000 0.855000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-106_1"
>
<gml:posList
srsDimension=
"3"
>
-0.843000 0.855000 1.182000 -1.934000 0.855000 1.182000 -1.934000 0.855000 1.132000 -0.843000 0.855000 1.132000 -0.843000 0.855000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-106_2"
>
<gml:posList
srsDimension=
"3"
>
-1.934000 0.855000 1.282000 -1.934000 0.855000 1.232000 -0.843000 0.855000 1.232000 -0.843000 0.855000 1.282000 -1.934000 0.855000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</gen:lod2Geometry>
</gen:GenericCityObject>
</core:cityObjectMember>
</core:CityModel>
CityDoctorParent/CityDoctorModel/src/test/resources/zip/implicit/Implicit2.gml
0 → 100644
View file @
2d57794b
<?xml version="1.0" encoding="UTF-8"?>
<core:CityModel
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
xmlns:tran=
"http://www.opengis.net/citygml/transportation/2.0"
xmlns:wtr=
"http://www.opengis.net/citygml/waterbody/2.0"
xmlns:smil20lang=
"http://www.w3.org/2001/SMIL20/Language"
xmlns:grp=
"http://www.opengis.net/citygml/cityobjectgroup/2.0"
xmlns:luse=
"http://www.opengis.net/citygml/landuse/2.0"
xmlns:frn=
"http://www.opengis.net/citygml/cityfurniture/2.0"
xmlns:app=
"http://www.opengis.net/citygml/appearance/2.0"
xmlns:tex=
"http://www.opengis.net/citygml/texturedsurface/2.0"
xmlns:smil20=
"http://www.w3.org/2001/SMIL20/"
xmlns:xAL=
"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:dem=
"http://www.opengis.net/citygml/relief/2.0"
xmlns:veg=
"http://www.opengis.net/citygml/vegetation/2.0"
xmlns:brid=
"http://www.opengis.net/citygml/bridge/2.0"
xmlns:tun=
"http://www.opengis.net/citygml/tunnel/2.0"
xmlns:gen=
"http://www.opengis.net/citygml/generics/2.0"
xmlns:wfs=
"http://www.opengis.net/wfs"
xsi:schemaLocation=
"http://www.opengis.net/citygml/landuse/2.0 http://schemas.opengis.net/citygml/landuse/2.0/landUse.xsd http://www.opengis.net/citygml/cityfurniture/2.0 http://schemas.opengis.net/citygml/cityfurniture/2.0/cityFurniture.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/texturedsurface/2.0 http://schemas.opengis.net/citygml/texturedsurface/2.0/texturedSurface.xsd http://www.opengis.net/citygml/transportation/2.0 http://schemas.opengis.net/citygml/transportation/2.0/transportation.xsd http://www.opengis.net/citygml/waterbody/2.0 http://schemas.opengis.net/citygml/waterbody/2.0/waterBody.xsd http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/vegetation/2.0 http://schemas.opengis.net/citygml/vegetation/2.0/vegetation.xsd http://www.opengis.net/citygml/cityobjectgroup/2.0 http://schemas.opengis.net/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd http://www.opengis.net/citygml/bridge/2.0 http://schemas.opengis.net/citygml/bridge/2.0/bridge.xsd http://www.opengis.net/citygml/tunnel/2.0 http://schemas.opengis.net/citygml/tunnel/2.0/tunnel.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd"
>
<gml:description>
Testdataset
</gml:description>
<gml:name>
ImplicitGeometry zipfile testdata
</gml:name>
<core:cityObjectMember>
<gen:GenericCityObject>
<gml:description>
CPA_Symbol
</gml:description>
<gml:name>
Implicit2
</gml:name>
<gen:lod2Geometry>
<gml:MultiSurface>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-5"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-5"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.085000 1.162000 -0.098000 0.000000 1.162000 -0.049000 -0.085000 1.162000 0.049000 -0.085000 1.162000 0.098000 0.000000 1.162000 0.049000 0.085000 1.162000 -0.049000 0.085000 1.162000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-5_1"
>
<gml:posList
srsDimension=
"3"
>
-0.052000 0.030000 1.162000 0.000000 0.060000 1.162000 0.052000 0.030000 1.162000 0.052000 -0.030000 1.162000 0.000000 -0.060000 1.162000 -0.052000 -0.030000 1.162000 -0.052000 0.030000 1.162000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-6"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-6"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.085000 0.000000 -0.049000 0.085000 1.162000 0.049000 0.085000 1.162000 0.049000 0.085000 0.000000 -0.049000 0.085000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-7"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-7"
>
<gml:posList
srsDimension=
"3"
>
-0.098000 0.000000 0.000000 -0.098000 0.000000 1.162000 -0.049000 0.085000 1.162000 -0.049000 0.085000 0.000000 -0.098000 0.000000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-8"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-8"
>
<gml:posList
srsDimension=
"3"
>
0.098000 0.000000 0.000000 0.098000 0.000000 1.162000 0.049000 -0.085000 1.162000 0.049000 -0.085000 0.000000 0.098000 0.000000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-9"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-9"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 -0.085000 0.000000 -0.049000 -0.085000 1.162000 -0.098000 0.000000 1.162000 -0.098000 0.000000 0.000000 -0.049000 -0.085000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-10"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-10"
>
<gml:posList
srsDimension=
"3"
>
0.049000 0.085000 0.000000 0.049000 0.085000 1.162000 0.098000 0.000000 1.162000 0.098000 0.000000 0.000000 0.049000 0.085000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-11"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-11"
>
<gml:posList
srsDimension=
"3"
>
0.049000 -0.085000 0.000000 0.049000 -0.085000 1.162000 -0.049000 -0.085000 1.162000 -0.049000 -0.085000 0.000000 0.049000 -0.085000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-12"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-12"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.408000 4.880000 0.353000 0.205000 4.880000 0.353000 0.205000 4.830000 0.000000 0.408000 4.830000 0.000000 0.408000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-13"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-13"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.408000 4.880000 0.000000 0.001000 5.000000 0.353000 0.205000 4.880000 0.000000 0.408000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-14"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-14"
>
<gml:posList
srsDimension=
"3"
>
-0.353000 -0.202000 4.880000 0.000000 -0.406000 4.880000 0.000000 0.001000 5.000000 -0.353000 -0.202000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-15"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-15"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.001000 5.000000 0.000000 0.408000 4.880000 -0.353000 0.205000 4.880000 0.000000 0.001000 5.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-16"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-16"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.406000 4.880000 -0.353000 -0.202000 4.880000 -0.353000 -0.202000 4.830000 0.000000 -0.406000 4.830000 0.000000 -0.406000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-17"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-17"
>
<gml:posList
srsDimension=
"3"
>
0.353000 -0.202000 4.880000 0.353000 0.205000 4.880000 0.000000 0.001000 5.000000 0.353000 -0.202000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-18"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-18"
>
<gml:posList
srsDimension=
"3"
>
0.353000 0.205000 4.880000 0.353000 -0.202000 4.880000 0.353000 -0.202000 4.830000 0.353000 0.205000 4.830000 0.353000 0.205000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-19"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-19"
>
<gml:posList
srsDimension=
"3"
>
0.353000 -0.202000 4.880000 0.000000 0.001000 5.000000 0.000000 -0.406000 4.880000 0.353000 -0.202000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-20"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-20"
>
<gml:posList
srsDimension=
"3"
>
-0.353000 0.205000 4.880000 -0.353000 -0.202000 4.880000 0.000000 0.001000 5.000000 -0.353000 0.205000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-21"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-21"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.080000 3.982000 0.069000 0.040000 3.982000 0.069000 0.040000 3.892000 0.000000 0.080000 3.892000 0.000000 0.080000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-22"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-22"
>
<gml:posList
srsDimension=
"3"
>
0.069000 0.040000 3.982000 0.069000 -0.040000 3.982000 0.069000 -0.040000 3.892000 0.069000 0.040000 3.892000 0.069000 0.040000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-23"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-23"
>
<gml:posList
srsDimension=
"3"
>
0.353000 -0.202000 4.880000 0.000000 -0.406000 4.880000 0.000000 -0.406000 4.830000 0.353000 -0.202000 4.830000 0.353000 -0.202000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-24"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-24"
>
<gml:posList
srsDimension=
"3"
>
-0.069000 0.040000 3.982000 0.000000 0.080000 3.982000 0.000000 0.080000 3.892000 -0.069000 0.040000 3.892000 -0.069000 0.040000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-25"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-25"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.080000 3.982000 -0.069000 -0.040000 3.982000 -0.069000 -0.040000 3.892000 0.000000 -0.080000 3.892000 0.000000 -0.080000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-26"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-26"
>
<gml:posList
srsDimension=
"3"
>
-0.353000 -0.202000 4.880000 -0.353000 0.205000 4.880000 -0.353000 0.205000 4.830000 -0.353000 -0.202000 4.830000 -0.353000 -0.202000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-27"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-27"
>
<gml:posList
srsDimension=
"3"
>
-0.353000 0.205000 4.880000 0.000000 0.408000 4.880000 0.000000 0.408000 4.830000 -0.353000 0.205000 4.830000 -0.353000 0.205000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-28"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-28"
>
<gml:posList
srsDimension=
"3"
>
-0.069000 -0.040000 3.982000 -0.069000 0.040000 3.982000 -0.069000 0.040000 3.892000 -0.069000 -0.040000 3.892000 -0.069000 -0.040000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-29"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-29"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.080000 3.892000 -0.069000 -0.040000 3.892000 -0.069000 0.040000 3.892000 0.000000 0.080000 3.892000 0.069000 0.040000 3.892000 0.069000 -0.040000 3.892000 0.000000 -0.080000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-29_1"
>
<gml:posList
srsDimension=
"3"
>
-0.052000 0.030000 3.892000 -0.052000 -0.030000 3.892000 0.000000 -0.060000 3.892000 0.052000 -0.030000 3.892000 0.052000 0.030000 3.892000 0.000000 0.060000 3.892000 -0.052000 0.030000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-30"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-30"
>
<gml:posList
srsDimension=
"3"
>
-0.052000 -0.030000 3.892000 -0.052000 -0.030000 1.162000 0.000000 -0.060000 1.162000 0.000000 -0.060000 3.892000 -0.052000 -0.030000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-31"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-31"
>
<gml:posList
srsDimension=
"3"
>
0.052000 0.030000 3.892000 0.052000 0.030000 1.162000 0.000000 0.060000 1.162000 0.000000 0.060000 3.892000 0.052000 0.030000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-32"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-32"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.060000 3.892000 0.000000 0.060000 1.162000 -0.052000 0.030000 1.162000 -0.052000 0.030000 3.892000 0.000000 0.060000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-33"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-33"
>
<gml:posList
srsDimension=
"3"
>
-0.052000 0.030000 3.892000 -0.052000 0.030000 1.162000 -0.052000 -0.030000 1.162000 -0.052000 -0.030000 3.892000 -0.052000 0.030000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-34"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-34"
>
<gml:posList
srsDimension=
"3"
>
0.069000 -0.040000 3.982000 0.000000 -0.080000 3.982000 0.000000 -0.080000 3.892000 0.069000 -0.040000 3.892000 0.069000 -0.040000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-35"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-35"
>
<gml:posList
srsDimension=
"3"
>
-0.286000 0.166000 4.880000 -0.181000 0.105000 4.117000 -0.181000 -0.104000 4.117000 -0.286000 -0.164000 4.880000 -0.286000 0.166000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-36"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-36"
>
<gml:posList
srsDimension=
"3"
>
-0.171000 -0.099000 4.050000 -0.138000 -0.080000 3.982000 0.000000 -0.160000 3.982000 0.000000 -0.197000 4.050000 -0.171000 -0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-37"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-37"
>
<gml:posList
srsDimension=
"3"
>
0.286000 -0.164000 4.880000 0.181000 -0.104000 4.117000 0.181000 0.105000 4.117000 0.286000 0.166000 4.880000 0.286000 -0.164000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-38"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-38"
>
<gml:posList
srsDimension=
"3"
>
0.138000 -0.080000 3.982000 0.171000 -0.099000 4.050000 0.000000 -0.197000 4.050000 0.000000 -0.160000 3.982000 0.138000 -0.080000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-39"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-39"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.329000 4.880000 0.000000 -0.208000 4.117000 0.181000 -0.104000 4.117000 0.286000 -0.164000 4.880000 0.000000 -0.329000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-40"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-40"
>
<gml:posList
srsDimension=
"3"
>
0.171000 -0.099000 4.050000 0.138000 -0.080000 3.982000 0.138000 0.080000 3.982000 0.171000 0.099000 4.050000 0.171000 -0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-41"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-41"
>
<gml:posList
srsDimension=
"3"
>
0.171000 0.099000 4.050000 0.181000 0.105000 4.117000 0.181000 -0.104000 4.117000 0.171000 -0.099000 4.050000 0.171000 0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-42"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-42"
>
<gml:posList
srsDimension=
"3"
>
0.171000 -0.099000 4.050000 0.181000 -0.104000 4.117000 0.000000 -0.208000 4.117000 0.000000 -0.197000 4.050000 0.171000 -0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-43"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-43"
>
<gml:posList
srsDimension=
"3"
>
-0.138000 0.080000 3.982000 -0.171000 0.099000 4.050000 0.000000 0.198000 4.050000 0.000000 0.160000 3.982000 -0.138000 0.080000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-44"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-44"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.060000 3.892000 0.000000 -0.060000 1.162000 0.052000 -0.030000 1.162000 0.052000 -0.030000 3.892000 0.000000 -0.060000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-45"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-45"
>
<gml:posList
srsDimension=
"3"
>
-0.286000 -0.164000 4.880000 -0.181000 -0.104000 4.117000 0.000000 -0.208000 4.117000 0.000000 -0.329000 4.880000 -0.286000 -0.164000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-46"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-46"
>
<gml:posList
srsDimension=
"3"
>
0.171000 0.099000 4.050000 0.138000 0.080000 3.982000 0.000000 0.160000 3.982000 0.000000 0.198000 4.050000 0.171000 0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-47"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-47"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.198000 4.050000 0.000000 0.209000 4.117000 0.181000 0.105000 4.117000 0.171000 0.099000 4.050000 0.000000 0.198000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-48"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-48"
>
<gml:posList
srsDimension=
"3"
>
-0.171000 -0.099000 4.050000 -0.181000 -0.104000 4.117000 -0.181000 0.105000 4.117000 -0.171000 0.099000 4.050000 -0.171000 -0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-49"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-49"
>
<gml:posList
srsDimension=
"3"
>
-0.171000 0.099000 4.050000 -0.138000 0.080000 3.982000 -0.138000 -0.080000 3.982000 -0.171000 -0.099000 4.050000 -0.171000 0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-50"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-50"
>
<gml:posList
srsDimension=
"3"
>
-0.171000 0.099000 4.050000 -0.181000 0.105000 4.117000 0.000000 0.209000 4.117000 0.000000 0.198000 4.050000 -0.171000 0.099000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-51"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-51"
>
<gml:posList
srsDimension=
"3"
>
0.000000 0.331000 4.880000 0.000000 0.209000 4.117000 -0.181000 0.105000 4.117000 -0.286000 0.166000 4.880000 0.000000 0.331000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-52"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-52"
>
<gml:posList
srsDimension=
"3"
>
-0.138000 0.080000 3.982000 0.000000 0.160000 3.982000 0.138000 0.080000 3.982000 0.138000 -0.080000 3.982000 0.000000 -0.160000 3.982000 -0.138000 -0.080000 3.982000 -0.138000 0.080000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-52_1"
>
<gml:posList
srsDimension=
"3"
>
0.069000 0.040000 3.982000 0.000000 0.080000 3.982000 -0.069000 0.040000 3.982000 -0.069000 -0.040000 3.982000 0.000000 -0.080000 3.982000 0.069000 -0.040000 3.982000 0.069000 0.040000 3.982000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-53"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-53"
>
<gml:posList
srsDimension=
"3"
>
0.052000 -0.030000 3.892000 0.052000 -0.030000 1.162000 0.052000 0.030000 1.162000 0.052000 0.030000 3.892000 0.052000 -0.030000 3.892000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-54"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-54"
>
<gml:posList
srsDimension=
"3"
>
0.000000 -0.197000 4.050000 0.000000 -0.208000 4.117000 -0.181000 -0.104000 4.117000 -0.171000 -0.099000 4.050000 0.000000 -0.197000 4.050000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-55"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-55"
>
<gml:posList
srsDimension=
"3"
>
0.286000 0.166000 4.880000 0.181000 0.105000 4.117000 0.000000 0.209000 4.117000 0.000000 0.331000 4.880000 0.286000 0.166000 4.880000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</gen:lod2Geometry>
</gen:GenericCityObject>
</core:cityObjectMember>
</core:CityModel>
CityDoctorParent/CityDoctorModel/src/test/resources/zip/implicit/Main_model.gml
0 → 100644
View file @
2d57794b
<?xml version="1.0" encoding="UTF-8"?>
<core:CityModel
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
xmlns:tran=
"http://www.opengis.net/citygml/transportation/2.0"
xmlns:wtr=
"http://www.opengis.net/citygml/waterbody/2.0"
xmlns:smil20lang=
"http://www.w3.org/2001/SMIL20/Language"
xmlns:grp=
"http://www.opengis.net/citygml/cityobjectgroup/2.0"
xmlns:luse=
"http://www.opengis.net/citygml/landuse/2.0"
xmlns:frn=
"http://www.opengis.net/citygml/cityfurniture/2.0"
xmlns:app=
"http://www.opengis.net/citygml/appearance/2.0"
xmlns:tex=
"http://www.opengis.net/citygml/texturedsurface/2.0"
xmlns:smil20=
"http://www.w3.org/2001/SMIL20/"
xmlns:xAL=
"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:dem=
"http://www.opengis.net/citygml/relief/2.0"
xmlns:veg=
"http://www.opengis.net/citygml/vegetation/2.0"
xmlns:brid=
"http://www.opengis.net/citygml/bridge/2.0"
xmlns:tun=
"http://www.opengis.net/citygml/tunnel/2.0"
xmlns:gen=
"http://www.opengis.net/citygml/generics/2.0"
xmlns:wfs=
"http://www.opengis.net/wfs"
xsi:schemaLocation=
"http://www.opengis.net/citygml/landuse/2.0 http://schemas.opengis.net/citygml/landuse/2.0/landUse.xsd http://www.opengis.net/citygml/cityfurniture/2.0 http://schemas.opengis.net/citygml/cityfurniture/2.0/cityFurniture.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/texturedsurface/2.0 http://schemas.opengis.net/citygml/texturedsurface/2.0/texturedSurface.xsd http://www.opengis.net/citygml/transportation/2.0 http://schemas.opengis.net/citygml/transportation/2.0/transportation.xsd http://www.opengis.net/citygml/waterbody/2.0 http://schemas.opengis.net/citygml/waterbody/2.0/waterBody.xsd http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/vegetation/2.0 http://schemas.opengis.net/citygml/vegetation/2.0/vegetation.xsd http://www.opengis.net/citygml/cityobjectgroup/2.0 http://schemas.opengis.net/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd http://www.opengis.net/citygml/bridge/2.0 http://schemas.opengis.net/citygml/bridge/2.0/bridge.xsd http://www.opengis.net/citygml/tunnel/2.0 http://schemas.opengis.net/citygml/tunnel/2.0/tunnel.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd"
>
<gml:description>
G:\62\GIS_tui\Produkte\3D\Zusammenarbeit_Universitäten\HFT Stuttgart\Testdatensatz_28062022\Export_Wiesdorf.gml
</gml:description>
<gml:name>
G:\62\GIS_tui\Produkte\3D\Zusammenarbeit_Universitäten\HFT Stuttgart\Testdatensatz_28062022\Export_Wiesdorf.gml
</gml:name>
<gml:boundedBy>
<gml:Envelope
srsDimension=
"3"
srsName=
"urn:ogc:def:crs:EPSG::25832"
>
<gml:lowerCorner>
357978.09 5654873.32 0.00
</gml:lowerCorner>
<gml:upperCorner>
359213.91 5656013.49 0.00
</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC40f8b818-84e2-4bf7-bbfa-22af5f20f9f3"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
359134.053 5655248.918 46.90999985
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC40f8b818-84e2-4bf7-bbfa-22af5f20f9f3"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC40f8b818-84e2-4bf7-bbfa-22af5f20f9f3"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC40f8b818-84e2-4bf7-bbfa-22af5f20f9f3"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC18370283-fc17-4a8d-812e-ac677b3cc6aa"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358805.594 5655223.78 46.59999847
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC18370283-fc17-4a8d-812e-ac677b3cc6aa"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC18370283-fc17-4a8d-812e-ac677b3cc6aa"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC18370283-fc17-4a8d-812e-ac677b3cc6aa"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"ICf9ac1d5a-4be4-466c-934e-58cdce2cb082"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358528.544 5655634.731 44.45999908
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#ICf9ac1d5a-4be4-466c-934e-58cdce2cb082"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#ICf9ac1d5a-4be4-466c-934e-58cdce2cb082"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#ICf9ac1d5a-4be4-466c-934e-58cdce2cb082"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC1f5d078e-869e-4adc-95bf-6e1ada98105d"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358921.258 5655754.859 44.00999832
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC1f5d078e-869e-4adc-95bf-6e1ada98105d"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC1f5d078e-869e-4adc-95bf-6e1ada98105d"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC1f5d078e-869e-4adc-95bf-6e1ada98105d"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC15f429a4-4997-4e7f-8eca-e5c6087ed869"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358566.979 5655138.757 46.36000061
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC15f429a4-4997-4e7f-8eca-e5c6087ed869"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC15f429a4-4997-4e7f-8eca-e5c6087ed869"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC15f429a4-4997-4e7f-8eca-e5c6087ed869"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"ICf9cb14cc-99a2-4bf2-ac68-75e876aebe1a"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358503.967 5655267.126 46.91999817
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#ICf9cb14cc-99a2-4bf2-ac68-75e876aebe1a"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#ICf9cb14cc-99a2-4bf2-ac68-75e876aebe1a"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#ICf9cb14cc-99a2-4bf2-ac68-75e876aebe1a"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC2df38958-7c1d-4804-aaea-93ea742e62c1"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
359055.978 5655849.151 42.93000031
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC2df38958-7c1d-4804-aaea-93ea742e62c1"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC2df38958-7c1d-4804-aaea-93ea742e62c1"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC2df38958-7c1d-4804-aaea-93ea742e62c1"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC6cd916e8-1916-4e68-ae19-2b48b02a3cd9"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358551.225 5655559.56 44.58000183
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC6cd916e8-1916-4e68-ae19-2b48b02a3cd9"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC6cd916e8-1916-4e68-ae19-2b48b02a3cd9"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC6cd916e8-1916-4e68-ae19-2b48b02a3cd9"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC9926fd28-fa21-4a5c-8829-9baf2100ee74"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
359050.629 5655010.897 45.25999832
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC9926fd28-fa21-4a5c-8829-9baf2100ee74"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC9926fd28-fa21-4a5c-8829-9baf2100ee74"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC9926fd28-fa21-4a5c-8829-9baf2100ee74"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC860511a3-6d12-4d5e-9ecc-c8c8ab866d48"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358445.815 5655744.757 43.90999985
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC860511a3-6d12-4d5e-9ecc-c8c8ab866d48"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC860511a3-6d12-4d5e-9ecc-c8c8ab866d48"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC860511a3-6d12-4d5e-9ecc-c8c8ab866d48"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC9a67f98b-ea7c-4650-a76b-70ddf055693e"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
357980.349 5655498.896 46.88999939
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC9a67f98b-ea7c-4650-a76b-70ddf055693e"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC9a67f98b-ea7c-4650-a76b-70ddf055693e"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC9a67f98b-ea7c-4650-a76b-70ddf055693e"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC574549b9-5daf-4404-922f-ad143f772cf5"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358828.134 5655492.423 45.84000015
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC574549b9-5daf-4404-922f-ad143f772cf5"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC574549b9-5daf-4404-922f-ad143f772cf5"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC574549b9-5daf-4404-922f-ad143f772cf5"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC16de12fd-a52a-4c99-91e1-6466bf223c35"
>
<core:transformationMatrix>
1.0 0.0 0 0
-0.0 1.0 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit2.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358872.807 5655511.242 45.72999954
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC16de12fd-a52a-4c99-91e1-6466bf223c35"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC16de12fd-a52a-4c99-91e1-6466bf223c35"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC16de12fd-a52a-4c99-91e1-6466bf223c35"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC06c0a1de-c757-41d1-8142-eb43b941c06e"
>
<core:transformationMatrix>
0.9444916824817261 -0.3285353279676911 0 0
0.3285353279676911 0.9444916824817261 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit1.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358600.899 5655436.227 46.47575902257221
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC06c0a1de-c757-41d1-8142-eb43b941c06e"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC06c0a1de-c757-41d1-8142-eb43b941c06e"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC06c0a1de-c757-41d1-8142-eb43b941c06e"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"ICe37a46d4-dd5c-4da4-bc63-4fd64104fa7f"
>
<core:transformationMatrix>
-0.9667328231176867 0.2557882888384602 0 0
-0.2557882888384602 -0.9667328231176867 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit1.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358564.214 5655406.122 46.67377932584644
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#ICe37a46d4-dd5c-4da4-bc63-4fd64104fa7f"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#ICe37a46d4-dd5c-4da4-bc63-4fd64104fa7f"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#ICe37a46d4-dd5c-4da4-bc63-4fd64104fa7f"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"ICd0cefddc-7ed8-44c4-8ef2-a7f517e374c5"
>
<core:transformationMatrix>
0.4199574315257782 0.9075438037396715 0 0
-0.9075438037396715 0.4199574315257782 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
Implicit1.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358996.371 5655511.698 47.731653352198045
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#ICd0cefddc-7ed8-44c4-8ef2-a7f517e374c5"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#ICd0cefddc-7ed8-44c4-8ef2-a7f517e374c5"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#ICd0cefddc-7ed8-44c4-8ef2-a7f517e374c5"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"IC8f1f5e1b-2612-49d8-b3a1-76a304142566"
>
<core:transformationMatrix>
-0.3960952573399263 -0.9182094244304061 0 0
0.9182094244304061 -0.3960952573399263 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
subdir/Implicit3.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358965.209 5655485.702 47.407838617376704
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#IC8f1f5e1b-2612-49d8-b3a1-76a304142566"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#IC8f1f5e1b-2612-49d8-b3a1-76a304142566"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#IC8f1f5e1b-2612-49d8-b3a1-76a304142566"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
<core:cityObjectMember>
<gen:GenericCityObject>
<gen:lod1ImplicitRepresentation>
<core:ImplicitGeometry
gml:id=
"ICe80df500-b965-49be-b06a-3993f02370ce"
>
<core:transformationMatrix>
-0.35611833267672716 -0.9344408665782699 0 0
0.9344408665782699 -0.35611833267672716 0 0
0 0 1.0 0
0 0 0 1
</core:transformationMatrix>
<core:libraryObject>
subdir/Implicit3.gml
</core:libraryObject>
<core:referencePoint>
<gml:Point>
<gml:pos>
358973.349 5655464.637 47.32017288640677
</gml:pos>
</gml:Point>
</core:referencePoint>
</core:ImplicitGeometry>
</gen:lod1ImplicitRepresentation>
<gen:lod2ImplicitRepresentation
xlink:href=
"#ICe80df500-b965-49be-b06a-3993f02370ce"
/>
<gen:lod3ImplicitRepresentation
xlink:href=
"#ICe80df500-b965-49be-b06a-3993f02370ce"
/>
<gen:lod4ImplicitRepresentation
xlink:href=
"#ICe80df500-b965-49be-b06a-3993f02370ce"
/>
</gen:GenericCityObject>
</core:cityObjectMember>
</core:CityModel>
\ No newline at end of file
CityDoctorParent/CityDoctorModel/src/test/resources/zip/implicit/subdir/Implicit3.gml
0 → 100644
View file @
2d57794b
<?xml version="1.0" encoding="UTF-8"?>
<core:CityModel
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
xmlns:tran=
"http://www.opengis.net/citygml/transportation/2.0"
xmlns:wtr=
"http://www.opengis.net/citygml/waterbody/2.0"
xmlns:smil20lang=
"http://www.w3.org/2001/SMIL20/Language"
xmlns:grp=
"http://www.opengis.net/citygml/cityobjectgroup/2.0"
xmlns:luse=
"http://www.opengis.net/citygml/landuse/2.0"
xmlns:frn=
"http://www.opengis.net/citygml/cityfurniture/2.0"
xmlns:app=
"http://www.opengis.net/citygml/appearance/2.0"
xmlns:tex=
"http://www.opengis.net/citygml/texturedsurface/2.0"
xmlns:smil20=
"http://www.w3.org/2001/SMIL20/"
xmlns:xAL=
"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:dem=
"http://www.opengis.net/citygml/relief/2.0"
xmlns:veg=
"http://www.opengis.net/citygml/vegetation/2.0"
xmlns:brid=
"http://www.opengis.net/citygml/bridge/2.0"
xmlns:tun=
"http://www.opengis.net/citygml/tunnel/2.0"
xmlns:gen=
"http://www.opengis.net/citygml/generics/2.0"
xmlns:wfs=
"http://www.opengis.net/wfs"
xsi:schemaLocation=
"http://www.opengis.net/citygml/landuse/2.0 http://schemas.opengis.net/citygml/landuse/2.0/landUse.xsd http://www.opengis.net/citygml/cityfurniture/2.0 http://schemas.opengis.net/citygml/cityfurniture/2.0/cityFurniture.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/texturedsurface/2.0 http://schemas.opengis.net/citygml/texturedsurface/2.0/texturedSurface.xsd http://www.opengis.net/citygml/transportation/2.0 http://schemas.opengis.net/citygml/transportation/2.0/transportation.xsd http://www.opengis.net/citygml/waterbody/2.0 http://schemas.opengis.net/citygml/waterbody/2.0/waterBody.xsd http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/vegetation/2.0 http://schemas.opengis.net/citygml/vegetation/2.0/vegetation.xsd http://www.opengis.net/citygml/cityobjectgroup/2.0 http://schemas.opengis.net/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd http://www.opengis.net/citygml/bridge/2.0 http://schemas.opengis.net/citygml/bridge/2.0/bridge.xsd http://www.opengis.net/citygml/tunnel/2.0 http://schemas.opengis.net/citygml/tunnel/2.0/tunnel.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd"
>
<gml:description>
Testdataset
</gml:description>
<gml:name>
ImplicitGeometry zipfile testdata
</gml:name>
<core:cityObjectMember>
<gen:GenericCityObject>
<gml:description>
CPA_Symbol
</gml:description>
<gml:name>
Implicit3
</gml:name>
<gen:lod2Geometry>
<gml:MultiSurface>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-5"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-5"
>
<gml:posList
srsDimension=
"3"
>
-0.147000 0.860000 1.282000 -0.147000 0.860000 1.232000 -1.238000 0.860000 1.232000 -1.238000 0.860000 1.282000 -0.147000 0.860000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-6"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-6"
>
<gml:posList
srsDimension=
"3"
>
-1.440000 0.760000 0.000000 -1.440000 0.760000 2.100000 -1.441000 -0.890000 2.100000 -1.441000 -0.890000 2.190000 -1.441000 -0.820000 2.260000 -1.440000 0.790000 2.260000 -1.440000 0.860000 2.190000 -1.440000 0.860000 0.000000 -1.440000 0.760000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-7"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-7"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 -0.890000 2.100000 -0.049000 -0.890000 2.190000 -1.441000 -0.890000 2.190000 -1.441000 -0.890000 2.100000 -0.049000 -0.890000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-8"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-8"
>
<gml:posList
srsDimension=
"3"
>
-1.441000 -0.820000 2.260000 -1.441000 -0.890000 2.190000 -0.049000 -0.890000 2.190000 -0.049000 -0.820000 2.260000 -1.441000 -0.820000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-9"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-9"
>
<gml:posList
srsDimension=
"3"
>
-1.440000 0.860000 2.190000 -1.440000 0.790000 2.260000 -0.049000 0.790000 2.260000 -0.049000 0.860000 2.190000 -1.440000 0.860000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-10"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-10"
>
<gml:posList
srsDimension=
"3"
>
-1.238000 0.860000 1.132000 -1.238000 0.860000 1.182000 -0.147000 0.860000 1.182000 -0.147000 0.860000 1.132000 -1.238000 0.860000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-11"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-11"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.790000 2.260000 -1.440000 0.790000 2.260000 -1.441000 -0.820000 2.260000 -0.049000 -0.820000 2.260000 -0.049000 0.790000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-12"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-12"
>
<gml:posList
srsDimension=
"3"
>
-1.342000 0.760000 2.100000 -1.440000 0.760000 2.100000 -1.440000 0.760000 0.000000 -1.342000 0.760000 0.000000 -1.342000 0.760000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-13"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-13"
>
<gml:posList
srsDimension=
"3"
>
-1.441000 -0.890000 2.100000 -1.440000 0.760000 2.100000 -1.342000 0.760000 2.100000 -1.342000 0.860000 2.100000 -0.049000 0.860000 2.100000 -0.049000 -0.890000 2.100000 -1.441000 -0.890000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-14"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-14"
>
<gml:posList
srsDimension=
"3"
>
-1.440000 0.860000 2.190000 -0.049000 0.860000 2.190000 -0.049000 0.860000 2.100000 -1.342000 0.860000 2.100000 -1.342000 0.860000 0.547000 -1.342000 0.860000 0.504000 -1.342000 0.860000 0.300000 -1.342000 0.860000 0.220000 -1.342000 0.860000 0.000000 -1.440000 0.860000 0.000000 -1.440000 0.860000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-15"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-15"
>
<gml:posList
srsDimension=
"3"
>
-1.342000 0.860000 0.220000 -1.342000 0.860000 0.300000 -0.049000 0.860000 0.300000 -0.049000 0.860000 0.220000 -1.342000 0.860000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-16"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-16"
>
<gml:posList
srsDimension=
"3"
>
-1.342000 0.860000 2.100000 -1.342000 0.760000 2.100000 -1.342000 0.760000 0.000000 -1.342000 0.860000 0.000000 -1.342000 0.860000 0.220000 -1.342000 0.860000 0.300000 -1.342000 0.860000 0.504000 -1.342000 0.860000 0.547000 -1.342000 0.860000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-17"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-17"
>
<gml:posList
srsDimension=
"3"
>
-1.342000 0.860000 0.547000 -1.342000 0.860000 0.504000 -1.242000 0.860000 0.504000 -1.242000 0.860000 0.547000 -1.342000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-18"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-18"
>
<gml:posList
srsDimension=
"3"
>
-1.242000 0.860000 0.504000 -1.242000 0.535000 0.504000 -1.242000 0.535000 0.547000 -1.242000 0.860000 0.547000 -1.242000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-19"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-19"
>
<gml:posList
srsDimension=
"3"
>
-1.192000 0.535000 0.504000 -1.192000 0.860000 0.504000 -1.192000 0.860000 0.547000 -1.192000 0.535000 0.547000 -1.192000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-20"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-20"
>
<gml:posList
srsDimension=
"3"
>
-1.242000 0.535000 0.547000 -1.242000 0.535000 0.504000 -1.192000 0.535000 0.504000 -1.192000 0.535000 0.547000 -1.242000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-21"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-21"
>
<gml:posList
srsDimension=
"3"
>
-1.242000 0.860000 0.547000 -1.242000 0.535000 0.547000 -1.192000 0.535000 0.547000 -1.192000 0.860000 0.547000 -1.242000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-22"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-22"
>
<gml:posList
srsDimension=
"3"
>
-0.199000 0.860000 0.504000 -0.199000 0.535000 0.504000 -0.199000 0.535000 0.547000 -0.199000 0.860000 0.547000 -0.199000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-23"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-23"
>
<gml:posList
srsDimension=
"3"
>
-0.149000 0.535000 0.504000 -0.149000 0.535000 0.547000 -0.199000 0.535000 0.547000 -0.199000 0.535000 0.504000 -0.149000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-24"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-24"
>
<gml:posList
srsDimension=
"3"
>
-0.149000 0.535000 0.547000 -0.149000 0.860000 0.547000 -0.199000 0.860000 0.547000 -0.199000 0.535000 0.547000 -0.149000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-25"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-25"
>
<gml:posList
srsDimension=
"3"
>
-0.892000 0.860000 0.547000 -0.892000 0.535000 0.547000 -0.842000 0.535000 0.547000 -0.842000 0.860000 0.547000 -0.892000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-26"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-26"
>
<gml:posList
srsDimension=
"3"
>
-0.892000 0.535000 0.547000 -0.892000 0.535000 0.504000 -0.842000 0.535000 0.504000 -0.842000 0.535000 0.547000 -0.892000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-27"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-27"
>
<gml:posList
srsDimension=
"3"
>
-0.842000 0.535000 0.504000 -0.842000 0.860000 0.504000 -0.842000 0.860000 0.547000 -0.842000 0.535000 0.547000 -0.842000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-28"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-28"
>
<gml:posList
srsDimension=
"3"
>
-0.892000 0.860000 0.504000 -0.892000 0.535000 0.504000 -0.892000 0.535000 0.547000 -0.892000 0.860000 0.547000 -0.892000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-29"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-29"
>
<gml:posList
srsDimension=
"3"
>
-0.552000 0.535000 0.547000 -0.552000 0.535000 0.504000 -0.502000 0.535000 0.504000 -0.502000 0.535000 0.547000 -0.552000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-30"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-30"
>
<gml:posList
srsDimension=
"3"
>
-0.502000 0.535000 0.504000 -0.502000 0.860000 0.504000 -0.502000 0.860000 0.547000 -0.502000 0.535000 0.547000 -0.502000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-31"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-31"
>
<gml:posList
srsDimension=
"3"
>
-0.552000 0.860000 0.547000 -0.552000 0.535000 0.547000 -0.502000 0.535000 0.547000 -0.502000 0.860000 0.547000 -0.552000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-32"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-32"
>
<gml:posList
srsDimension=
"3"
>
-1.172000 0.840000 0.547000 -1.172000 0.535000 0.547000 -0.912000 0.535000 0.547000 -0.912000 0.840000 0.547000 -1.172000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-33"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-33"
>
<gml:posList
srsDimension=
"3"
>
-1.172000 0.535000 0.520000 -1.172000 0.840000 0.520000 -0.912000 0.840000 0.520000 -0.912000 0.535000 0.520000 -1.172000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-34"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-34"
>
<gml:posList
srsDimension=
"3"
>
-1.172000 0.535000 0.547000 -1.172000 0.840000 0.547000 -1.172000 0.840000 0.520000 -1.172000 0.535000 0.520000 -1.172000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-35"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-35"
>
<gml:posList
srsDimension=
"3"
>
-1.172000 0.840000 0.547000 -0.912000 0.840000 0.547000 -0.912000 0.840000 0.520000 -1.172000 0.840000 0.520000 -1.172000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-36"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-36"
>
<gml:posList
srsDimension=
"3"
>
-0.912000 0.840000 0.547000 -0.912000 0.535000 0.547000 -0.912000 0.535000 0.520000 -0.912000 0.840000 0.520000 -0.912000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-37"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-37"
>
<gml:posList
srsDimension=
"3"
>
-0.912000 0.535000 0.547000 -1.172000 0.535000 0.547000 -1.172000 0.535000 0.520000 -0.912000 0.535000 0.520000 -0.912000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-38"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-38"
>
<gml:posList
srsDimension=
"3"
>
-0.552000 0.860000 0.504000 -0.552000 0.535000 0.504000 -0.552000 0.535000 0.547000 -0.552000 0.860000 0.547000 -0.552000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-39"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-39"
>
<gml:posList
srsDimension=
"3"
>
-0.828000 0.840000 0.547000 -0.568000 0.840000 0.547000 -0.568000 0.840000 0.520000 -0.828000 0.840000 0.520000 -0.828000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-40"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-40"
>
<gml:posList
srsDimension=
"3"
>
-0.828000 0.535000 0.520000 -0.828000 0.840000 0.520000 -0.568000 0.840000 0.520000 -0.568000 0.535000 0.520000 -0.828000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-41"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-41"
>
<gml:posList
srsDimension=
"3"
>
-0.828000 0.535000 0.547000 -0.828000 0.840000 0.547000 -0.828000 0.840000 0.520000 -0.828000 0.535000 0.520000 -0.828000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-42"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-42"
>
<gml:posList
srsDimension=
"3"
>
-0.568000 0.535000 0.547000 -0.828000 0.535000 0.547000 -0.828000 0.535000 0.520000 -0.568000 0.535000 0.520000 -0.568000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-43"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-43"
>
<gml:posList
srsDimension=
"3"
>
-0.568000 0.840000 0.547000 -0.568000 0.535000 0.547000 -0.568000 0.535000 0.520000 -0.568000 0.840000 0.520000 -0.568000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-44"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-44"
>
<gml:posList
srsDimension=
"3"
>
-0.828000 0.840000 0.547000 -0.828000 0.535000 0.547000 -0.568000 0.535000 0.547000 -0.568000 0.840000 0.547000 -0.828000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-45"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-45"
>
<gml:posList
srsDimension=
"3"
>
-0.481000 0.840000 0.547000 -0.481000 0.535000 0.547000 -0.221000 0.535000 0.547000 -0.221000 0.840000 0.547000 -0.481000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-46"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-46"
>
<gml:posList
srsDimension=
"3"
>
-0.221000 0.840000 0.547000 -0.221000 0.535000 0.547000 -0.221000 0.535000 0.520000 -0.221000 0.840000 0.520000 -0.221000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-47"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-47"
>
<gml:posList
srsDimension=
"3"
>
-0.481000 0.535000 0.520000 -0.481000 0.840000 0.520000 -0.221000 0.840000 0.520000 -0.221000 0.535000 0.520000 -0.481000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-48"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-48"
>
<gml:posList
srsDimension=
"3"
>
-0.221000 0.535000 0.547000 -0.481000 0.535000 0.547000 -0.481000 0.535000 0.520000 -0.221000 0.535000 0.520000 -0.221000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-49"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-49"
>
<gml:posList
srsDimension=
"3"
>
-0.481000 0.840000 0.547000 -0.221000 0.840000 0.547000 -0.221000 0.840000 0.520000 -0.481000 0.840000 0.520000 -0.481000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-50"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-50"
>
<gml:posList
srsDimension=
"3"
>
-0.481000 0.535000 0.547000 -0.481000 0.840000 0.547000 -0.481000 0.840000 0.520000 -0.481000 0.535000 0.520000 -0.481000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-51"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-51"
>
<gml:posList
srsDimension=
"3"
>
-0.149000 0.535000 0.504000 -0.149000 0.860000 0.504000 -0.149000 0.860000 0.547000 -0.149000 0.535000 0.547000 -0.149000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-52"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-52"
>
<gml:posList
srsDimension=
"3"
>
-0.502000 0.860000 0.547000 -0.502000 0.860000 0.504000 -0.552000 0.860000 0.504000 -0.552000 0.860000 0.547000 -0.502000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-53"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-53"
>
<gml:posList
srsDimension=
"3"
>
-0.842000 0.860000 0.547000 -0.842000 0.860000 0.504000 -0.892000 0.860000 0.504000 -0.892000 0.860000 0.547000 -0.842000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-54"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-54"
>
<gml:posList
srsDimension=
"3"
>
-0.149000 0.860000 0.504000 -0.199000 0.860000 0.504000 -0.199000 0.860000 0.547000 -0.149000 0.860000 0.547000 -0.149000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-55"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-55"
>
<gml:posList
srsDimension=
"3"
>
-1.192000 0.860000 0.504000 -1.242000 0.860000 0.504000 -1.242000 0.860000 0.547000 -1.192000 0.860000 0.547000 -1.192000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-56"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-56"
>
<gml:posList
srsDimension=
"3"
>
-1.242000 0.860000 0.504000 -1.192000 0.860000 0.504000 -0.892000 0.860000 0.504000 -0.842000 0.860000 0.504000 -0.552000 0.860000 0.504000 -0.502000 0.860000 0.504000 -0.199000 0.860000 0.504000 -0.149000 0.860000 0.504000 -0.049000 0.860000 0.504000 -0.049000 0.860000 0.300000 -1.342000 0.860000 0.300000 -1.342000 0.860000 0.504000 -1.242000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-57"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-57"
>
<gml:posList
srsDimension=
"3"
>
-0.842000 0.860000 0.547000 -0.842000 0.860000 0.504000 -0.552000 0.860000 0.504000 -0.552000 0.860000 0.547000 -0.842000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-58"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-58"
>
<gml:posList
srsDimension=
"3"
>
-1.192000 0.860000 0.547000 -1.192000 0.860000 0.504000 -0.892000 0.860000 0.504000 -0.892000 0.860000 0.547000 -1.192000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-59"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-59"
>
<gml:posList
srsDimension=
"3"
>
-0.502000 0.860000 0.547000 -0.502000 0.860000 0.504000 -0.199000 0.860000 0.504000 -0.199000 0.860000 0.547000 -0.502000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-60"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-60"
>
<gml:posList
srsDimension=
"3"
>
-0.149000 0.860000 0.547000 -0.149000 0.860000 0.504000 -0.049000 0.860000 0.504000 -0.049000 0.860000 0.547000 -0.149000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-61"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-61"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.860000 2.100000 -0.049000 0.860000 0.547000 -0.149000 0.860000 0.547000 -0.199000 0.860000 0.547000 -0.502000 0.860000 0.547000 -0.552000 0.860000 0.547000 -0.842000 0.860000 0.547000 -0.892000 0.860000 0.547000 -1.192000 0.860000 0.547000 -1.242000 0.860000 0.547000 -1.342000 0.860000 0.547000 -1.342000 0.860000 2.100000 -0.049000 0.860000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-61_1"
>
<gml:posList
srsDimension=
"3"
>
-0.147000 0.860000 1.182000 -1.238000 0.860000 1.182000 -1.238000 0.860000 1.132000 -0.147000 0.860000 1.132000 -0.147000 0.860000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-61_2"
>
<gml:posList
srsDimension=
"3"
>
-1.238000 0.860000 1.282000 -1.238000 0.860000 1.232000 -0.147000 0.860000 1.232000 -0.147000 0.860000 1.282000 -1.238000 0.860000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-62"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-62"
>
<gml:posList
srsDimension=
"3"
>
2.832000 0.759000 2.100000 2.734000 0.759000 2.100000 2.734000 0.759000 0.000000 2.832000 0.759000 0.000000 2.832000 0.759000 0.220000 2.832000 0.759000 0.300000 2.832000 0.759000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-63"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-63"
>
<gml:posList
srsDimension=
"3"
>
2.764000 0.789000 2.260000 2.832000 0.859000 2.190000 1.343000 0.859000 2.190000 1.343000 0.789000 2.260000 2.764000 0.789000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-64"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-64"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.391000 1.182000 2.832000 -0.391000 1.132000 2.832000 0.659000 1.132000 2.832000 0.659000 1.182000 2.832000 -0.391000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-65"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-65"
>
<gml:posList
srsDimension=
"3"
>
2.832000 0.859000 2.190000 2.764000 0.789000 2.260000 2.763000 -0.821000 2.260000 2.832000 -0.891000 2.190000 2.832000 0.859000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-66"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-66"
>
<gml:posList
srsDimension=
"3"
>
1.343000 -0.891000 2.190000 2.832000 -0.891000 2.190000 2.763000 -0.821000 2.260000 1.343000 -0.821000 2.260000 1.343000 -0.891000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-67"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-67"
>
<gml:posList
srsDimension=
"3"
>
1.539000 0.859000 1.232000 1.539000 0.859000 1.282000 2.630000 0.859000 1.282000 2.630000 0.859000 1.232000 1.539000 0.859000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-68"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-68"
>
<gml:posList
srsDimension=
"3"
>
2.734000 -0.591000 2.100000 2.734000 -0.591000 0.000000 2.832000 -0.591000 0.000000 2.832000 -0.591000 2.100000 2.734000 -0.591000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-69"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-69"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.491000 0.300000 2.832000 -0.491000 0.220000 2.832000 0.759000 0.220000 2.832000 0.759000 0.300000 2.832000 -0.491000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-70"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-70"
>
<gml:posList
srsDimension=
"3"
>
2.734000 -0.591000 2.100000 2.734000 -0.491000 2.100000 2.734000 -0.491000 0.000000 2.734000 -0.591000 0.000000 2.734000 -0.591000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-71"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-71"
>
<gml:posList
srsDimension=
"3"
>
2.734000 0.859000 0.300000 2.734000 0.859000 0.220000 1.441000 0.859000 0.220000 1.441000 0.859000 0.300000 2.734000 0.859000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-72"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-72"
>
<gml:posList
srsDimension=
"3"
>
1.441000 0.859000 2.100000 2.734000 0.859000 2.100000 2.734000 0.859000 0.300000 1.441000 0.859000 0.300000 1.441000 0.859000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-72_1"
>
<gml:posList
srsDimension=
"3"
>
2.630000 0.859000 1.182000 1.539000 0.859000 1.182000 1.539000 0.859000 1.132000 2.630000 0.859000 1.132000 2.630000 0.859000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-72_2"
>
<gml:posList
srsDimension=
"3"
>
2.630000 0.859000 1.232000 2.630000 0.859000 1.282000 1.539000 0.859000 1.282000 1.539000 0.859000 1.232000 2.630000 0.859000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-73"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-73"
>
<gml:posList
srsDimension=
"3"
>
2.832000 0.659000 1.232000 2.832000 0.659000 1.282000 2.832000 -0.391000 1.282000 2.832000 -0.391000 1.232000 2.832000 0.659000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-74"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-74"
>
<gml:posList
srsDimension=
"3"
>
2.630000 0.859000 1.182000 2.630000 0.859000 1.132000 1.539000 0.859000 1.132000 1.539000 0.859000 1.182000 2.630000 0.859000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-75"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-75"
>
<gml:posList
srsDimension=
"3"
>
2.734000 0.759000 2.100000 2.734000 0.859000 2.100000 2.734000 0.859000 0.300000 2.734000 0.859000 0.220000 2.734000 0.859000 0.000000 2.734000 0.759000 0.000000 2.734000 0.759000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-76"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-76"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.491000 2.100000 2.832000 -0.491000 0.300000 2.832000 0.759000 0.300000 2.832000 0.759000 2.100000 2.832000 -0.491000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-76_1"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.391000 1.132000 2.832000 -0.391000 1.182000 2.832000 0.659000 1.182000 2.832000 0.659000 1.132000 2.832000 -0.391000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-76_2"
>
<gml:posList
srsDimension=
"3"
>
2.832000 0.659000 1.232000 2.832000 -0.391000 1.232000 2.832000 -0.391000 1.282000 2.832000 0.659000 1.282000 2.832000 0.659000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-77"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-77"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.891000 2.100000 2.832000 -0.891000 2.190000 1.343000 -0.891000 2.190000 1.343000 -0.891000 2.100000 2.832000 -0.891000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-78"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-78"
>
<gml:posList
srsDimension=
"3"
>
2.832000 0.859000 0.000000 2.832000 0.859000 2.190000 2.832000 -0.891000 2.190000 2.832000 -0.891000 2.100000 2.832000 -0.591000 2.100000 2.832000 -0.591000 0.000000 2.832000 -0.491000 0.000000 2.832000 -0.491000 0.220000 2.832000 -0.491000 0.300000 2.832000 -0.491000 2.100000 2.832000 0.759000 2.100000 2.832000 0.759000 0.300000 2.832000 0.759000 0.220000 2.832000 0.759000 0.000000 2.832000 0.859000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-79"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-79"
>
<gml:posList
srsDimension=
"3"
>
2.734000 0.859000 2.100000 1.441000 0.859000 2.100000 1.441000 0.859000 0.300000 1.441000 0.859000 0.220000 1.441000 0.859000 0.000000 1.343000 0.859000 0.000000 1.343000 0.859000 2.190000 2.832000 0.859000 2.190000 2.832000 0.859000 0.000000 2.734000 0.859000 0.000000 2.734000 0.859000 0.220000 2.734000 0.859000 0.300000 2.734000 0.859000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-80"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-80"
>
<gml:posList
srsDimension=
"3"
>
2.734000 -0.491000 2.100000 2.832000 -0.491000 2.100000 2.832000 -0.491000 0.300000 2.832000 -0.491000 0.220000 2.832000 -0.491000 0.000000 2.734000 -0.491000 0.000000 2.734000 -0.491000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-81"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-81"
>
<gml:posList
srsDimension=
"3"
>
2.764000 0.789000 2.260000 1.343000 0.789000 2.260000 1.343000 -0.821000 2.260000 2.763000 -0.821000 2.260000 2.764000 0.789000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-82"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-82"
>
<gml:posList
srsDimension=
"3"
>
1.441000 0.759000 2.100000 1.343000 0.759000 2.100000 1.343000 0.759000 0.000000 1.441000 0.759000 0.000000 1.441000 0.759000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-83"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-83"
>
<gml:posList
srsDimension=
"3"
>
1.343000 0.759000 0.000000 1.343000 0.759000 2.100000 1.343000 -0.891000 2.100000 1.343000 -0.891000 2.190000 1.343000 -0.821000 2.260000 1.343000 0.789000 2.260000 1.343000 0.859000 2.190000 1.343000 0.859000 0.000000 1.343000 0.759000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-84"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-84"
>
<gml:posList
srsDimension=
"3"
>
1.441000 0.859000 2.100000 1.441000 0.759000 2.100000 1.441000 0.759000 0.000000 1.441000 0.859000 0.000000 1.441000 0.859000 0.220000 1.441000 0.859000 0.300000 1.441000 0.859000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-85"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-85"
>
<gml:posList
srsDimension=
"3"
>
2.832000 -0.591000 2.100000 2.832000 -0.891000 2.100000 1.343000 -0.891000 2.100000 1.343000 0.759000 2.100000 1.441000 0.759000 2.100000 1.441000 0.859000 2.100000 2.734000 0.859000 2.100000 2.734000 0.759000 2.100000 2.832000 0.759000 2.100000 2.832000 -0.491000 2.100000 2.734000 -0.491000 2.100000 2.734000 -0.591000 2.100000 2.832000 -0.591000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-86"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-86"
>
<gml:posList
srsDimension=
"3"
>
-1.441000 -0.890000 2.100000 -1.441000 -0.890000 2.190000 -2.832000 -0.890000 2.190000 -2.832000 -0.890000 2.100000 -1.441000 -0.890000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-87"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-87"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 -0.490000 0.300000 -2.832000 -0.490000 2.100000 -2.832000 0.760000 2.100000 -2.832000 0.760000 0.300000 -2.832000 -0.490000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-87_1"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 0.660000 1.132000 -2.832000 0.660000 1.182000 -2.832000 -0.390000 1.182000 -2.832000 -0.390000 1.132000 -2.832000 0.660000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-87_2"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 -0.390000 1.232000 -2.832000 0.660000 1.232000 -2.832000 0.660000 1.282000 -2.832000 -0.390000 1.282000 -2.832000 -0.390000 1.232000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-88"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-88"
>
<gml:posList
srsDimension=
"3"
>
-2.763000 0.790000 2.260000 -2.764000 -0.820000 2.260000 -1.441000 -0.820000 2.260000 -1.441000 0.790000 2.260000 -2.763000 0.790000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-89"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-89"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 0.860000 2.190000 -1.441000 0.860000 2.190000 -1.441000 0.860000 2.100000 -2.734000 0.860000 2.100000 -2.734000 0.860000 0.300000 -2.734000 0.860000 0.220000 -2.734000 0.860000 0.000000 -2.832000 0.860000 0.000000 -2.832000 0.860000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-90"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-90"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 0.760000 2.100000 -2.734000 0.760000 2.100000 -2.734000 0.860000 2.100000 -1.441000 0.860000 2.100000 -1.441000 -0.890000 2.100000 -2.832000 -0.890000 2.100000 -2.832000 -0.590000 2.100000 -2.734000 -0.590000 2.100000 -2.734000 -0.490000 2.100000 -2.832000 -0.490000 2.100000 -2.832000 0.760000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-91"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-91"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 0.760000 0.300000 -2.832000 0.760000 2.100000 -2.832000 -0.490000 2.100000 -2.832000 -0.490000 0.300000 -2.832000 -0.490000 0.220000 -2.832000 -0.490000 0.000000 -2.832000 -0.590000 0.000000 -2.832000 -0.590000 2.100000 -2.832000 -0.890000 2.100000 -2.832000 -0.890000 2.190000 -2.832000 0.860000 2.190000 -2.832000 0.860000 0.000000 -2.832000 0.760000 0.000000 -2.832000 0.760000 0.220000 -2.832000 0.760000 0.300000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-92"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-92"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 -0.490000 2.100000 -2.734000 -0.490000 2.100000 -2.734000 -0.490000 0.000000 -2.832000 -0.490000 0.000000 -2.832000 -0.490000 0.220000 -2.832000 -0.490000 0.300000 -2.832000 -0.490000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-93"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-93"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 -0.590000 2.100000 -2.832000 -0.590000 2.100000 -2.832000 -0.590000 0.000000 -2.734000 -0.590000 0.000000 -2.734000 -0.590000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-94"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-94"
>
<gml:posList
srsDimension=
"3"
>
-2.763000 0.790000 2.260000 -2.832000 0.860000 2.190000 -2.832000 -0.890000 2.190000 -2.764000 -0.820000 2.260000 -2.763000 0.790000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-95"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-95"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 -0.490000 2.100000 -2.734000 -0.590000 2.100000 -2.734000 -0.590000 0.000000 -2.734000 -0.490000 0.000000 -2.734000 -0.490000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-96"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-96"
>
<gml:posList
srsDimension=
"3"
>
-1.441000 -0.890000 2.190000 -1.441000 -0.820000 2.260000 -2.764000 -0.820000 2.260000 -2.832000 -0.890000 2.190000 -1.441000 -0.890000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-97"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-97"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 0.760000 2.100000 -2.832000 0.760000 2.100000 -2.832000 0.760000 0.300000 -2.832000 0.760000 0.220000 -2.832000 0.760000 0.000000 -2.734000 0.760000 0.000000 -2.734000 0.760000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-98"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-98"
>
<gml:posList
srsDimension=
"3"
>
-1.441000 0.790000 2.260000 -1.441000 0.860000 2.190000 -2.832000 0.860000 2.190000 -2.763000 0.790000 2.260000 -1.441000 0.790000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-99"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-99"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 0.860000 2.100000 -2.734000 0.760000 2.100000 -2.734000 0.760000 0.000000 -2.734000 0.860000 0.000000 -2.734000 0.860000 0.220000 -2.734000 0.860000 0.300000 -2.734000 0.860000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-100"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-100"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 -0.490000 0.220000 -2.832000 -0.490000 0.300000 -2.832000 0.760000 0.300000 -2.832000 0.760000 0.220000 -2.832000 -0.490000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-101"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-101"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 0.860000 0.220000 -2.734000 0.860000 0.300000 -1.441000 0.860000 0.300000 -1.441000 0.860000 0.220000 -2.734000 0.860000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-102"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-102"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 0.660000 1.282000 -2.832000 0.660000 1.232000 -2.832000 -0.390000 1.232000 -2.832000 -0.390000 1.282000 -2.832000 0.660000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-103"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-103"
>
<gml:posList
srsDimension=
"3"
>
-2.832000 -0.390000 1.132000 -2.832000 -0.390000 1.182000 -2.832000 0.660000 1.182000 -2.832000 0.660000 1.132000 -2.832000 -0.390000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-104"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-104"
>
<gml:posList
srsDimension=
"3"
>
-2.629000 0.860000 1.132000 -2.629000 0.860000 1.182000 -1.539000 0.860000 1.182000 -1.539000 0.860000 1.132000 -2.629000 0.860000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-105"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-105"
>
<gml:posList
srsDimension=
"3"
>
-1.539000 0.860000 1.282000 -1.539000 0.860000 1.232000 -2.629000 0.860000 1.232000 -2.629000 0.860000 1.282000 -1.539000 0.860000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-106"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-106"
>
<gml:posList
srsDimension=
"3"
>
-2.734000 0.860000 2.100000 -1.441000 0.860000 2.100000 -1.441000 0.860000 0.300000 -2.734000 0.860000 0.300000 -2.734000 0.860000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-106_1"
>
<gml:posList
srsDimension=
"3"
>
-1.539000 0.860000 1.182000 -2.629000 0.860000 1.182000 -2.629000 0.860000 1.132000 -1.539000 0.860000 1.132000 -1.539000 0.860000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-106_2"
>
<gml:posList
srsDimension=
"3"
>
-2.629000 0.860000 1.282000 -2.629000 0.860000 1.232000 -1.539000 0.860000 1.232000 -1.539000 0.860000 1.282000 -2.629000 0.860000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-107"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-107"
>
<gml:posList
srsDimension=
"3"
>
1.245000 0.859000 1.282000 1.245000 0.859000 1.232000 0.154000 0.860000 1.232000 0.154000 0.860000 1.282000 1.245000 0.859000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-108"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-108"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.760000 0.000000 -0.049000 0.760000 2.100000 -0.049000 -0.890000 2.100000 -0.049000 -0.890000 2.190000 -0.049000 -0.820000 2.260000 -0.049000 0.790000 2.260000 -0.049000 0.860000 2.190000 -0.049000 0.860000 0.000000 -0.049000 0.760000 0.000000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-109"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-109"
>
<gml:posList
srsDimension=
"3"
>
1.343000 -0.891000 2.100000 1.343000 -0.891000 2.190000 -0.049000 -0.890000 2.190000 -0.049000 -0.890000 2.100000 1.343000 -0.891000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-110"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-110"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 -0.820000 2.260000 -0.049000 -0.890000 2.190000 1.343000 -0.891000 2.190000 1.343000 -0.821000 2.260000 -0.049000 -0.820000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-111"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-111"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.860000 2.190000 -0.049000 0.790000 2.260000 1.343000 0.789000 2.260000 1.343000 0.859000 2.190000 -0.049000 0.860000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-112"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-112"
>
<gml:posList
srsDimension=
"3"
>
0.154000 0.860000 1.132000 0.154000 0.860000 1.182000 1.245000 0.859000 1.182000 1.245000 0.859000 1.132000 0.154000 0.860000 1.132000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-113"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-113"
>
<gml:posList
srsDimension=
"3"
>
1.343000 0.789000 2.260000 -0.049000 0.790000 2.260000 -0.049000 -0.820000 2.260000 1.343000 -0.821000 2.260000 1.343000 0.789000 2.260000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-114"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-114"
>
<gml:posList
srsDimension=
"3"
>
0.049000 0.760000 2.100000 -0.049000 0.760000 2.100000 -0.049000 0.760000 0.000000 0.049000 0.760000 0.000000 0.049000 0.760000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-115"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-115"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 -0.890000 2.100000 -0.049000 0.760000 2.100000 0.049000 0.760000 2.100000 0.049000 0.860000 2.100000 1.343000 0.859000 2.100000 1.343000 -0.891000 2.100000 -0.049000 -0.890000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-116"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-116"
>
<gml:posList
srsDimension=
"3"
>
-0.049000 0.860000 2.190000 1.343000 0.859000 2.190000 1.343000 0.859000 2.100000 0.049000 0.860000 2.100000 0.049000 0.860000 0.547000 0.049000 0.860000 0.504000 0.049000 0.860000 0.300000 0.049000 0.860000 0.220000 0.049000 0.860000 0.000000 -0.049000 0.860000 0.000000 -0.049000 0.860000 2.190000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-117"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-117"
>
<gml:posList
srsDimension=
"3"
>
0.049000 0.860000 0.220000 0.049000 0.860000 0.300000 1.343000 0.859000 0.300000 1.343000 0.859000 0.220000 0.049000 0.860000 0.220000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-118"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-118"
>
<gml:posList
srsDimension=
"3"
>
0.049000 0.860000 2.100000 0.049000 0.760000 2.100000 0.049000 0.760000 0.000000 0.049000 0.860000 0.000000 0.049000 0.860000 0.220000 0.049000 0.860000 0.300000 0.049000 0.860000 0.504000 0.049000 0.860000 0.547000 0.049000 0.860000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-119"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-119"
>
<gml:posList
srsDimension=
"3"
>
0.049000 0.860000 0.547000 0.049000 0.860000 0.504000 0.149000 0.860000 0.504000 0.149000 0.860000 0.547000 0.049000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-120"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-120"
>
<gml:posList
srsDimension=
"3"
>
0.149000 0.860000 0.504000 0.149000 0.535000 0.504000 0.149000 0.535000 0.547000 0.149000 0.860000 0.547000 0.149000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-121"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-121"
>
<gml:posList
srsDimension=
"3"
>
0.199000 0.535000 0.504000 0.199000 0.860000 0.504000 0.199000 0.860000 0.547000 0.199000 0.535000 0.547000 0.199000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-122"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-122"
>
<gml:posList
srsDimension=
"3"
>
0.149000 0.535000 0.547000 0.149000 0.535000 0.504000 0.199000 0.535000 0.504000 0.199000 0.535000 0.547000 0.149000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-123"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-123"
>
<gml:posList
srsDimension=
"3"
>
0.149000 0.860000 0.547000 0.149000 0.535000 0.547000 0.199000 0.535000 0.547000 0.199000 0.860000 0.547000 0.149000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-124"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-124"
>
<gml:posList
srsDimension=
"3"
>
1.193000 0.859000 0.504000 1.192000 0.534000 0.504000 1.192000 0.534000 0.547000 1.193000 0.859000 0.547000 1.193000 0.859000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-125"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-125"
>
<gml:posList
srsDimension=
"3"
>
1.242000 0.534000 0.504000 1.242000 0.534000 0.547000 1.192000 0.534000 0.547000 1.192000 0.534000 0.504000 1.242000 0.534000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-126"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-126"
>
<gml:posList
srsDimension=
"3"
>
1.242000 0.534000 0.547000 1.243000 0.859000 0.547000 1.193000 0.859000 0.547000 1.192000 0.534000 0.547000 1.242000 0.534000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-127"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-127"
>
<gml:posList
srsDimension=
"3"
>
0.499000 0.859000 0.547000 0.499000 0.535000 0.547000 0.549000 0.535000 0.547000 0.549000 0.859000 0.547000 0.499000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-128"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-128"
>
<gml:posList
srsDimension=
"3"
>
0.499000 0.535000 0.547000 0.499000 0.535000 0.504000 0.549000 0.535000 0.504000 0.549000 0.535000 0.547000 0.499000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-129"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-129"
>
<gml:posList
srsDimension=
"3"
>
0.549000 0.535000 0.504000 0.549000 0.859000 0.504000 0.549000 0.859000 0.547000 0.549000 0.535000 0.547000 0.549000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-130"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-130"
>
<gml:posList
srsDimension=
"3"
>
0.499000 0.859000 0.504000 0.499000 0.535000 0.504000 0.499000 0.535000 0.547000 0.499000 0.859000 0.547000 0.499000 0.859000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-131"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-131"
>
<gml:posList
srsDimension=
"3"
>
0.839000 0.535000 0.547000 0.839000 0.535000 0.504000 0.889000 0.535000 0.504000 0.889000 0.535000 0.547000 0.839000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-132"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-132"
>
<gml:posList
srsDimension=
"3"
>
0.889000 0.535000 0.504000 0.889000 0.859000 0.504000 0.889000 0.859000 0.547000 0.889000 0.535000 0.547000 0.889000 0.535000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-133"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-133"
>
<gml:posList
srsDimension=
"3"
>
0.839000 0.859000 0.547000 0.839000 0.535000 0.547000 0.889000 0.535000 0.547000 0.889000 0.859000 0.547000 0.839000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-134"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-134"
>
<gml:posList
srsDimension=
"3"
>
0.219000 0.840000 0.547000 0.219000 0.535000 0.547000 0.479000 0.535000 0.547000 0.479000 0.839000 0.547000 0.219000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-135"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-135"
>
<gml:posList
srsDimension=
"3"
>
0.219000 0.535000 0.520000 0.219000 0.840000 0.520000 0.479000 0.839000 0.520000 0.479000 0.535000 0.520000 0.219000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-136"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-136"
>
<gml:posList
srsDimension=
"3"
>
0.219000 0.535000 0.547000 0.219000 0.840000 0.547000 0.219000 0.840000 0.520000 0.219000 0.535000 0.520000 0.219000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-137"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-137"
>
<gml:posList
srsDimension=
"3"
>
0.219000 0.840000 0.547000 0.479000 0.839000 0.547000 0.479000 0.839000 0.520000 0.219000 0.840000 0.520000 0.219000 0.840000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-138"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-138"
>
<gml:posList
srsDimension=
"3"
>
0.479000 0.839000 0.547000 0.479000 0.535000 0.547000 0.479000 0.535000 0.520000 0.479000 0.839000 0.520000 0.479000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-139"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-139"
>
<gml:posList
srsDimension=
"3"
>
0.479000 0.535000 0.547000 0.219000 0.535000 0.547000 0.219000 0.535000 0.520000 0.479000 0.535000 0.520000 0.479000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-140"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-140"
>
<gml:posList
srsDimension=
"3"
>
0.839000 0.859000 0.504000 0.839000 0.535000 0.504000 0.839000 0.535000 0.547000 0.839000 0.859000 0.547000 0.839000 0.859000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-141"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-141"
>
<gml:posList
srsDimension=
"3"
>
0.564000 0.839000 0.547000 0.824000 0.839000 0.547000 0.824000 0.839000 0.520000 0.564000 0.839000 0.520000 0.564000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-142"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-142"
>
<gml:posList
srsDimension=
"3"
>
0.564000 0.535000 0.520000 0.564000 0.839000 0.520000 0.824000 0.839000 0.520000 0.824000 0.535000 0.520000 0.564000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-143"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-143"
>
<gml:posList
srsDimension=
"3"
>
0.564000 0.535000 0.547000 0.564000 0.839000 0.547000 0.564000 0.839000 0.520000 0.564000 0.535000 0.520000 0.564000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-144"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-144"
>
<gml:posList
srsDimension=
"3"
>
0.824000 0.535000 0.547000 0.564000 0.535000 0.547000 0.564000 0.535000 0.520000 0.824000 0.535000 0.520000 0.824000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-145"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-145"
>
<gml:posList
srsDimension=
"3"
>
0.824000 0.839000 0.547000 0.824000 0.535000 0.547000 0.824000 0.535000 0.520000 0.824000 0.839000 0.520000 0.824000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-146"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-146"
>
<gml:posList
srsDimension=
"3"
>
0.564000 0.839000 0.547000 0.564000 0.535000 0.547000 0.824000 0.535000 0.547000 0.824000 0.839000 0.547000 0.564000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-147"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-147"
>
<gml:posList
srsDimension=
"3"
>
0.911000 0.839000 0.547000 0.910000 0.535000 0.547000 1.170000 0.534000 0.547000 1.171000 0.839000 0.547000 0.911000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-148"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-148"
>
<gml:posList
srsDimension=
"3"
>
1.171000 0.839000 0.547000 1.170000 0.534000 0.547000 1.170000 0.534000 0.520000 1.171000 0.839000 0.520000 1.171000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-149"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-149"
>
<gml:posList
srsDimension=
"3"
>
0.910000 0.535000 0.520000 0.911000 0.839000 0.520000 1.171000 0.839000 0.520000 1.170000 0.534000 0.520000 0.910000 0.535000 0.520000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-150"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-150"
>
<gml:posList
srsDimension=
"3"
>
1.170000 0.534000 0.547000 0.910000 0.535000 0.547000 0.910000 0.535000 0.520000 1.170000 0.534000 0.520000 1.170000 0.534000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-151"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-151"
>
<gml:posList
srsDimension=
"3"
>
0.911000 0.839000 0.547000 1.171000 0.839000 0.547000 1.171000 0.839000 0.520000 0.911000 0.839000 0.520000 0.911000 0.839000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-152"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-152"
>
<gml:posList
srsDimension=
"3"
>
0.910000 0.535000 0.547000 0.911000 0.839000 0.547000 0.911000 0.839000 0.520000 0.910000 0.535000 0.520000 0.910000 0.535000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-153"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-153"
>
<gml:posList
srsDimension=
"3"
>
1.242000 0.534000 0.504000 1.243000 0.859000 0.504000 1.243000 0.859000 0.547000 1.242000 0.534000 0.547000 1.242000 0.534000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-154"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-154"
>
<gml:posList
srsDimension=
"3"
>
0.889000 0.859000 0.547000 0.889000 0.859000 0.504000 0.839000 0.859000 0.504000 0.839000 0.859000 0.547000 0.889000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-155"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-155"
>
<gml:posList
srsDimension=
"3"
>
0.549000 0.859000 0.547000 0.549000 0.859000 0.504000 0.499000 0.859000 0.504000 0.499000 0.859000 0.547000 0.549000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-156"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-156"
>
<gml:posList
srsDimension=
"3"
>
1.243000 0.859000 0.504000 1.193000 0.859000 0.504000 1.193000 0.859000 0.547000 1.243000 0.859000 0.547000 1.243000 0.859000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-157"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-157"
>
<gml:posList
srsDimension=
"3"
>
0.199000 0.860000 0.504000 0.149000 0.860000 0.504000 0.149000 0.860000 0.547000 0.199000 0.860000 0.547000 0.199000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-158"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-158"
>
<gml:posList
srsDimension=
"3"
>
0.149000 0.860000 0.504000 0.199000 0.860000 0.504000 0.499000 0.859000 0.504000 0.549000 0.859000 0.504000 0.839000 0.859000 0.504000 0.889000 0.859000 0.504000 1.193000 0.859000 0.504000 1.243000 0.859000 0.504000 1.343000 0.859000 0.504000 1.343000 0.859000 0.300000 0.049000 0.860000 0.300000 0.049000 0.860000 0.504000 0.149000 0.860000 0.504000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-159"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-159"
>
<gml:posList
srsDimension=
"3"
>
0.549000 0.859000 0.547000 0.549000 0.859000 0.504000 0.839000 0.859000 0.504000 0.839000 0.859000 0.547000 0.549000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-160"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-160"
>
<gml:posList
srsDimension=
"3"
>
0.199000 0.860000 0.547000 0.199000 0.860000 0.504000 0.499000 0.859000 0.504000 0.499000 0.859000 0.547000 0.199000 0.860000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-161"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-161"
>
<gml:posList
srsDimension=
"3"
>
0.889000 0.859000 0.547000 0.889000 0.859000 0.504000 1.193000 0.859000 0.504000 1.193000 0.859000 0.547000 0.889000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-162"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-162"
>
<gml:posList
srsDimension=
"3"
>
1.243000 0.859000 0.547000 1.243000 0.859000 0.504000 1.343000 0.859000 0.504000 1.343000 0.859000 0.547000 1.243000 0.859000 0.547000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon
gml:id=
"PolyIDGeo-163"
>
<gml:exterior>
<gml:LinearRing
gml:id=
"ringID-163"
>
<gml:posList
srsDimension=
"3"
>
1.343000 0.859000 2.100000 1.343000 0.859000 0.547000 1.243000 0.859000 0.547000 1.193000 0.859000 0.547000 0.889000 0.859000 0.547000 0.839000 0.859000 0.547000 0.549000 0.859000 0.547000 0.499000 0.859000 0.547000 0.199000 0.860000 0.547000 0.149000 0.860000 0.547000 0.049000 0.860000 0.547000 0.049000 0.860000 2.100000 1.343000 0.859000 2.100000
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-163_1"
>
<gml:posList
srsDimension=
"3"
>
1.245000 0.859000 1.182000 0.154000 0.860000 1.182000 0.154000 0.860000 1.132000 1.245000 0.859000 1.132000 1.245000 0.859000 1.182000
</gml:posList>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing
gml:id=
"ringID-163_2"
>
<gml:posList
srsDimension=
"3"
>
0.154000 0.860000 1.282000 0.154000 0.860000 1.232000 1.245000 0.859000 1.232000 1.245000 0.859000 1.282000 0.154000 0.860000 1.282000
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</gen:lod2Geometry>
</gen:GenericCityObject>
</core:cityObjectMember>
</core:CityModel>
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive.zip
0 → 100644
View file @
2d57794b
File added
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive/mock1.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive/mock2.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive/mock3.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive/mock4.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/mock_archive/mock5.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/validate.zip
0 → 100644
View file @
2d57794b
File added
CityDoctorParent/CityDoctorModel/src/test/resources/zip/validate/valCorrect.gml
0 → 100644
View file @
2d57794b
<?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
CityDoctorParent/CityDoctorModel/src/test/resources/zip/validate/valFaulty.gml
0 → 100644
View file @
2d57794b
<?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>
CityDoctorParent/CityDoctorValidation/pom.xml
View file @
2d57794b
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
>
<project
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns=
"http://maven.apache.org/POM/4.0.0"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<parent>
<groupId>
de.hft.stuttgart
</groupId>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.1
6
.0
</version>
<version>
3.1
7
.0
</version>
</parent>
</parent>
<artifactId>
CityDoctorValidation
</artifactId>
<artifactId>
CityDoctorValidation
</artifactId>
<name>
CityDoctorValidation
</name>
<name>
CityDoctorValidation
</name>
...
@@ -65,11 +65,11 @@
...
@@ -65,11 +65,11 @@
<groupId>
net.sf.saxon
</groupId>
<groupId>
net.sf.saxon
</groupId>
<artifactId>
Saxon-HE
</artifactId>
<artifactId>
Saxon-HE
</artifactId>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
<artifactId>
snakeyaml
</artifactId>
</dependency>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
<resources>
<resources>
<resource>
<resource>
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/CityDoctorValidation.java
View file @
2d57794b
...
@@ -21,8 +21,10 @@ package de.hft.stuttgart.citydoctor2;
...
@@ -21,8 +21,10 @@ package de.hft.stuttgart.citydoctor2;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.nio.file.Path
;
import
java.util.List
;
import
java.util.List
;
import
de.hft.stuttgart.citydoctor2.zip.CityGmlZipArchive
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.ade.ADEException
;
import
org.citygml4j.core.ade.ADEException
;
...
@@ -72,7 +74,7 @@ public class CityDoctorValidation {
...
@@ -72,7 +74,7 @@ public class CityDoctorValidation {
String
outputFile
=
getOutputFile
(
argParser
,
true
);
String
outputFile
=
getOutputFile
(
argParser
,
true
);
ValidationConfiguration
config
=
getValidationConfig
(
argParser
);
ValidationConfiguration
config
=
getValidationConfig
(
argParser
);
startValidationProcess
(
new
File
(
inputFile
)
,
xmlOutput
,
pdfOutput
,
config
,
outputFile
);
startValidationProcess
(
inputFile
,
xmlOutput
,
pdfOutput
,
config
,
outputFile
);
}
}
private
static
String
getOutputFile
(
ArgumentParser
argParser
,
boolean
optional
)
{
private
static
String
getOutputFile
(
ArgumentParser
argParser
,
boolean
optional
)
{
...
@@ -144,13 +146,28 @@ public class CityDoctorValidation {
...
@@ -144,13 +146,28 @@ public class CityDoctorValidation {
pdfOutputPath
=
pdfOutput
.
getAbsolutePath
();
pdfOutputPath
=
pdfOutput
.
getAbsolutePath
();
}
}
try
{
try
{
startValidation
Process
(
inputFile
,
xmlOutputPath
,
pdfOutputPath
,
config
,
null
);
start
File
Validation
(
inputFile
,
xmlOutputPath
,
pdfOutputPath
,
config
,
null
);
}
catch
(
CityDoctorWriteException
e
)
{
}
catch
(
CityDoctorWriteException
e
)
{
// this does not happen as no output file is specified
// this does not happen as no output file is specified
logger
.
catching
(
e
);
logger
.
catching
(
e
);
}
}
}
}
public
static
void
startValidationProcess
(
String
input
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
String
outputFile
)
throws
CityDoctorWriteException
,
CityGmlParseException
,
IOException
,
InvalidGmlFileException
{
File
inputFile
=
new
File
(
input
);
if
(!
inputFile
.
exists
())
{
logger
.
error
(
"Input file '{}' does not exist."
,
input
);
System
.
exit
(
1
);
}
if
(
inputFile
.
getName
().
endsWith
(
".gml"
))
{
startFileValidation
(
inputFile
,
xmlOutput
,
pdfOutput
,
config
,
outputFile
);
}
else
if
(
inputFile
.
getName
().
endsWith
(
".zip"
))
{
startZipValidation
(
input
,
xmlOutput
,
pdfOutput
,
config
,
outputFile
);
}
}
/**
/**
* This function will handle the complete validation process
* This function will handle the complete validation process
*
*
...
@@ -164,7 +181,7 @@ public class CityDoctorValidation {
...
@@ -164,7 +181,7 @@ public class CityDoctorValidation {
* @throws CityGMLBuilderException
* @throws CityGMLBuilderException
* @throws ADEException
* @throws ADEException
*/
*/
public
static
void
startValidation
Process
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
public
static
void
start
File
Validation
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
,
ValidationConfiguration
config
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
,
InvalidGmlFileException
,
CityDoctorWriteException
{
InvalidGmlFileException
,
CityDoctorWriteException
{
...
@@ -181,6 +198,29 @@ public class CityDoctorValidation {
...
@@ -181,6 +198,29 @@ public class CityDoctorValidation {
}
}
}
}
public
static
void
startZipValidation
(
String
inputZipFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
String
outputFile
)
throws
CityGmlParseException
,
IOException
{
xmlOutput
=
toDirectoryPath
(
xmlOutput
);
pdfOutput
=
toDirectoryPath
(
pdfOutput
);
outputFile
=
toDirectoryPath
(
outputFile
);
if
(
xmlOutput
==
null
&&
pdfOutput
==
null
&&
outputFile
==
null
)
{
logger
.
warn
(
"No output locations specified, results of validation will not be saved"
);
}
CityGmlZipArchive
archive
=
CityGmlZipArchive
.
register
(
inputZipFile
);
Checker
.
streamCheck
(
archive
,
xmlOutput
,
pdfOutput
,
config
,
outputFile
);
}
public
static
String
toDirectoryPath
(
String
input
)
{
if
(
input
==
null
)
{
return
null
;
}
String
parentDirectory
=
Path
.
of
(
input
).
getParent
().
toString
()
+
File
.
separator
;
String
name
=
Path
.
of
(
input
).
getFileName
().
toString
().
replaceFirst
(
"\\..+"
,
""
)
+
File
.
separator
;
File
f
=
new
File
(
parentDirectory
+
name
);
f
.
mkdir
();
return
f
.
getPath
()
+
File
.
separator
;
}
public
static
String
getPdfOutput
(
ArgumentParser
argParser
)
{
public
static
String
getPdfOutput
(
ArgumentParser
argParser
)
{
if
(
argParser
.
containsOption
(
"pdfreport"
))
{
if
(
argParser
.
containsOption
(
"pdfreport"
))
{
List
<
String
>
reportFiles
=
argParser
.
getValues
(
"pdfreport"
);
List
<
String
>
reportFiles
=
argParser
.
getValues
(
"pdfreport"
);
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/CityDoctorValidationCLI.java
0 → 100644
View file @
2d57794b
package
de.hft.stuttgart.citydoctor2
;
import
picocli.CommandLine
;
import
picocli.CommandLine.Command
;
import
picocli.CommandLine.Option
;
import
picocli.CommandLine.Parameters
;
import
java.util.concurrent.Callable
;
@Command
(
name
=
"citydoctor2"
,
mixinStandardHelpOptions
=
true
,
description
=
"Validates CityGML files according to a provided validation-plan."
)
public
class
CityDoctorValidationCLI
implements
Callable
<
Integer
>
{
@Option
(
names
=
{
"-i"
,
"--in"
,
"--input"
},
description
=
"Filepath of the CityGML file."
,
required
=
true
)
private
String
input
;
@Option
(
names
=
{
"-c"
,
"--config"
,
"--configuration"
,
"--plan"
},
description
=
"Filepath of the validation configuration .yml"
,
required
=
true
)
private
String
config
;
@Option
(
names
=
{
"-x"
,
"--xml"
,
"--xmlReport"
},
description
=
"Create a XML validation report at target location"
)
private
String
xmlReport
;
@Option
(
names
=
{
"-p"
,
"--pdf"
,
"--pdfReport"
},
description
=
"Create a PDF validation report at target location"
)
private
String
pdfReport
;
@Option
(
names
=
{
"-o"
,
"--out"
,
"--output"
},
description
=
"Create a validated copy of the CityGML input with QualityADE at target location."
)
private
String
output
;
@Override
public
Integer
call
()
throws
Exception
{
return
0
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java
View file @
2d57794b
/*-
/*-
* Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart
* Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart
*
*
* This file is part of CityDoctor2.
* This file is part of CityDoctor2.
*
*
* CityDoctor2 is free software: you can redistribute it and/or modify
* CityDoctor2 is free software: you can redistribute it and/or modify
...
@@ -18,39 +18,6 @@
...
@@ -18,39 +18,6 @@
*/
*/
package
de.hft.stuttgart.citydoctor2.check
;
package
de.hft.stuttgart.citydoctor2.check
;
import
java.io.BufferedOutputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.UncheckedIOException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.stream.Stream
;
import
javax.xml.XMLConstants
;
import
javax.xml.transform.Result
;
import
javax.xml.transform.Source
;
import
javax.xml.transform.Transformer
;
import
javax.xml.transform.TransformerException
;
import
javax.xml.transform.TransformerFactory
;
import
javax.xml.transform.dom.DOMResult
;
import
javax.xml.transform.dom.DOMSource
;
import
javax.xml.transform.sax.SAXResult
;
import
javax.xml.transform.stream.StreamSource
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeInvalidError
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeInvalidError
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeMissingError
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeMissingError
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeValueWrongError
;
import
de.hft.stuttgart.citydoctor2.check.error.AttributeValueWrongError
;
...
@@ -75,7 +42,11 @@ import de.hft.stuttgart.citydoctor2.reporting.XmlStreamReporter;
...
@@ -75,7 +42,11 @@ import de.hft.stuttgart.citydoctor2.reporting.XmlStreamReporter;
import
de.hft.stuttgart.citydoctor2.reporting.XmlValidationReporter
;
import
de.hft.stuttgart.citydoctor2.reporting.XmlValidationReporter
;
import
de.hft.stuttgart.citydoctor2.reporting.pdf.PdfReporter
;
import
de.hft.stuttgart.citydoctor2.reporting.pdf.PdfReporter
;
import
de.hft.stuttgart.citydoctor2.reporting.pdf.PdfStreamReporter
;
import
de.hft.stuttgart.citydoctor2.reporting.pdf.PdfStreamReporter
;
import
de.hft.stuttgart.citydoctor2.utils.ArchivePacker
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
de.hft.stuttgart.citydoctor2.zip.CityGmlZipArchive
;
import
de.hft.stuttgart.citydoctor2.zip.CityGmlZipEntry
;
import
de.hft.stuttgart.citydoctor2.zip.CityGmlZipEntryFile
;
import
de.hft.stuttgart.quality.model.enums.RequirementId
;
import
de.hft.stuttgart.quality.model.enums.RequirementId
;
import
de.hft.stuttgart.quality.model.enums.TopLevelFeatureType
;
import
de.hft.stuttgart.quality.model.enums.TopLevelFeatureType
;
import
de.hft.stuttgart.quality.model.properties.CheckingProperty
;
import
de.hft.stuttgart.quality.model.properties.CheckingProperty
;
...
@@ -86,309 +57,341 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty;
...
@@ -86,309 +57,341 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty;
import
de.hft.stuttgart.quality.model.types.Checking
;
import
de.hft.stuttgart.quality.model.types.Checking
;
import
de.hft.stuttgart.quality.model.types.Parameter
;
import
de.hft.stuttgart.quality.model.types.Parameter
;
import
de.hft.stuttgart.quality.model.types.ValidationPlan
;
import
de.hft.stuttgart.quality.model.types.ValidationPlan
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
javax.xml.XMLConstants
;
import
javax.xml.transform.Result
;
import
javax.xml.transform.Source
;
import
javax.xml.transform.Transformer
;
import
javax.xml.transform.TransformerException
;
import
javax.xml.transform.TransformerFactory
;
import
javax.xml.transform.dom.DOMResult
;
import
javax.xml.transform.dom.DOMSource
;
import
javax.xml.transform.sax.SAXResult
;
import
javax.xml.transform.stream.StreamSource
;
import
java.io.BufferedOutputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.UncheckedIOException
;
import
java.nio.file.Path
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.stream.Stream
;
/**
/**
* The main container class for checking. It contains the logic for validation,
* The main container class for checking. It contains the logic for validation,
* as well as contains the state of the checks performed.
* as well as contains the state of the checks performed.
*
* @author Matthias Betz
*
*
* @author Matthias Betz
*/
*/
public
class
Checker
{
public
class
Checker
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
Checker
.
class
);
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
Checker
.
class
);
private
ValidationConfiguration
config
;
private
ValidationConfiguration
config
;
private
List
<
List
<
Check
>>
execLayers
;
private
List
<
List
<
Check
>>
execLayers
;
private
List
<
Filter
>
includeFilters
;
private
List
<
Filter
>
includeFilters
;
private
List
<
Filter
>
excludeFilters
;
private
List
<
Filter
>
excludeFilters
;
private
final
Checks
checkConfig
;
private
final
Checks
checkConfig
;
private
final
CityDoctorModel
model
;
private
final
CityDoctorModel
model
;
public
Checker
(
CityDoctorModel
model
)
{
public
Checker
(
CityDoctorModel
model
)
{
this
(
ValidationConfiguration
.
loadStandardValidationConfig
(),
model
);
this
(
ValidationConfiguration
.
loadStandardValidationConfig
(),
model
);
}
}
public
Checker
(
ValidationConfiguration
config
,
CityDoctorModel
model
)
{
public
Checker
(
ValidationConfiguration
config
,
CityDoctorModel
model
)
{
this
.
model
=
model
;
this
.
model
=
model
;
checkConfig
=
new
Checks
();
checkConfig
=
new
Checks
();
setValidationConfig
(
config
);
setValidationConfig
(
config
);
}
}
public
Checks
getChecks
()
{
public
Checks
getChecks
()
{
return
checkConfig
;
return
checkConfig
;
}
}
public
CityDoctorModel
getModel
()
{
public
CityDoctorModel
getModel
()
{
return
model
;
return
model
;
}
}
/**
/**
* Write the xml report for the given CityDoctorModel. If no report location is
* Write the xml report for the given CityDoctorModel. If no report location is
* given or this checker has not validated anything, nothing is done.
* given or this checker has not validated anything, nothing is done.
*
*
* @param xmlOutput the output file location for the XML report. Can be null.
* @param xmlOutput the output file location for the XML report. Can be null.
*/
*/
public
void
writeXmlReport
(
String
xmlOutput
)
{
public
void
writeXmlReport
(
String
xmlOutput
)
{
if
(!
model
.
isValidated
()
||
xmlOutput
==
null
)
{
if
(!
model
.
isValidated
()
||
xmlOutput
==
null
)
{
return
;
return
;
}
}
File
xmlFile
=
new
File
(
xmlOutput
);
File
xmlFile
=
new
File
(
xmlOutput
);
if
(
xmlFile
.
getParentFile
()
!=
null
)
{
if
(
xmlFile
.
getParentFile
()
!=
null
)
{
xmlFile
.
getParentFile
().
mkdirs
();
xmlFile
.
getParentFile
().
mkdirs
();
}
}
Reporter
reporter
=
new
XmlValidationReporter
();
Reporter
reporter
=
new
XmlValidationReporter
();
try
(
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
xmlFile
.
getAbsolutePath
())))
{
try
(
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
xmlFile
.
getAbsolutePath
())))
{
reporter
.
writeReport
(
checkConfig
,
bos
,
model
,
config
);
reporter
.
writeReport
(
checkConfig
,
bos
,
model
,
config
);
}
catch
(
CheckReportWriteException
|
IOException
e
)
{
}
catch
(
CheckReportWriteException
|
IOException
e
)
{
logger
.
error
(
Localization
.
getText
(
"Checker.failXml"
),
e
);
logger
.
error
(
Localization
.
getText
(
"Checker.failXml"
),
e
);
}
}
}
}
public
void
writePdfReport
(
String
pdfOutput
)
{
public
void
writePdfReport
(
String
pdfOutput
)
{
if
(!
model
.
isValidated
()
||
pdfOutput
==
null
)
{
if
(!
model
.
isValidated
()
||
pdfOutput
==
null
)
{
return
;
return
;
}
}
File
pdfFile
=
new
File
(
pdfOutput
);
File
pdfFile
=
new
File
(
pdfOutput
);
if
(
pdfFile
.
getParentFile
()
!=
null
)
{
if
(
pdfFile
.
getParentFile
()
!=
null
)
{
pdfFile
.
getParentFile
().
mkdirs
();
pdfFile
.
getParentFile
().
mkdirs
();
}
}
Reporter
reporter
=
new
PdfReporter
();
Reporter
reporter
=
new
PdfReporter
();
try
(
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
pdfFile
.
getAbsolutePath
())))
{
try
(
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
pdfFile
.
getAbsolutePath
())))
{
reporter
.
writeReport
(
checkConfig
,
bos
,
model
,
config
);
reporter
.
writeReport
(
checkConfig
,
bos
,
model
,
config
);
}
catch
(
IOException
|
CheckReportWriteException
e
)
{
}
catch
(
IOException
|
CheckReportWriteException
e
)
{
logger
.
error
(
Localization
.
getText
(
"Checker.failPdf"
),
e
);
logger
.
error
(
Localization
.
getText
(
"Checker.failPdf"
),
e
);
}
}
}
}
public
void
runChecks
()
{
public
void
runChecks
()
{
runChecks
((
ProgressListener
)
null
);
runChecks
((
ProgressListener
)
null
);
}
}
public
void
runChecks
(
String
xmlOutput
)
{
public
void
runChecks
(
String
xmlOutput
)
{
runChecks
();
runChecks
();
writeXmlReport
(
xmlOutput
);
writeXmlReport
(
xmlOutput
);
}
}
public
void
runChecks
(
String
xmlOutput
,
String
pdfOutput
)
{
public
void
runChecks
(
String
xmlOutput
,
String
pdfOutput
)
{
runChecks
();
runChecks
();
writeXmlReport
(
xmlOutput
);
writeXmlReport
(
xmlOutput
);
writePdfReport
(
pdfOutput
);
writePdfReport
(
pdfOutput
);
}
}
public
void
runChecks
(
String
xmlOutput
,
String
pdfOutput
,
ProgressListener
l
)
{
public
void
runChecks
(
String
xmlOutput
,
String
pdfOutput
,
ProgressListener
l
)
{
runChecks
(
l
);
runChecks
(
l
);
writeXmlReport
(
xmlOutput
);
writeXmlReport
(
xmlOutput
);
writePdfReport
(
pdfOutput
);
writePdfReport
(
pdfOutput
);
}
}
public
void
runChecks
(
ProgressListener
l
)
{
public
void
runChecks
(
ProgressListener
l
)
{
if
(
config
==
null
)
{
if
(
config
==
null
)
{
config
=
ValidationConfiguration
.
loadStandardValidationConfig
();
config
=
ValidationConfiguration
.
loadStandardValidationConfig
();
}
}
checkCityModel
(
model
,
l
);
checkCityModel
(
model
,
l
);
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
Localization
.
getText
(
"Checker.checksFinished"
));
logger
.
info
(
Localization
.
getText
(
"Checker.checksFinished"
));
}
}
SvrlContentHandler
handler
=
executeSchematronValidationIfAvailable
(
config
,
model
.
getFile
());
SvrlContentHandler
handler
=
executeSchematronValidationIfAvailable
(
config
,
model
.
getFile
());
if
(
handler
!=
null
)
{
if
(
handler
!=
null
)
{
handleSchematronResults
(
handler
);
handleSchematronResults
(
handler
);
}
}
model
.
setValidated
(
createValidationPlan
());
model
.
setValidated
(
createValidationPlan
());
}
}
private
void
handleSchematronResults
(
SvrlContentHandler
handler
)
{
private
void
handleSchematronResults
(
SvrlContentHandler
handler
)
{
model
.
addGlobalErrors
(
handler
.
getGeneralErrors
());
model
.
addGlobalErrors
(
handler
.
getGeneralErrors
());
Map
<
String
,
CityObject
>
featureMap
=
new
HashMap
<>();
Map
<
String
,
CityObject
>
featureMap
=
new
HashMap
<>();
model
.
createFeatureStream
().
forEach
(
f
->
featureMap
.
put
(
f
.
getGmlId
().
getGmlString
(),
f
));
model
.
createFeatureStream
().
forEach
(
f
->
featureMap
.
put
(
f
.
getGmlId
().
getGmlString
(),
f
));
handler
.
getFeatureErrors
().
forEach
((
k
,
v
)
->
{
handler
.
getFeatureErrors
().
forEach
((
k
,
v
)
->
{
if
(
k
.
trim
().
isEmpty
())
{
if
(
k
.
trim
().
isEmpty
())
{
// missing gml id, ignore?
// missing gml id, ignore?
return
;
return
;
}
}
CityObject
co
=
featureMap
.
get
(
k
);
CityObject
co
=
featureMap
.
get
(
k
);
if
(
co
==
null
)
{
if
(
co
==
null
)
{
// gml id reported by schematron was not found, add to general errors
// gml id reported by schematron was not found, add to general errors
for
(
SchematronError
se
:
v
)
{
for
(
SchematronError
se
:
v
)
{
model
.
addGlobalError
(
se
);
model
.
addGlobalError
(
se
);
}
}
}
else
{
}
else
{
handleSchematronErrorsForCityObject
(
v
,
co
);
handleSchematronErrorsForCityObject
(
v
,
co
);
}
}
});
});
}
}
public
static
void
handleSchematronErrorsForCityObject
(
List
<
SchematronError
>
v
,
CityObject
co
)
{
public
static
void
handleSchematronErrorsForCityObject
(
List
<
SchematronError
>
v
,
CityObject
co
)
{
int
count
=
0
;
int
count
=
0
;
for
(
SchematronError
se
:
v
)
{
for
(
SchematronError
se
:
v
)
{
CheckError
err
;
CheckError
err
;
if
(
AttributeMissingError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
if
(
AttributeMissingError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
err
=
new
AttributeMissingError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
err
=
new
AttributeMissingError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
}
else
if
(
AttributeValueWrongError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
}
else
if
(
AttributeValueWrongError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
err
=
new
AttributeValueWrongError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
err
=
new
AttributeValueWrongError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
}
else
if
(
AttributeInvalidError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
}
else
if
(
AttributeInvalidError
.
ID
.
getIdString
().
equals
(
se
.
getErrorIdString
()))
{
err
=
new
AttributeInvalidError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
err
=
new
AttributeInvalidError
(
co
,
se
.
getChildId
(),
se
.
getNameOfAttribute
());
}
else
{
}
else
{
throw
new
IllegalStateException
(
throw
new
IllegalStateException
(
"Unknown error ID was given in schematron file: "
+
se
.
getErrorIdString
());
"Unknown error ID was given in schematron file: "
+
se
.
getErrorIdString
());
}
}
co
.
addCheckResult
(
new
CheckResult
(
new
CheckId
(
"SchematronCheck "
+
count
),
ResultStatus
.
ERROR
,
err
));
co
.
addCheckResult
(
new
CheckResult
(
new
CheckId
(
"SchematronCheck "
+
count
),
ResultStatus
.
ERROR
,
err
));
count
++;
count
++;
}
}
}
}
ValidationPlan
createValidationPlan
()
{
ValidationPlan
createValidationPlan
()
{
ValidationPlan
plan
=
new
ValidationPlan
();
ValidationPlan
plan
=
new
ValidationPlan
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
=
createFilter
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
=
createFilter
();
plan
.
setFilter
(
new
FilterProperty
(
filter
));
plan
.
setFilter
(
new
FilterProperty
(
filter
));
Map
<
String
,
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
>
reqs
=
Checks
.
getAvailableRequirements
();
Map
<
String
,
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
>
reqs
=
Checks
.
getAvailableRequirements
();
for
(
Entry
<
String
,
RequirementConfiguration
>
e
:
config
.
getRequirements
().
entrySet
())
{
for
(
Entry
<
String
,
RequirementConfiguration
>
e
:
config
.
getRequirements
().
entrySet
())
{
RequirementId
reqId
=
mapToRequirement
(
e
.
getKey
());
RequirementId
reqId
=
mapToRequirement
(
e
.
getKey
());
if
(
reqId
==
null
)
{
if
(
reqId
==
null
)
{
continue
;
continue
;
}
}
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
req
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
req
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
req
.
setRequirementType
(
reqId
);
req
.
setRequirementType
(
reqId
);
req
.
setEnabled
(
e
.
getValue
().
isEnabled
());
req
.
setEnabled
(
e
.
getValue
().
isEnabled
());
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
req
));
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
req
));
Map
<
String
,
String
>
parameters
=
e
.
getValue
().
getParameters
();
Map
<
String
,
String
>
parameters
=
e
.
getValue
().
getParameters
();
if
(
parameters
!=
null
)
{
if
(
parameters
!=
null
)
{
for
(
Entry
<
String
,
String
>
param
:
parameters
.
entrySet
())
{
for
(
Entry
<
String
,
String
>
param
:
parameters
.
entrySet
())
{
Parameter
p
=
new
Parameter
();
Parameter
p
=
new
Parameter
();
DefaultParameter
defaultP
=
getDefaultParameter
(
e
.
getKey
(),
reqs
,
param
.
getKey
());
DefaultParameter
defaultP
=
getDefaultParameter
(
e
.
getKey
(),
reqs
,
param
.
getKey
());
if
(
defaultP
!=
null
)
{
if
(
defaultP
!=
null
)
{
p
.
setUom
(
defaultP
.
getUnitType
().
getGmlRepresentation
());
p
.
setUom
(
defaultP
.
getUnitType
().
getGmlRepresentation
());
}
}
p
.
setName
(
param
.
getKey
());
p
.
setName
(
param
.
getKey
());
p
.
setValue
(
param
.
getValue
());
p
.
setValue
(
param
.
getValue
());
req
.
getParameters
().
add
(
new
ParameterProperty
(
p
));
req
.
getParameters
().
add
(
new
ParameterProperty
(
p
));
}
}
}
}
}
}
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
missing
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
missing
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
missing
.
setRequirementType
(
RequirementId
.
R_SE_ATTRIBUTES_EXISTING
);
missing
.
setRequirementType
(
RequirementId
.
R_SE_ATTRIBUTES_EXISTING
);
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
correct
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
correct
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Requirement
();
correct
.
setRequirementType
(
RequirementId
.
R_SE_ATTRIBUTES_CORRECT
);
correct
.
setRequirementType
(
RequirementId
.
R_SE_ATTRIBUTES_CORRECT
);
missing
.
setEnabled
(
config
.
getSchematronFilePath
()
!=
null
);
missing
.
setEnabled
(
config
.
getSchematronFilePath
()
!=
null
);
correct
.
setEnabled
(
config
.
getSchematronFilePath
()
!=
null
);
correct
.
setEnabled
(
config
.
getSchematronFilePath
()
!=
null
);
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
missing
));
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
missing
));
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
correct
));
plan
.
getRequirements
().
add
(
new
RequirementProperty
(
correct
));
Parameter
numRounding
=
new
Parameter
();
Parameter
numRounding
=
new
Parameter
();
numRounding
.
setName
(
"numberOfRoundingPlaces"
);
numRounding
.
setName
(
"numberOfRoundingPlaces"
);
numRounding
.
setValue
(
""
+
config
.
getNumberOfRoundingPlaces
());
numRounding
.
setValue
(
""
+
config
.
getNumberOfRoundingPlaces
());
Parameter
minVertexDistance
=
new
Parameter
();
Parameter
minVertexDistance
=
new
Parameter
();
minVertexDistance
.
setName
(
"minVertexDistance"
);
minVertexDistance
.
setName
(
"minVertexDistance"
);
minVertexDistance
.
setUom
(
"m"
);
minVertexDistance
.
setUom
(
"m"
);
minVertexDistance
.
setValue
(
""
+
config
.
getMinVertexDistance
());
minVertexDistance
.
setValue
(
""
+
config
.
getMinVertexDistance
());
Parameter
schematronFile
=
new
Parameter
();
Parameter
schematronFile
=
new
Parameter
();
schematronFile
.
setName
(
"schematronFile"
);
schematronFile
.
setName
(
"schematronFile"
);
schematronFile
.
setValue
(
config
.
getSchematronFilePath
());
schematronFile
.
setValue
(
config
.
getSchematronFilePath
());
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
GlobalParameters
globParams
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
GlobalParameters
();
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
GlobalParameters
globParams
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
GlobalParameters
();
plan
.
setGlobalParameters
(
new
GlobalParametersProperty
(
globParams
));
plan
.
setGlobalParameters
(
new
GlobalParametersProperty
(
globParams
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
numRounding
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
numRounding
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
minVertexDistance
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
minVertexDistance
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
schematronFile
));
globParams
.
getParameters
().
add
(
new
ParameterProperty
(
schematronFile
));
return
plan
;
return
plan
;
}
}
private
DefaultParameter
getDefaultParameter
(
String
reqKey
,
private
DefaultParameter
getDefaultParameter
(
String
reqKey
,
Map
<
String
,
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
>
reqs
,
String
paramName
)
{
Map
<
String
,
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
>
reqs
,
String
paramName
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
requirement
=
reqs
.
get
(
reqKey
);
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
requirement
=
reqs
.
get
(
reqKey
);
if
(
requirement
!=
null
)
{
if
(
requirement
!=
null
)
{
for
(
DefaultParameter
param
:
requirement
.
getDefaultParameter
())
{
for
(
DefaultParameter
param
:
requirement
.
getDefaultParameter
())
{
if
(
param
.
getName
().
equals
(
paramName
))
{
if
(
param
.
getName
().
equals
(
paramName
))
{
return
param
;
return
param
;
}
}
}
}
}
}
return
null
;
return
null
;
}
}
private
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
createFilter
()
{
private
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
createFilter
()
{
var
filter
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
();
var
filter
=
new
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
();
handleInputFilter
(
filter
);
handleInputFilter
(
filter
);
if
(
excludeFilters
!=
null
)
{
if
(
excludeFilters
!=
null
)
{
for
(
Filter
f
:
excludeFilters
)
{
for
(
Filter
f
:
excludeFilters
)
{
if
(
f
instanceof
TypeFilter
tf
)
{
if
(
f
instanceof
TypeFilter
tf
)
{
FeatureType
type
=
tf
.
getType
();
FeatureType
type
=
tf
.
getType
();
TopLevelFeatureType
tlft
=
mapToTopLevelFeatureType
(
type
);
TopLevelFeatureType
tlft
=
mapToTopLevelFeatureType
(
type
);
if
(
tlft
==
null
)
{
if
(
tlft
==
null
)
{
continue
;
continue
;
}
}
removeFilter
(
tlft
,
filter
);
removeFilter
(
tlft
,
filter
);
}
}
}
}
}
}
return
filter
;
return
filter
;
}
}
private
void
handleInputFilter
(
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
private
void
handleInputFilter
(
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
if
(
includeFilters
==
null
||
includeFilters
.
isEmpty
())
{
if
(
includeFilters
==
null
||
includeFilters
.
isEmpty
())
{
// no filter means, use all
// no filter means, use all
addAllFilters
(
filter
);
addAllFilters
(
filter
);
}
else
{
}
else
{
for
(
Filter
f
:
includeFilters
)
{
for
(
Filter
f
:
includeFilters
)
{
if
(
f
instanceof
TypeFilter
tf
)
{
if
(
f
instanceof
TypeFilter
tf
)
{
FeatureType
type
=
tf
.
getType
();
FeatureType
type
=
tf
.
getType
();
TopLevelFeatureType
tlft
=
mapToTopLevelFeatureType
(
type
);
TopLevelFeatureType
tlft
=
mapToTopLevelFeatureType
(
type
);
if
(
tlft
==
null
)
{
if
(
tlft
==
null
)
{
continue
;
continue
;
}
}
Checking
c
=
new
Checking
();
Checking
c
=
new
Checking
();
c
.
setFeatureType
(
tlft
);
c
.
setFeatureType
(
tlft
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
c
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
c
));
}
}
}
}
if
(
filter
.
getChecking
().
isEmpty
())
{
if
(
filter
.
getChecking
().
isEmpty
())
{
// this happens if no type include filter was used
// this happens if no type include filter was used
// it is possible only single objects were tested then
// it is possible only single objects were tested then
// so include everything
// so include everything
addAllFilters
(
filter
);
addAllFilters
(
filter
);
}
}
}
}
}
}
private
void
addAllFilters
(
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
private
void
addAllFilters
(
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
Checking
buildingChecking
=
new
Checking
();
Checking
buildingChecking
=
new
Checking
();
buildingChecking
.
setFeatureType
(
TopLevelFeatureType
.
BUILDING
);
buildingChecking
.
setFeatureType
(
TopLevelFeatureType
.
BUILDING
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
buildingChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
buildingChecking
));
Checking
bridgeChecking
=
new
Checking
();
Checking
bridgeChecking
=
new
Checking
();
bridgeChecking
.
setFeatureType
(
TopLevelFeatureType
.
BRIDGE
);
bridgeChecking
.
setFeatureType
(
TopLevelFeatureType
.
BRIDGE
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
bridgeChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
bridgeChecking
));
Checking
landChecking
=
new
Checking
();
Checking
landChecking
=
new
Checking
();
landChecking
.
setFeatureType
(
TopLevelFeatureType
.
LAND
);
landChecking
.
setFeatureType
(
TopLevelFeatureType
.
LAND
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
landChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
landChecking
));
Checking
transportationChecking
=
new
Checking
();
Checking
transportationChecking
=
new
Checking
();
transportationChecking
.
setFeatureType
(
TopLevelFeatureType
.
TRANSPORTATION
);
transportationChecking
.
setFeatureType
(
TopLevelFeatureType
.
TRANSPORTATION
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
transportationChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
transportationChecking
));
Checking
vegetationChecking
=
new
Checking
();
Checking
vegetationChecking
=
new
Checking
();
vegetationChecking
.
setFeatureType
(
TopLevelFeatureType
.
VEGETATION
);
vegetationChecking
.
setFeatureType
(
TopLevelFeatureType
.
VEGETATION
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
vegetationChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
vegetationChecking
));
Checking
waterChecking
=
new
Checking
();
Checking
waterChecking
=
new
Checking
();
waterChecking
.
setFeatureType
(
TopLevelFeatureType
.
WATER
);
waterChecking
.
setFeatureType
(
TopLevelFeatureType
.
WATER
);
filter
.
getChecking
().
add
(
new
CheckingProperty
(
waterChecking
));
filter
.
getChecking
().
add
(
new
CheckingProperty
(
waterChecking
));
}
}
private
void
removeFilter
(
TopLevelFeatureType
tlft
,
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
private
void
removeFilter
(
TopLevelFeatureType
tlft
,
de
.
hft
.
stuttgart
.
quality
.
model
.
types
.
Filter
filter
)
{
for
(
CheckingProperty
c
:
filter
.
getChecking
())
{
for
(
CheckingProperty
c
:
filter
.
getChecking
())
{
if
(
c
.
getObject
().
getFeatureType
().
equals
(
tlft
))
{
if
(
c
.
getObject
().
getFeatureType
().
equals
(
tlft
))
{
filter
.
getChecking
().
remove
(
c
);
filter
.
getChecking
().
remove
(
c
);
return
;
return
;
}
}
}
}
}
}
private
TopLevelFeatureType
mapToTopLevelFeatureType
(
FeatureType
type
)
{
private
TopLevelFeatureType
mapToTopLevelFeatureType
(
FeatureType
type
)
{
return
switch
(
type
)
{
return
switch
(
type
)
{
case
BRIDGE
->
TopLevelFeatureType
.
BRIDGE
;
case
BRIDGE
->
TopLevelFeatureType
.
BRIDGE
;
case
BUILDING
->
TopLevelFeatureType
.
BUILDING
;
case
BUILDING
->
TopLevelFeatureType
.
BUILDING
;
...
@@ -398,298 +401,299 @@ public class Checker {
...
@@ -398,298 +401,299 @@ public class Checker {
case
WATER
->
TopLevelFeatureType
.
WATER
;
case
WATER
->
TopLevelFeatureType
.
WATER
;
default
->
null
;
default
->
null
;
};
};
}
}
private
RequirementId
mapToRequirement
(
String
requirementName
)
{
private
RequirementId
mapToRequirement
(
String
requirementName
)
{
try
{
try
{
return
RequirementId
.
valueOf
(
requirementName
);
return
RequirementId
.
valueOf
(
requirementName
);
}
catch
(
IllegalArgumentException
e
)
{
}
catch
(
IllegalArgumentException
e
)
{
return
null
;
return
null
;
}
}
}
}
public
ValidationConfiguration
getConfig
()
{
public
ValidationConfiguration
getConfig
()
{
return
config
;
return
config
;
}
}
public
static
SvrlContentHandler
executeSchematronValidationIfAvailable
(
ValidationConfiguration
config
,
File
file
)
{
public
static
SvrlContentHandler
executeSchematronValidationIfAvailable
(
ValidationConfiguration
config
,
File
file
)
{
if
(
file
==
null
||
!
file
.
exists
())
{
if
(
file
==
null
||
!
file
.
exists
())
{
return
null
;
return
null
;
}
}
try
{
try
{
return
executeSchematronValidationIfAvailable
(
config
,
new
FileInputStream
(
file
));
return
executeSchematronValidationIfAvailable
(
config
,
new
FileInputStream
(
file
));
}
catch
(
FileNotFoundException
e
)
{
}
catch
(
FileNotFoundException
e
)
{
throw
new
UncheckedIOException
(
e
);
throw
new
UncheckedIOException
(
e
);
}
}
}
}
public
static
SvrlContentHandler
executeSchematronValidationIfAvailable
(
ValidationConfiguration
config
,
@SuppressWarnings
(
"resource"
)
InputStream
in
)
{
public
static
SvrlContentHandler
executeSchematronValidationIfAvailable
(
ValidationConfiguration
config
,
if
(
config
.
getSchematronFilePath
()
!=
null
&&
!
config
.
getSchematronFilePath
().
isEmpty
())
{
InputStream
in
)
{
if
(
logger
.
isInfoEnabled
())
{
if
(
config
.
getSchematronFilePath
()
!=
null
&&
!
config
.
getSchematronFilePath
().
isEmpty
())
{
logger
.
info
(
Localization
.
getText
(
"Checker.schematronValidation"
));
if
(
logger
.
isInfoEnabled
())
{
}
logger
.
info
(
Localization
.
getText
(
"Checker.schematronValidation"
));
}
try
{
TransformerFactory
transformerFactory
=
TransformerFactory
.
newInstance
(
"net.sf.saxon.TransformerFactoryImpl"
,
Checker
.
class
.
getClassLoader
());
try
{
transformerFactory
.
setAttribute
(
XMLConstants
.
ACCESS_EXTERNAL_DTD
,
""
);
TransformerFactory
transformerFactory
=
TransformerFactory
.
newInstance
(
"net.sf.saxon.TransformerFactoryImpl"
,
Checker
.
class
.
getClassLoader
());
transformerFactory
.
setFeature
(
XMLConstants
.
FEATURE_SECURE_PROCESSING
,
true
);
transformerFactory
.
setAttribute
(
XMLConstants
.
ACCESS_EXTERNAL_DTD
,
""
);
transformerFactory
.
setFeature
(
XMLConstants
.
FEATURE_SECURE_PROCESSING
,
true
);
transformerFactory
.
setURIResolver
((
href
,
base
)
->
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
href
)));
transformerFactory
.
setURIResolver
((
href
,
base
)
->
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
href
)));
Source
dsdlXslSource
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_dsdl_include.xsl"
));
Transformer
dsdlXslTransformer
=
transformerFactory
.
newTransformer
(
dsdlXslSource
);
Source
dsdlXslSource
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_dsdl_include.xsl"
));
Transformer
dsdlXslTransformer
=
transformerFactory
.
newTransformer
(
dsdlXslSource
);
DOMResult
dsdlXslResult
=
new
DOMResult
();
dsdlXslTransformer
.
transform
(
new
StreamSource
(
new
File
(
config
.
getSchematronFilePath
())),
dsdlXslResult
);
DOMResult
dsdlXslResult
=
new
DOMResult
();
dsdlXslTransformer
.
transform
(
new
StreamSource
(
new
File
(
config
.
getSchematronFilePath
())),
dsdlXslResult
);
Source
abstractExpandXsl
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_abstract_expand.xsl"
));
Transformer
abstractExpandTransformer
=
transformerFactory
.
newTransformer
(
abstractExpandXsl
);
Source
abstractExpandXsl
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_abstract_expand.xsl"
));
Transformer
abstractExpandTransformer
=
transformerFactory
.
newTransformer
(
abstractExpandXsl
);
DOMResult
abstractExpandResult
=
new
DOMResult
();
abstractExpandTransformer
.
transform
(
new
DOMSource
(
dsdlXslResult
.
getNode
()),
abstractExpandResult
);
DOMResult
abstractExpandResult
=
new
DOMResult
();
abstractExpandTransformer
.
transform
(
new
DOMSource
(
dsdlXslResult
.
getNode
()),
abstractExpandResult
);
Source
svrlXslSource
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_svrl_for_xslt2.xsl"
));
Transformer
svrlTransformer
=
transformerFactory
.
newTransformer
(
svrlXslSource
);
Source
svrlXslSource
=
new
StreamSource
(
Checker
.
class
.
getResourceAsStream
(
"iso_svrl_for_xslt2.xsl"
));
Transformer
svrlTransformer
=
transformerFactory
.
newTransformer
(
svrlXslSource
);
DOMResult
schematronXsltResult
=
new
DOMResult
();
svrlTransformer
.
transform
(
new
DOMSource
(
abstractExpandResult
.
getNode
()),
schematronXsltResult
);
DOMResult
schematronXsltResult
=
new
DOMResult
();
svrlTransformer
.
transform
(
new
DOMSource
(
abstractExpandResult
.
getNode
()),
schematronXsltResult
);
Transformer
schematronTransformer
=
transformerFactory
.
newTransformer
(
new
DOMSource
(
schematronXsltResult
.
getNode
()));
Source
cityGmlSource
=
new
StreamSource
(
in
);
Transformer
schematronTransformer
=
transformerFactory
.
newTransformer
(
new
DOMSource
(
schematronXsltResult
.
getNode
()));
Source
cityGmlSource
=
new
StreamSource
(
in
);
SvrlContentHandler
handler
=
new
SvrlContentHandler
();
Result
finalResult
=
new
SAXResult
(
handler
);
SvrlContentHandler
handler
=
new
SvrlContentHandler
();
Result
finalResult
=
new
SAXResult
(
handler
);
schematronTransformer
.
transform
(
cityGmlSource
,
finalResult
);
return
handler
;
schematronTransformer
.
transform
(
cityGmlSource
,
finalResult
);
}
catch
(
TransformerException
e
)
{
return
handler
;
logger
.
catching
(
e
);
}
catch
(
TransformerException
e
)
{
}
logger
.
catching
(
e
);
}
}
return
null
;
}
}
return
null
;
}
private
void
buildFilters
()
{
FilterConfiguration
filterConfig
=
config
.
getFilter
();
private
void
buildFilters
()
{
if
(
filterConfig
==
null
)
{
FilterConfiguration
filterConfig
=
config
.
getFilter
();
includeFilters
=
Collections
.
emptyList
();
if
(
filterConfig
==
null
)
{
excludeFilters
=
Collections
.
emptyList
();
includeFilters
=
Collections
.
emptyList
();
return
;
excludeFilters
=
Collections
.
emptyList
();
}
return
;
excludeFilters
=
buildExcludeFilters
(
filterConfig
);
}
includeFilters
=
buildIncludeFilters
(
filterConfig
);
excludeFilters
=
buildExcludeFilters
(
filterConfig
);
}
includeFilters
=
buildIncludeFilters
(
filterConfig
);
}
private
List
<
Filter
>
buildExcludeFilters
(
FilterConfiguration
filterConfig
)
{
if
(
filterConfig
==
null
)
{
private
List
<
Filter
>
buildExcludeFilters
(
FilterConfiguration
filterConfig
)
{
return
Collections
.
emptyList
();
if
(
filterConfig
==
null
)
{
}
return
Collections
.
emptyList
();
ExcludeFilterConfiguration
excludeConfig
=
filterConfig
.
getExclude
();
}
if
(
excludeConfig
==
null
)
{
ExcludeFilterConfiguration
excludeConfig
=
filterConfig
.
getExclude
();
return
Collections
.
emptyList
();
if
(
excludeConfig
==
null
)
{
}
else
{
return
Collections
.
emptyList
();
List
<
Filter
>
filters
=
new
ArrayList
<>();
}
else
{
if
(
excludeConfig
.
getTypes
()
!=
null
)
{
List
<
Filter
>
filters
=
new
ArrayList
<>();
for
(
FeatureType
excludeType
:
excludeConfig
.
getTypes
())
{
if
(
excludeConfig
.
getTypes
()
!=
null
)
{
filters
.
add
(
new
TypeFilter
(
excludeType
));
for
(
FeatureType
excludeType
:
excludeConfig
.
getTypes
())
{
}
filters
.
add
(
new
TypeFilter
(
excludeType
));
}
}
if
(
excludeConfig
.
getIds
()
!=
null
)
{
}
for
(
String
excludePattern
:
excludeConfig
.
getIds
())
{
if
(
excludeConfig
.
getIds
()
!=
null
)
{
Filter
f
=
new
EqualsIgnoreCaseFilter
(
excludePattern
);
for
(
String
excludePattern
:
excludeConfig
.
getIds
())
{
filters
.
add
(
f
);
Filter
f
=
new
EqualsIgnoreCaseFilter
(
excludePattern
);
}
filters
.
add
(
f
);
}
}
return
filters
;
}
}
return
filters
;
}
}
}
private
List
<
Filter
>
buildIncludeFilters
(
FilterConfiguration
filterConfig
)
{
if
(
filterConfig
==
null
)
{
private
List
<
Filter
>
buildIncludeFilters
(
FilterConfiguration
filterConfig
)
{
return
Collections
.
emptyList
();
if
(
filterConfig
==
null
)
{
}
return
Collections
.
emptyList
();
IncludeFilterConfiguration
includeConfig
=
filterConfig
.
getInclude
();
}
if
(
includeConfig
==
null
)
{
IncludeFilterConfiguration
includeConfig
=
filterConfig
.
getInclude
();
return
Collections
.
emptyList
();
if
(
includeConfig
==
null
)
{
}
else
{
return
Collections
.
emptyList
();
List
<
Filter
>
filters
=
new
ArrayList
<>();
}
else
{
if
(
includeConfig
.
getTypes
()
!=
null
)
{
List
<
Filter
>
filters
=
new
ArrayList
<>();
for
(
FeatureType
includeType
:
includeConfig
.
getTypes
())
{
if
(
includeConfig
.
getTypes
()
!=
null
)
{
filters
.
add
(
new
TypeFilter
(
includeType
));
for
(
FeatureType
includeType
:
includeConfig
.
getTypes
())
{
}
filters
.
add
(
new
TypeFilter
(
includeType
));
}
}
if
(
includeConfig
.
getIds
()
!=
null
)
{
}
for
(
String
includePattern
:
includeConfig
.
getIds
())
{
if
(
includeConfig
.
getIds
()
!=
null
)
{
Filter
f
=
new
EqualsIgnoreCaseFilter
(
includePattern
);
for
(
String
includePattern
:
includeConfig
.
getIds
())
{
filters
.
add
(
f
);
Filter
f
=
new
EqualsIgnoreCaseFilter
(
includePattern
);
}
filters
.
add
(
f
);
}
}
return
filters
;
}
}
return
filters
;
}
}
}
private
void
setValidationConfig
(
ValidationConfiguration
config
)
{
if
(
config
==
null
)
{
private
void
setValidationConfig
(
ValidationConfiguration
config
)
{
throw
new
IllegalArgumentException
(
"Validation configuration may not be null"
);
if
(
config
==
null
)
{
}
throw
new
IllegalArgumentException
(
"Validation configuration may not be null"
);
this
.
config
=
config
;
}
buildFilters
();
this
.
config
=
config
;
ParserConfiguration
parserConfig
=
config
.
getParserConfiguration
();
buildFilters
();
List
<
Check
>
checks
=
collectEnabledChecksAndInit
(
parserConfig
,
config
);
ParserConfiguration
parserConfig
=
config
.
getParserConfiguration
();
execLayers
=
buildExecutionLayers
(
checks
);
List
<
Check
>
checks
=
collectEnabledChecksAndInit
(
parserConfig
,
config
);
}
execLayers
=
buildExecutionLayers
(
checks
);
}
private
List
<
Check
>
collectEnabledChecksAndInit
(
ParserConfiguration
parserConfig
,
ValidationConfiguration
config
)
{
Set
<
CheckId
>
enabledCheck
=
new
HashSet
<>();
private
List
<
Check
>
collectEnabledChecksAndInit
(
ParserConfiguration
parserConfig
,
ValidationConfiguration
config
)
{
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
=
new
HashMap
<>();
Set
<
CheckId
>
enabledCheck
=
new
HashSet
<>();
for
(
Entry
<
String
,
RequirementConfiguration
>
e
:
config
.
getRequirements
().
entrySet
())
{
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
=
new
HashMap
<>();
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
=
Checks
.
getAvailableRequirements
().
get
(
e
.
getKey
());
for
(
Entry
<
String
,
RequirementConfiguration
>
e
:
config
.
getRequirements
().
entrySet
())
{
if
(
req
==
null
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
=
Checks
.
getAvailableRequirements
().
get
(
e
.
getKey
());
logger
.
warn
(
"Could not find any check that satisfies requirement {}, it will not be checked"
,
if
(
req
==
null
)
{
e
.
getKey
());
logger
.
warn
(
"Could not find any check that satisfies requirement {}, it will not be checked"
,
}
else
{
e
.
getKey
());
if
(
e
.
getValue
().
isEnabled
())
{
}
else
{
// this requirement is enabled
if
(
e
.
getValue
().
isEnabled
())
{
insertGlobalParameters
(
config
,
enabledCheck
,
parameterMap
,
e
,
req
);
// this requirement is enabled
}
insertGlobalParameters
(
config
,
enabledCheck
,
parameterMap
,
e
,
req
);
}
}
}
}
fillParameterMapsWithDefaultParameter
(
enabledCheck
,
parameterMap
);
}
ArrayList
<
Check
>
checkList
=
new
ArrayList
<>();
fillParameterMapsWithDefaultParameter
(
enabledCheck
,
parameterMap
);
for
(
CheckId
id
:
enabledCheck
)
{
ArrayList
<
Check
>
checkList
=
new
ArrayList
<>();
Check
c
=
checkConfig
.
getCheckForId
(
id
);
for
(
CheckId
id
:
enabledCheck
)
{
c
.
init
(
parameterMap
.
get
(
id
),
parserConfig
);
Check
c
=
checkConfig
.
getCheckForId
(
id
);
checkList
.
add
(
c
);
c
.
init
(
parameterMap
.
get
(
id
),
parserConfig
);
}
checkList
.
add
(
c
);
return
checkList
;
}
}
return
checkList
;
}
private
void
insertGlobalParameters
(
ValidationConfiguration
config
,
Set
<
CheckId
>
enabledCheck
,
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
,
Entry
<
String
,
RequirementConfiguration
>
e
,
private
void
insertGlobalParameters
(
ValidationConfiguration
config
,
Set
<
CheckId
>
enabledCheck
,
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
)
{
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
,
Entry
<
String
,
RequirementConfiguration
>
e
,
for
(
CheckPrototype
proto
:
Checks
.
getCheckPrototypes
())
{
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
)
{
if
(
proto
.
checksRequirements
().
contains
(
req
))
{
for
(
CheckPrototype
proto
:
Checks
.
getCheckPrototypes
())
{
// this requirement is checked by this check
if
(
proto
.
checksRequirements
().
contains
(
req
))
{
// put all requirement parameter in the map
// this requirement is checked by this check
parameterMap
.
compute
(
proto
.
getCheckId
(),
(
k
,
v
)
->
{
// put all requirement parameter in the map
if
(
v
==
null
)
{
parameterMap
.
compute
(
proto
.
getCheckId
(),
(
k
,
v
)
->
{
v
=
new
HashMap
<>();
if
(
v
==
null
)
{
v
.
put
(
GlobalParameters
.
NUMBER_OF_ROUNDING_PLACES
,
config
.
getNumberOfRoundingPlacesAsString
());
v
=
new
HashMap
<>();
v
.
put
(
GlobalParameters
.
MIN_VERTEX_DISTANCE
,
config
.
getMinVertexDistanceAsString
());
v
.
put
(
GlobalParameters
.
NUMBER_OF_ROUNDING_PLACES
,
config
.
getNumberOfRoundingPlacesAsString
());
}
v
.
put
(
GlobalParameters
.
MIN_VERTEX_DISTANCE
,
config
.
getMinVertexDistanceAsString
());
v
.
putAll
(
e
.
getValue
().
getParameters
());
}
return
v
;
v
.
putAll
(
e
.
getValue
().
getParameters
());
});
return
v
;
enabledCheck
.
add
(
proto
.
getCheckId
());
});
collectDependencyChecks
(
proto
,
enabledCheck
);
enabledCheck
.
add
(
proto
.
getCheckId
());
}
collectDependencyChecks
(
proto
,
enabledCheck
);
}
}
}
}
}
private
void
fillParameterMapsWithDefaultParameter
(
Set
<
CheckId
>
enabledCheck
,
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
)
{
private
void
fillParameterMapsWithDefaultParameter
(
Set
<
CheckId
>
enabledCheck
,
for
(
CheckId
id
:
enabledCheck
)
{
Map
<
CheckId
,
Map
<
String
,
String
>>
parameterMap
)
{
CheckPrototype
proto
=
Checks
.
getCheckPrototypeForId
(
id
);
for
(
CheckId
id
:
enabledCheck
)
{
Map
<
String
,
String
>
map
=
parameterMap
.
computeIfAbsent
(
id
,
k
->
new
HashMap
<>());
CheckPrototype
proto
=
Checks
.
getCheckPrototypeForId
(
id
);
for
(
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
:
proto
.
checksRequirements
())
{
Map
<
String
,
String
>
map
=
parameterMap
.
computeIfAbsent
(
id
,
k
->
new
HashMap
<>());
if
(
proto
.
checksRequirements
().
contains
(
req
))
{
for
(
de
.
hft
.
stuttgart
.
citydoctor2
.
check
.
Requirement
req
:
proto
.
checksRequirements
())
{
for
(
DefaultParameter
param
:
req
.
getDefaultParameter
())
{
if
(
proto
.
checksRequirements
().
contains
(
req
))
{
map
.
computeIfAbsent
(
param
.
getName
(),
k
->
param
.
getValue
());
for
(
DefaultParameter
param
:
req
.
getDefaultParameter
())
{
}
map
.
computeIfAbsent
(
param
.
getName
(),
k
->
param
.
getValue
());
}
}
}
}
}
}
}
}
}
private
void
collectDependencyChecks
(
CheckPrototype
proto
,
Set
<
CheckId
>
enabledChecks
)
{
enabledChecks
.
addAll
(
proto
.
getDependencies
());
private
void
collectDependencyChecks
(
CheckPrototype
proto
,
Set
<
CheckId
>
enabledChecks
)
{
for
(
CheckId
id
:
proto
.
getDependencies
())
{
enabledChecks
.
addAll
(
proto
.
getDependencies
());
if
(
enabledChecks
.
contains
(
id
))
{
for
(
CheckId
id
:
proto
.
getDependencies
())
{
continue
;
if
(
enabledChecks
.
contains
(
id
))
{
}
continue
;
CheckPrototype
depProto
=
Checks
.
getCheckPrototypeForId
(
id
);
}
collectDependencyChecks
(
depProto
,
enabledChecks
);
CheckPrototype
depProto
=
Checks
.
getCheckPrototypeForId
(
id
);
}
collectDependencyChecks
(
depProto
,
enabledChecks
);
}
}
}
private
void
checkCityModel
(
CityDoctorModel
model
,
ProgressListener
l
)
{
Stream
<
CityObject
>
features
=
model
.
createFeatureStream
();
private
void
checkCityModel
(
CityDoctorModel
model
,
ProgressListener
l
)
{
float
featureSum
=
model
.
getNumberOfFeatures
();
Stream
<
CityObject
>
features
=
model
.
createFeatureStream
();
// stupid lamda with final variable restrictions
float
featureSum
=
model
.
getNumberOfFeatures
();
int
[]
currentFeature
=
new
int
[
1
];
// stupid lamda with final variable restrictions
features
.
forEach
(
co
->
{
int
[]
currentFeature
=
new
int
[
1
];
if
(
config
.
getParserConfiguration
().
useLowMemoryConsumption
())
{
features
.
forEach
(
co
->
{
// no edges have been created yet, create them
if
(
config
.
getParserConfiguration
().
useLowMemoryConsumption
())
{
co
.
prepareForChecking
();
// no edges have been created yet, create them
}
co
.
prepareForChecking
();
// check every feature
}
executeChecksForCityObject
(
co
);
// check every feature
executeChecksForCityObject
(
co
);
if
(
config
.
getParserConfiguration
().
useLowMemoryConsumption
())
{
// low memory consumption, remove edges again
if
(
config
.
getParserConfiguration
().
useLowMemoryConsumption
())
{
co
.
clearMetaInformation
();
// low memory consumption, remove edges again
}
co
.
clearMetaInformation
();
if
(
l
!=
null
)
{
}
currentFeature
[
0
]++;
if
(
l
!=
null
)
{
l
.
updateProgress
(
currentFeature
[
0
]
/
featureSum
);
currentFeature
[
0
]++;
}
l
.
updateProgress
(
currentFeature
[
0
]
/
featureSum
);
});
}
}
});
}
private
boolean
filterObject
(
CityObject
co
)
{
return
isObjectIncluded
(
co
,
includeFilters
,
excludeFilters
);
private
boolean
filterObject
(
CityObject
co
)
{
}
return
isObjectIncluded
(
co
,
includeFilters
,
excludeFilters
);
}
private
boolean
isObjectIncluded
(
CityObject
co
,
List
<
Filter
>
includeFilters
,
List
<
Filter
>
excludeFilters
)
{
if
(!
includeFilters
.
isEmpty
())
{
private
boolean
isObjectIncluded
(
CityObject
co
,
List
<
Filter
>
includeFilters
,
List
<
Filter
>
excludeFilters
)
{
boolean
include
=
false
;
if
(!
includeFilters
.
isEmpty
())
{
for
(
Filter
f
:
includeFilters
)
{
boolean
include
=
false
;
if
(
f
.
matches
(
co
))
{
for
(
Filter
f
:
includeFilters
)
{
include
=
true
;
if
(
f
.
matches
(
co
))
{
break
;
include
=
true
;
}
break
;
}
}
if
(!
include
)
{
}
// not included, ignore
if
(!
include
)
{
return
false
;
// not included, ignore
}
return
false
;
}
}
// check if object is excluded
}
for
(
Filter
f
:
excludeFilters
)
{
// check if object is excluded
if
(
f
.
matches
(
co
))
{
for
(
Filter
f
:
excludeFilters
)
{
// exclude object
if
(
f
.
matches
(
co
))
{
return
false
;
// exclude object
}
return
false
;
}
}
return
true
;
}
}
return
true
;
}
/**
* Checks the city object if it has not been removed by the filters. The check
/**
* result are stored into the city object itself.
* Checks the city object if it has not been removed by the filters. The check
*
* result are stored into the city object itself.
* @param co the city object that is going to be checked
*
*/
* @param co the city object that is going to be checked
private
void
executeChecksForCityObject
(
CityObject
co
)
{
*/
if
(!
filterObject
(
co
))
{
private
void
executeChecksForCityObject
(
CityObject
co
)
{
return
;
if
(!
filterObject
(
co
))
{
}
return
;
executeChecksForCheckable
(
co
);
}
}
executeChecksForCheckable
(
co
);
}
/**
* Executes all checks for the checkable. This will bypass the filters. This
/**
* will clear the old check results
* Executes all checks for the checkable. This will bypass the filters. This
*
* will clear the old check results
* @param co the checkable.
*
*/
* @param co the checkable.
public
void
executeChecksForCheckable
(
Checkable
co
)
{
*/
// throw away old results
public
void
executeChecksForCheckable
(
Checkable
co
)
{
co
.
clearAllContainedCheckResults
();
// throw away old results
if
(
logger
.
isDebugEnabled
())
{
co
.
clearAllContainedCheckResults
();
logger
.
debug
(
Localization
.
getText
(
"Checker.checkFeature"
),
co
);
if
(
logger
.
isDebugEnabled
())
{
}
logger
.
debug
(
Localization
.
getText
(
"Checker.checkFeature"
),
co
);
}
for
(
List
<
Check
>
execLayer
:
execLayers
)
{
for
(
List
<
Check
>
execLayer
:
execLayers
)
{
for
(
Check
check
:
execLayer
)
{
for
(
Check
check
:
execLayer
)
{
if
(
logger
.
isTraceEnabled
())
{
if
(
logger
.
isTraceEnabled
())
{
...
@@ -698,133 +702,200 @@ public class Checker {
...
@@ -698,133 +702,200 @@ public class Checker {
co
.
accept
(
check
);
co
.
accept
(
check
);
}
}
}
}
}
}
public
static
List
<
List
<
Check
>>
buildExecutionLayers
(
List
<
Check
>
checks
)
{
public
static
List
<
List
<
Check
>>
buildExecutionLayers
(
List
<
Check
>
checks
)
{
List
<
List
<
Check
>>
result
=
new
ArrayList
<>();
List
<
List
<
Check
>>
result
=
new
ArrayList
<>();
Set
<
Check
>
availableChecks
=
new
HashSet
<>(
checks
);
Set
<
Check
>
availableChecks
=
new
HashSet
<>(
checks
);
Set
<
CheckId
>
usedChecks
=
new
HashSet
<>();
Set
<
CheckId
>
usedChecks
=
new
HashSet
<>();
while
(!
availableChecks
.
isEmpty
())
{
while
(!
availableChecks
.
isEmpty
())
{
List
<
Check
>
layer
=
new
ArrayList
<>();
List
<
Check
>
layer
=
new
ArrayList
<>();
Iterator
<
Check
>
iterator
=
availableChecks
.
iterator
();
Iterator
<
Check
>
iterator
=
availableChecks
.
iterator
();
while
(
iterator
.
hasNext
())
{
while
(
iterator
.
hasNext
())
{
Check
c
=
iterator
.
next
();
Check
c
=
iterator
.
next
();
boolean
hasUnusedDependency
=
searchForUnusedDependency
(
usedChecks
,
c
);
boolean
hasUnusedDependency
=
searchForUnusedDependency
(
usedChecks
,
c
);
if
(!
hasUnusedDependency
)
{
if
(!
hasUnusedDependency
)
{
iterator
.
remove
();
iterator
.
remove
();
layer
.
add
(
new
CheckContainer
(
c
));
layer
.
add
(
new
CheckContainer
(
c
));
}
}
}
}
if
(
layer
.
isEmpty
())
{
if
(
layer
.
isEmpty
())
{
throw
new
IllegalStateException
(
throw
new
IllegalStateException
(
"There are checks that have dependencies that are not executed or are unknown, aborting"
);
"There are checks that have dependencies that are not executed or are unknown, aborting"
);
}
}
result
.
add
(
layer
);
result
.
add
(
layer
);
for
(
Check
c
:
layer
)
{
for
(
Check
c
:
layer
)
{
usedChecks
.
add
(
c
.
getCheckId
());
usedChecks
.
add
(
c
.
getCheckId
());
}
}
}
}
return
result
;
return
result
;
}
}
private
static
boolean
searchForUnusedDependency
(
Set
<
CheckId
>
usedChecks
,
Check
c
)
{
private
static
boolean
searchForUnusedDependency
(
Set
<
CheckId
>
usedChecks
,
Check
c
)
{
boolean
hasUnusedDependency
=
false
;
boolean
hasUnusedDependency
=
false
;
for
(
CheckId
id
:
c
.
getDependencies
())
{
for
(
CheckId
id
:
c
.
getDependencies
())
{
if
(!
usedChecks
.
contains
(
id
))
{
if
(!
usedChecks
.
contains
(
id
))
{
hasUnusedDependency
=
true
;
hasUnusedDependency
=
true
;
break
;
break
;
}
}
}
}
return
hasUnusedDependency
;
return
hasUnusedDependency
;
}
}
public
static
void
streamCheck
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
public
static
void
streamCheck
(
CityGmlZipArchive
archive
,
String
xmlDirectory
,
String
pdfDirectory
,
ValidationConfiguration
config
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
String
outputDirectory
)
throws
IOException
,
CityGmlParseException
{
streamCheck
(
inputFile
,
xmlOutput
,
pdfOutput
,
config
,
null
,
outputFile
);
streamCheck
(
archive
,
xmlDirectory
,
pdfDirectory
,
config
,
null
,
outputDirectory
);
}
}
public
static
void
streamCheck
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
public
static
void
streamCheck
(
CityGmlZipArchive
archive
,
String
xmlDirectory
,
String
pdfDirectory
,
ValidationConfiguration
config
,
FeatureCheckedListener
l
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
FeatureCheckedListener
l
,
String
outputDirectory
)
throws
IOException
,
CityGmlParseException
{
try
(
BufferedOutputStream
xmlBos
=
getXmlOutputMaybe
(
xmlOutput
);
BufferedOutputStream
pdfBos
=
getPdfOutputMaybe
(
pdfOutput
))
{
Checker
c
=
new
Checker
(
config
,
null
);
for
(
CityGmlZipEntry
entry
:
archive
.
getEntries
())
{
String
fileName
=
inputFile
.
getName
();
String
entryName
=
FilenameUtils
.
removeExtension
(
entry
.
getDisplayName
());
String
xmlOutput
=
null
;
// create reporter if available
String
pdfOutput
=
null
;
XmlStreamReporter
xmlReporter
=
getXmlReporter
(
config
,
xmlBos
,
fileName
);
String
outputFile
=
null
;
PdfStreamReporter
pdfReporter
=
getPdfReporter
(
config
,
pdfBos
,
fileName
);
if
(
xmlDirectory
!=
null
)
{
xmlOutput
=
Path
.
of
(
xmlDirectory
).
resolve
(
entryName
+
"_report.xml"
).
toString
();
// execute schematron first
}
SvrlContentHandler
handler
=
executeSchematronValidationIfAvailable
(
config
,
inputFile
);
if
(
pdfDirectory
!=
null
)
{
CityGmlConsumer
con
=
new
StreamCityGmlConsumer
(
c
,
xmlReporter
,
pdfReporter
,
handler
,
config
,
l
);
pdfOutput
=
Path
.
of
(
pdfDirectory
).
resolve
(
entryName
+
"_report.pdf"
).
toString
();
// parse and validate
}
CityGmlParser
.
streamCityGml
(
inputFile
.
getAbsolutePath
(),
config
.
getParserConfiguration
(),
con
,
outputFile
);
if
(
outputDirectory
!=
null
)
{
outputFile
=
Path
.
of
(
outputDirectory
).
resolve
(
entryName
+
"_validated.gml"
).
toString
();
// write reports if available
}
writeReport
(
xmlReporter
);
writeReport
(
pdfReporter
);
streamCheck
(
entry
,
xmlOutput
,
pdfOutput
,
config
,
l
,
outputFile
);
}
catch
(
CheckReportWriteException
e
)
{
logger
.
error
(
Localization
.
getText
(
"Checker.failReports"
),
e
);
}
}
}
if
(
outputDirectory
!=
null
)
{
ArchivePacker
.
packAndDeleteDirectory
(
outputDirectory
);
private
static
XmlStreamReporter
getXmlReporter
(
ValidationConfiguration
config
,
BufferedOutputStream
xmlBos
,
}
String
fileName
)
{
}
XmlStreamReporter
xmlReporter
;
if
(
xmlBos
!=
null
)
{
xmlReporter
=
new
XmlStreamReporter
(
xmlBos
,
fileName
,
config
);
public
static
void
streamCheck
(
CityGmlZipEntry
entry
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
}
else
{
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
xmlReporter
=
null
;
streamCheck
(
entry
,
xmlOutput
,
pdfOutput
,
config
,
null
,
outputFile
);
}
}
return
xmlReporter
;
}
public
static
void
streamCheck
(
CityGmlZipEntry
entry
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
FeatureCheckedListener
l
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
private
static
PdfStreamReporter
getPdfReporter
(
ValidationConfiguration
config
,
BufferedOutputStream
pdfBos
,
try
(
BufferedOutputStream
xmlBos
=
getXmlOutputMaybe
(
xmlOutput
);
String
fileName
)
{
BufferedOutputStream
pdfBos
=
getPdfOutputMaybe
(
pdfOutput
))
{
PdfStreamReporter
pdfReporter
;
Checker
c
=
new
Checker
(
config
,
null
);
if
(
pdfBos
!=
null
)
{
String
fileName
=
entry
.
getEntrySubPath
();
pdfReporter
=
new
PdfStreamReporter
(
pdfBos
,
fileName
,
config
);
}
else
{
// create reporter if available
pdfReporter
=
null
;
XmlStreamReporter
xmlReporter
=
getXmlReporter
(
config
,
xmlBos
,
fileName
);
}
PdfStreamReporter
pdfReporter
=
getPdfReporter
(
config
,
pdfBos
,
fileName
);
return
pdfReporter
;
}
// execute schematron first
try
(
CityGmlZipEntryFile
entryFile
=
new
CityGmlZipEntryFile
(
entry
))
{
public
static
void
writeReport
(
StreamReporter
reporter
)
throws
CheckReportWriteException
{
SvrlContentHandler
handler
=
executeSchematronValidationIfAvailable
(
config
,
entryFile
.
getInputStream
());
if
(
reporter
!=
null
)
{
reporter
.
finishReport
();
CityGmlConsumer
con
=
new
StreamCityGmlConsumer
(
c
,
xmlReporter
,
pdfReporter
,
handler
,
config
,
l
);
}
// parse and validate
}
CityGmlParser
.
streamCityGml
(
entry
,
config
.
getParserConfiguration
(),
con
,
outputFile
);
public
static
BufferedOutputStream
getPdfOutputMaybe
(
String
pdfOutput
)
throws
FileNotFoundException
{
// write reports if available
return
pdfOutput
!=
null
?
new
BufferedOutputStream
(
new
FileOutputStream
(
pdfOutput
))
:
null
;
writeReport
(
xmlReporter
);
}
writeReport
(
pdfReporter
);
}
public
static
BufferedOutputStream
getXmlOutputMaybe
(
String
xmlOutput
)
throws
FileNotFoundException
{
}
catch
(
CheckReportWriteException
e
)
{
return
xmlOutput
!=
null
?
new
BufferedOutputStream
(
new
FileOutputStream
(
xmlOutput
))
:
null
;
logger
.
error
(
Localization
.
getText
(
"Checker.failReports"
),
e
);
}
}
}
/**
* Checks the city object and writes report information into reporters. Clears
public
static
void
streamCheck
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
* old check results. If the city object would be filtered by the configured
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
* filters it is ignored and old check results are not cleared.
streamCheck
(
inputFile
,
xmlOutput
,
pdfOutput
,
config
,
null
,
outputFile
);
*
}
* @param xmlReporter a xml reporter
* @param pdfReporter a pdf reporter
public
static
void
streamCheck
(
File
inputFile
,
String
xmlOutput
,
String
pdfOutput
,
ValidationConfiguration
config
,
* @param co the city object to be checked
FeatureCheckedListener
l
,
String
outputFile
)
throws
IOException
,
CityGmlParseException
{
*/
try
(
BufferedOutputStream
xmlBos
=
getXmlOutputMaybe
(
xmlOutput
);
public
void
checkFeature
(
XmlStreamReporter
xmlReporter
,
PdfStreamReporter
pdfReporter
,
CityObject
co
)
{
BufferedOutputStream
pdfBos
=
getPdfOutputMaybe
(
pdfOutput
))
{
if
(
logger
.
isDebugEnabled
())
{
Checker
c
=
new
Checker
(
config
,
null
);
logger
.
debug
(
Localization
.
getText
(
"Checker.checkFeature"
),
co
);
String
fileName
=
inputFile
.
getName
();
}
executeChecksForCityObject
(
co
);
// create reporter if available
if
(
xmlReporter
!=
null
)
{
XmlStreamReporter
xmlReporter
=
getXmlReporter
(
config
,
xmlBos
,
fileName
);
xmlReporter
.
report
(
co
);
PdfStreamReporter
pdfReporter
=
getPdfReporter
(
config
,
pdfBos
,
fileName
);
}
if
(
pdfReporter
!=
null
)
{
// execute schematron first
pdfReporter
.
report
(
co
);
SvrlContentHandler
handler
=
executeSchematronValidationIfAvailable
(
config
,
inputFile
);
}
CityGmlConsumer
con
=
new
StreamCityGmlConsumer
(
c
,
xmlReporter
,
pdfReporter
,
handler
,
config
,
l
);
}
// parse and validate
CityGmlParser
.
streamCityGml
(
inputFile
.
getAbsolutePath
(),
config
.
getParserConfiguration
(),
con
,
outputFile
);
// write reports if available
writeReport
(
xmlReporter
);
writeReport
(
pdfReporter
);
}
catch
(
CheckReportWriteException
e
)
{
logger
.
error
(
Localization
.
getText
(
"Checker.failReports"
),
e
);
}
}
private
static
XmlStreamReporter
getXmlReporter
(
ValidationConfiguration
config
,
BufferedOutputStream
xmlBos
,
String
fileName
)
{
XmlStreamReporter
xmlReporter
;
if
(
xmlBos
!=
null
)
{
xmlReporter
=
new
XmlStreamReporter
(
xmlBos
,
fileName
,
config
);
}
else
{
xmlReporter
=
null
;
}
return
xmlReporter
;
}
private
static
PdfStreamReporter
getPdfReporter
(
ValidationConfiguration
config
,
BufferedOutputStream
pdfBos
,
String
fileName
)
{
PdfStreamReporter
pdfReporter
;
if
(
pdfBos
!=
null
)
{
pdfReporter
=
new
PdfStreamReporter
(
pdfBos
,
fileName
,
config
);
}
else
{
pdfReporter
=
null
;
}
return
pdfReporter
;
}
public
static
void
writeReport
(
StreamReporter
reporter
)
throws
CheckReportWriteException
{
if
(
reporter
!=
null
)
{
reporter
.
finishReport
();
}
}
public
static
BufferedOutputStream
getPdfOutputMaybe
(
String
pdfOutput
)
throws
FileNotFoundException
{
return
pdfOutput
!=
null
?
new
BufferedOutputStream
(
new
FileOutputStream
(
pdfOutput
))
:
null
;
}
public
static
BufferedOutputStream
getXmlOutputMaybe
(
String
xmlOutput
)
throws
FileNotFoundException
{
return
xmlOutput
!=
null
?
new
BufferedOutputStream
(
new
FileOutputStream
(
xmlOutput
))
:
null
;
}
/**
* Checks the city object and writes report information into reporters. Clears
* old check results. If the city object would be filtered by the configured
* filters it is ignored and old check results are not cleared.
*
* @param xmlReporter a xml reporter
* @param pdfReporter a pdf reporter
* @param co the city object to be checked
*/
public
void
checkFeature
(
XmlStreamReporter
xmlReporter
,
PdfStreamReporter
pdfReporter
,
CityObject
co
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
Localization
.
getText
(
"Checker.checkFeature"
),
co
);
}
executeChecksForCityObject
(
co
);
if
(
xmlReporter
!=
null
)
{
xmlReporter
.
report
(
co
);
}
if
(
pdfReporter
!=
null
)
{
pdfReporter
.
report
(
co
);
}
}
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/StreamCityGmlConsumer.java
View file @
2d57794b
...
@@ -29,6 +29,9 @@ import java.util.Set;
...
@@ -29,6 +29,9 @@ import java.util.Set;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityFurniture
;
import
de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.model.core.AbstractFeatureProperty
;
import
org.citygml4j.core.model.core.AbstractFeatureProperty
;
...
@@ -139,8 +142,12 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
...
@@ -139,8 +142,12 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
pdfReporter
.
report
(
co
);
pdfReporter
.
report
(
co
);
}
}
// store quality ade datastructures in cityobject
// TODO: Update QualityADE to be compatible with CityGML 3.0 or deprecate it, unhandled top-level feature types are just skipped for now
QualityADEUtils
.
writeQualityAde
(
co
,
val
);
if
(!(
co
instanceof
AbstractTunnel
||
co
instanceof
CityFurniture
||
co
instanceof
GenericCityObject
))
{
// store quality ade datastructures in cityobject
QualityADEUtils
.
writeQualityAde
(
co
,
val
);
}
// recreate geometry
// recreate geometry
co
.
reCreateGeometries
(
gmlFactory
,
config
.
getParserConfiguration
());
co
.
reCreateGeometries
(
gmlFactory
,
config
.
getParserConfiguration
());
...
...
Prev
1
2
3
4
5
6
7
8
9
…
13
Next