Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
QualityADE
Commits
51c58d36
Commit
51c58d36
authored
Jan 21, 2021
by
Matthias Betz
Browse files
Release 0.1.0 of citygml4j-quality-ade plugin
parent
84999154
Pipeline
#1886
passed with stage
in 5 seconds
Changes
95
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
citygml4j-quality-ade/src/test/resources/SimpleSolid_InteriorDisconnected.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_P_INTERIOR_DISCONNECTED>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
</qual:GE_P_INTERIOR_DISCONNECTED>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_IntersectingRings.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_P_INTERSECTING_RINGS>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
<qual:linearRingId1>
_Simple_BD.1_PG.1_Ring1
</qual:linearRingId1>
<qual:linearRingId2>
_Simple_BD.1_PG.1_Ring2
</qual:linearRingId2>
</qual:GE_P_INTERSECTING_RINGS>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_MultipleConnectedComponents.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:components>
<qual:component>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
<qual:polygonId>
_Simple_BD.1_PG.2
</qual:polygonId>
</qual:component>
<qual:component>
<qual:polygonId>
_Simple_BD.1_PG.3
</qual:polygonId>
<qual:polygonId>
_Simple_BD.1_PG.4
</qual:polygonId>
</qual:component>
</qual:components>
</qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldEdge.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_NON_MANIFOLD_EDGE>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:edges>
<qual:edge>
<qual:from>
10.0 1.0 2.0
</qual:from>
<qual:to>
11.0 2.0 3.0
</qual:to>
</qual:edge>
</qual:edges>
</qual:GE_S_NON_MANIFOLD_EDGE>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldVertex.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_NON_MANIFOLD_VERTEX>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:vertex>
1.0 2.0 3.0
</qual:vertex>
</qual:GE_S_NON_MANIFOLD_VERTEX>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonDistancePlane.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
<qual:vertex>
1.0 2.0 3.0
</qual:vertex>
<qual:distance
uom=
"m"
>
0.001
</qual:distance>
</qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonNormalsDeviation.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
<qual:deviation
uom=
"deg"
>
1.0
</qual:deviation>
</qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_OrientationRingsSame.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_P_ORIENTATION_RINGS_SAME>
<qual:polygonId>
_Simple_BD.1_PG.1
</qual:polygonId>
<qual:linearRingId>
_Simple_BD.1_PG.1_Ring1
</qual:linearRingId>
</qual:GE_P_ORIENTATION_RINGS_SAME>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_PolygonWrongOrientation.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_POLYGON_WRONG_ORIENTATION>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:edges>
<qual:edge>
<qual:from>
10.0 1.0 2.0
</qual:from>
<qual:to>
11.0 2.0 3.0
</qual:to>
</qual:edge>
</qual:edges>
</qual:GE_S_POLYGON_WRONG_ORIENTATION>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_RingNotClosed.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_R_NOT_CLOSED>
<qual:linearRingId>
_Simple_BD.1_PG.6_LR.1
</qual:linearRingId>
</qual:GE_R_NOT_CLOSED>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_RingSelfIntersection.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_R_SELF_INTERSECTION>
<qual:linearRingId>
_Simple_BD.1_PG.6_LR.1
</qual:linearRingId>
<qual:type>
POINT_TOUCHES_EDGE
</qual:type>
<qual:edge1>
<qual:from>
10.0 11.0 12.0
</qual:from>
<qual:to>
11.0 4.0 0.0
</qual:to>
</qual:edge1>
<qual:vertex1>
5.0 6.0 7.0
</qual:vertex1>
</qual:GE_R_SELF_INTERSECTION>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidNotClosed.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_NOT_CLOSED>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:edges>
<qual:edge>
<qual:from>
10.0 1.0 2.0
</qual:from>
<qual:to>
11.0 2.0 3.0
</qual:to>
</qual:edge>
</qual:edges>
</qual:GE_S_NOT_CLOSED>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidSelfIntersection.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_SELF_INTERSECTION>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
<qual:polygonId1>
_Simple_BD.1_PG.1
</qual:polygonId1>
<qual:polygonId2>
_Simple_BD.1_PG.2
</qual:polygonId2>
</qual:GE_S_SELF_INTERSECTION>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPoints.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_R_TOO_FEW_POINTS>
<qual:linearRingId>
_Simple_BD.1_PG.6_LR.1
</qual:linearRingId>
</qual:GE_R_TOO_FEW_POINTS>
</qual:validationResult>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPolygons.gml
0 → 100644
View file @
51c58d36
<?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:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
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 https://transfer.hft-stuttgart.de/pages/qualityade/0.1 https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.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
linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind.
10.5.2017
Author: V. Coors, HFT Stuttgart
Lizenz:
-->
<core:cityObjectMember>
<bldg:Building
gml:id=
"_Simple_BD.1"
>
<qual:validationResult
result=
"ERROR"
>
<qual:GE_S_TOO_FEW_POLYGONS>
<qual:geometryId>
_Simple_BD.1_Geom1
</qual:geometryId>
</qual:GE_S_TOO_FEW_POLYGONS>
</qual:validationResult>
<bldg:lod2Solid>
<gml:Solid
gml:id=
"_Simple_BD.1_Geom1"
>
<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 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>
<qual:validation>
<qual:validationDate>
2002-05-30T09:00:00
</qual:validationDate>
<qual:validationSoftware>
CityDoctor2
</qual:validationSoftware>
<qual:validationPlan>
<qual:globalParameters>
<qual:parameter
name=
"numberOfRoundingPlaces"
>
8
</qual:parameter>
<qual:parameter
name=
"minVertexDistance"
uom=
"m"
>
0.0001
</qual:parameter>
<qual:parameter
name=
"schematronFile"
></qual:parameter>
</qual:globalParameters>
<qual:requirement
name=
"R_GE_R_TOO_FEW_POINTS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_R_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_NON_PLANAR"
enabled=
"true"
>
<qual:parameter
name=
"type"
>
distance
</qual:parameter>
<qual:parameter
name=
"distanceTolerance"
uom=
"m"
>
0.01
</qual:parameter>
<qual:parameter
name=
"angleTolerance"
uom=
"deg"
>
1
</qual:parameter>
<qual:parameter
name=
"degeneratedPolygonTolerance"
uom=
"m"
>
0.0000
</qual:parameter>
</qual:requirement>
<qual:requirement
name=
"R_GE_P_INTERIOR_DISCONNECTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INTERSECTING_RINGS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_HOLE_OUTSIDE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_ORIENTATION_RINGS_SAME"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_P_INNER_RINGS_NESTED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_TOO_FEW_POLYGONS"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NOT_CLOSED"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_EDGE"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_NON_MANIFOLD_VERTEX"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_SELF_INTERSECTION"
enabled=
"true"
/>
<qual:requirement
name=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
enabled=
"true"
/>
<qual:filter>
<qual:checking>
BUILDING
</qual:checking>
<qual:checking>
TRANSPORTATION
</qual:checking>
<qual:checking>
VEGETATION
</qual:checking>
<qual:checking>
BRIDGE
</qual:checking>
<qual:checking>
WATER
</qual:checking>
<qual:checking>
LAND
</qual:checking>
</qual:filter>
</qual:validationPlan>
<qual:statistics>
<qual:numErrorBuildings
numChecked=
"1"
>
1
</qual:numErrorBuildings>
<qual:numErrorVegetation
numChecked=
"0"
>
0
</qual:numErrorVegetation>
<qual:numErrorLandObjects
numChecked=
"0"
>
0
</qual:numErrorLandObjects>
<qual:numErrorBridgeObjects
numChecked=
"0"
>
0
</qual:numErrorBridgeObjects>
<qual:numErrorWaterObjects
numChecked=
"0"
>
0
</qual:numErrorWaterObjects>
<qual:numErrorTransportation
numChecked=
"0"
>
0
</qual:numErrorTransportation>
<qual:errorStatistics>
<qual:error
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
1
</qual:error>
</qual:errorStatistics>
</qual:statistics>
</qual:validation>
</core:CityModel>
\ No newline at end of file
Prev
1
2
3
4
5
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment