ISO19107 Geographic information
Download
Report
Transcript ISO19107 Geographic information
ISO19107 Geographic
information – Spatial schema
Pusan National University
Dept. of Computer Engineering
Spatiotemporal Database Lab.
Joon-Seok Kim
[email protected]
Outline
• Introduction
• Schema
– Geometry
•
•
•
•
•
Geometry root
Geometry primitive
Coordinate geometry
Geometry aggregate
Geometry complex
– Topology
• Topology root
• Topology primitive
• Topology complex
• Summary
2
Introduction
• ISO19107
– Providing conceptual schemas for describing
and manipulating the spatial characteristic
– Formal language
• Unified Modeling Language (UML) ISO19103
– Vector geometry and topology up to 3-D
– Spatial operations
• For use in access, query, management, processing,
and data exchange of geographic information
3
ISO 19115-2
Metadata - Imagery
ISO 19116
Positioning Services
ISO 19132 Location Based
Services Reference Model
ISO 06709
ISO 19115
Metadata
ISO 19111 Spatial
Referencing by Coordinates
ISO 19109 Rules for
Application Schema
M
M
M
M
M
M
ISO 19137 Generally
Used Profiles
M
M
ISO 19107 Spatial
Schema
M
M
M
M
ISO 19112 Location
by Identifier
M
M
M
M
M
ISO 19130 Sensor and data models
for imagery and gridded data
ISO 19134 MultiModal
Navigation
ISO 19123
Coverages
ISO 19133 Tracking
and Navigation
ISO 19141 Moving
Features
ISO 19144
Classification
ISO 19108
Temporal
M
ISO 19144-1 Classification
Systems
4
Package Clients of ISO19107
ISO 19111 Spatial
Referencing by Coordinates
ISO 19103 Conceptual Schema
Language
M
M
ISO 19107 Spatial Schema
5
Package Suppliers of ISO19107
<<normative>>
Topology
<<normative>>
Geometry
Basic Types
(from ISO 19103 Conceptual Schema Language)
6
Main Diagram of ISO19107 Spatial Schema
Geometry
<<Leaf >>
Geometric aggregates
<<Leaf >>
Geometry root
<<Leaf >>
Coordinate geometry
+ GM_Aggregate
+ GM_MultiCurv e
+ GM_MultiPoint
+ GM_MultiPrimitiv e
+ GM_MultiSolid
+ GM_MultiSurf ace
+ GM_Boundary
+ GM_Object
+ DirectPosition
+ GM_Af f inePlacement
+ GM_Arc
+ GM_ArcBy Bulge
+ GM_ArcString
+ GM_ArcStringBy Bulge
+ GM_BSplineCurv e
+ GM_BSplineSurf ace
+ GM_BSplineSurf aceForm
+ GM_Bezier
+ GM_BicubicGrid
+ GM_BilinearGrid
+ GM_Circle
+ GM_Clothoid
+ GM_Cone
+ GM_Conic
+ GM_CubicSpline
+ GM_Cy linder
+ GM_Env elope
+ GM_GenericCurv e
+ GM_GenericSurf ace
+ GM_Geodesic
+ GM_GeodesicString
+ GM_GriddedSurf ace
+ GM_Knot
+ GM_KnotTy pe
+ GM_LineSegment
+ GM_LineString
+ GM_Of f setCurv e
+ GM_ParametricCurv eSurf ace
+ GM_Placement
+ GM_PointArray
+ GM_PointGrid
+ GM_PointRef
+ GM_Poly gon
+ GM_Poly hedralSurf ace
+ GM_Poly nomialSpline
+ GM_Position
+ GM_Sphere
+ GM_SplineCurv e
+ GM_SplineCurv eForm
+ GM_Tin
+ GM_Triangle
+ GM_TriangulatedSurf ace
+ Transf initeSet<DirectPosition>
<<Leaf >>
Geometric primitiv e
+ Bearing
+ GM_Curv e
+ GM_Curv eBoundary
+ GM_Curv eInterpolation
+ GM_Curv eSegment
+ GM_OrientableCurv e
+ GM_OrientablePrimitiv e
+ GM_OrientableSurf ace
+ GM_Point
+ GM_Primitiv e
+ GM_Primitiv eBoundary
+ GM_Ring
+ GM_Shell
+ GM_Solid
+ GM_SolidBoundary
+ GM_Surf ace
+ GM_Surf aceBoundary
+ GM_Surf aceInterpolation
+ GM_Surf acePatch
<<Leaf >>
Geometric complex
+ GM_Complex
+ GM_ComplexBoundary
+ GM_Composite
+ GM_CompositeCurv e
+ GM_CompositePoint
+ GM_CompositeSolid
+ GM_CompositeSurf ace
8
Geometry Packages
<<Type>>
GM_Object
<<Type>>
GM_Primitive
<<Type>>
GM_Point
<<Type>>
GM_Complex
<<Type>>
GM_Aggregate
<<Type>>
GM_Composite
<<Type>>
GM_MultiPrimitive
<<Type>>
GM_CompositePoint
<<Type>>
GM_MultiPoint
<<Type>>
GM_OrientablePrimitive
(from Geometric primitive)
<<Type>>
GM_CompositeCurve
<<Type>>
GM_OrientableCurve
<<Type>>
GM_MultiCurve
(f rom Geometric primitiv e)
<<Type>>
GM_OrientableSurface
<<Type>>
GM_CompositeSurface
<<Type>>
GM_MultiSurface
(f rom Geometric primitiv e)
<<Type>>
GM_Curve
<<Type>>
GM_Surface
<<Type>>
GM_Solid
<<Type>>
GM_CompositeSolid
<<Type>>
GM_MultiSolid
9
Geometry basic classes
Basic Concept
Geometry object
Point
Line
Rectangle
…
Infinite set of points
Point set theory
10
Concept of Interior, Exterior and Boundary
U
Interior U Boundary
= Closure
Interior
Boundary
Exterior
11
Boundary and Dimension
Dim.
Boundary
Point
0
Empty
Curve
1
Point
Surface
2
Curve
Solid
3
Surface
Example
12
Simple and Cycle
s
s
e
s e
e
s
e
(a)
(b)
(c)
(d)
simple
cycle
(a), (b), (d)
(d)
13
14
GM_Object
convexHull() and buffer()
d
convexHull()
buffer (radius: d)
15
<<Type>>
GM_Complex
(from Geometri c complex)
<<Abstract>>
GM_Boundary
{isCycle() =
TRUE}
(from Geometry root)
<<Type>>
GM_ComplexBoundary
<<Abstract>>
GM_PrimitiveBoundary
(from Geometric complex)
<<Type>>
GM_CurveBoundary
0..*
0..*
1
<<Type>>
GM_Point
+startPoint
1
+endPoint
<<Type>>
GM_SurfaceBoundary
1
1
0..1 <<Type>> 0..*
+exterior GM_Ring
+interior
<<Type>>
GM_SolidBoundary
1
1
0..1 <<Type>>
+exterior GM_Shell
<<Type>>
GM_CompositeSurface
<<Type>>
GM_CompositeCurve
(from Geometric complex)
(from Geometric complex)
<<Type>>
GM_Shell
{isSimple() = TRUE}
{isCycle() = TRUE}
<<Type>>
GM_Ring
Geometry Boundary Data Types
0..*
+interior
16
The Number of Exterior of GM_SurfaceBoundary
z
y
x
x
y
2-Dimension plane
3-Dimension surface
1 exterior
0 exterior
17
<<Type>>
GM_Object
{dimension() >= cotainedPrimitive.dimension()}
(from Geometry root)
Complex
+containedPrimitive
1..*
+element
<<Type>> 0..*
GM_Primitive
Interior to
0..*+containingPrimitive
+complex 0..*
<<Type>>
GM_Complex
<<Type>>
GM_OrientablePrimitive
(from Geometric complex)
<<Type>>
GM_OrientableCurve
<<Type>>
GM_Point
<<Type>>
GM_Curve
<<Type>>
GM_OrientableSurface
<<Type>>
GM_Surface
<<Type>>
GM_Solid
18
GM_Primitive
Geometric Primitive
20
GM_Point
Concept of Orientation
s
“+”
“-”
e
For curves,
direction in which the curve is traversed
When used as bounding curves,
“left” of oriented curve
“+”
“-”
For surfaces,
Z-axis that would form a right-handed system
When used as bounding surfaces,
“below” the surface
21
22
GM_OrientedPrimitive
23
GM_Curve
24
GM_Surface
25
GM_Solid
Coordinate Geometry
27
DirectPosition
28
Curve segment classes
29
Linear and Geodetic Interpolation
30
Arcs
31
Conics and placements
32
Spline and specialty curves
33
Surface patches
34
Polygonal surface
35
TIN construction
36
GM_ParmetricCurveSurface and its subtypes
Geometric Aggregate
Geometric Complex
38
GM_Aggregate
39
GM_Complex
<<Type>>
GM_Complex
<<Type>>
GM_Composite
{dimension() = generator.dimension()}
Composition
+composite
+generator1..*
0..*
<<Type>>
GM_CompositePoint
(from Geometric primitive)
<<Type>>
GM_CompositeCurve
0..*
+composite
Composition
<<Type>>
GM_Primitive
0..*
<<Type>>
GM_CompositeSurface
0..*
<<Type>>
GM_CompositeSolid
0..*
+composite
+composite
Composition
Composition
+generator
+generator
+generator
1..*
1..*
+composite
Composition
{sequence}
+generator
1
1..*
<<Type>>
GM_Point
<<Type>>
GM_OrientableCurve
<<Type>>
GM_OrientableSurface
<<Type>>
GM_Solid
(from Geometric primitive)
(from Geometric primitive)
(from Geometric primitive)
(from Geometric primitive)
CM_Composite
40
Topology
Concept of Topology
• Topology
– Deal with characteristics of geometric figures
that remain invariant if the space is deformed
elastically and continuously
– E.g. connectivity of an n-dimensional graph
42
<<Leaf>>
Topology root
+ TP_Object
<<Leaf>>
Topological Complex
+ TP_Complex
<<Leaf>>
Topological primitive
+ TP_Boundary
+ TP_ComplexBoundary
+ TP_DirectedTopo
+ TP_DirectedEdge
+ TP_DirectedFace
+ TP_DirectedNode
+ TP_DirectedSolid
+ TP_Edge
+ TP_EdgeBoundary
+ TP_Expression
+ TP_ExpressionTerm
+ TP_Face
+ TP_FaceBoundary
+ TP_Node
+ TP_Primitive
+ TP_PrimitiveBoundary
+ TP_Ring
+ TP_Shell
+ TP_Solid
+ TP_SolidBoundary
43
Topology packages
<<Interface>>
TP_Object
<<Type>>
TP_Primitive
Complex
+element
+complex
1..*
<<Type>>
TP_Node
<<Type>>
TP_DirectedNode
<<Type>>
TP_Complex
1..*
<<Type>>
TP_Edge
<<Type>>
TP_DirectedEdge
<<Type>>
TP_Face
<<Type>>
TP_DirectedFace
<<Type>>
TP_DirectedTopo
<<Type>>
TP_Solid
<<Type>>
TP_DirectedSolid
<<DataType>>
TP_Expression
44
Topological class diagram
<<Interface>>
TP_Object
(from Topology root)
<<Type>>
TP_Primitive
(from Topological primitive)
+topology
Complex
+element
1..*
+complex
0..*
Realization
0..1
1..*
GM_Primitive
(from Geometric primitive)
TP_Complex
(from Topological Complex)
0..1
{geometry.complex -> includesAll
complex.geometry}
+element
1..*
0..*
Complex
+complex
+subComplex
1..*
/Contains
1..*
+superComplex
+topology
Realization
+geometry
+geometry
<<Type>>
<<Type>>
0..1
<<Type>>
GM_Complex
(from Geometric complex)
+subComplex
0..*
Contains
0..*
+superComplex
<<Type>>
GM_Object
(from Geometry root)
45
Relation between geometry and topology
46
TP_Object
<<Type>>
TP_Node
Center
1
<<Type>>
TP_DirectedNode
+proxy
2
+topo
<<Type>>
TP_Node
+topo
Center
1
<<Type>>
TP_DirectedNode
2
+proxy
1
+hub
+boundary
2
CoBoundary
Boundary
0..*
+primitive
<<Type>>
TP_Edge
0..*
+spoke
1
Center
+proxy
2
+topo
<<Type>>
TP_DirectedEdge
+boundary
1..*
<<Type>>
TP_Edge
+topo
Center
+proxy
1
1..*
+hub
2
CoBoundary
Boundary
0..*
+primitive
<<Type>>
TP_Face
Center
1
+topo
+proxy
2
<<Type>>
TP_DirectedFace
+boundary
1..*
Boundary
<<Type>>
TP_Face
+topo
Center
1
+hub
1..*
2
+proxy
0..2
2
+spoke
Center
1
+topo
0..*
+spoke
{CircularS
equence}
<<Type>>
TP_DirectedFace
CoBoundary
0..2
2
+primitive
<<Type>>
TP_Solid
<<Type>>
TP_DirectedEdge
+proxy
2
<<Type>>
TP_DirectedSolid
<<Type>>
TP_Solid
+topo
1
Center
2
+proxy
<<Type>>
TP_DirectedSolid
47
Boundary and coboundary operation
48
Boundary relation data types
49
TP_Primitive
<<Type>>
TP_Primitive
+topo
<<Type>>
TP_Node
1
Center
Center
+proxy
2
<<Type>>
TP_DirectedNode
1
<<Type>>
TP_Edge
1 +topo
{primitive = self}
{orientation = "+"}
<<Type>>
TP_Face
+topo
1
<<Type>>
TP_Solid
+topo
1
Center
Center
+proxy 2
<<Type>>
TP_DirectedEdge
+proxy
+proxy
2
<<Type>>
TP_DirectedFace
+topo
Center
+proxy 2
<<Type>>
TP_DirectedSolid
2
<<Type>>
TP_DirectedTopo
{orientation = "+" implies topo = self}
50
TP_DirectedTopo subclasses
51
TP_Node
52
TP_Edge
<<Type>>
TP_Primitive
0..2
CoBoundary
+spoke
<<Type>>
TP_DirectedSolid
1
+topo
<<Type>>
TP_DirectedEdge
+hub
1..*
<<Type>>
TP_Face
1
0..*
+boundary
1..*
+primitive
Boundary
+topo
Center
+proxy
2
<<Type>>
TP_DirectedFace
subset
+proxy
Center
2
<<Type>>
TP_DirectedTopo
53
TP_Face
54
TP_Solid
55
TP_Expression
56
TP_Complex
Summary
<<Leaf>>
<<Leaf>>
Geometric aggregates
(from Geometry)
Geometry root
(from Geometry)
<<Leaf>>
Coordinate geometry
(from Geometry)
<<Leaf>>
<<Leaf>>
Geometric primitive
Geometric complex
(from Geometry)
(from Geometry)
<<Leaf>>
Topology root
(from Topology)
<<Leaf>>
<<Leaf>>
Topological primitive
Topological Complex
(from Topology)
(from Topology)
58
Geometry and Topology Packages
<<Type>>
GM_Object
<<Type>>
GM_Primitive
<<Type>>
GM_Point
<<Type>>
GM_Complex
<<Type>>
GM_Aggregate
<<Type>>
GM_Composite
<<Type>>
GM_MultiPrimitive
<<Type>>
GM_CompositePoint
<<Type>>
GM_MultiPoint
<<Type>>
GM_OrientablePrimitive
(from Geometric primitive)
<<Type>>
GM_CompositeCurve
<<Type>>
GM_OrientableCurve
<<Type>>
GM_MultiCurve
(f rom Geometric primitiv e)
<<Type>>
GM_OrientableSurface
<<Type>>
GM_CompositeSurface
<<Type>>
GM_MultiSurface
(f rom Geometric primitiv e)
<<Type>>
GM_Curve
<<Type>>
GM_Surface
<<Type>>
GM_Solid
<<Type>>
GM_CompositeSolid
<<Type>>
GM_MultiSolid
59
Geometry basic classes
<<Type>>
GM_Complex
(from Geometri c complex)
<<Abstract>>
GM_Boundary
{isCycle() =
TRUE}
(from Geometry root)
<<Type>>
GM_ComplexBoundary
<<Abstract>>
GM_PrimitiveBoundary
(from Geometric complex)
<<Type>>
GM_CurveBoundary
0..*
0..*
1
<<Type>>
GM_Point
+startPoint
1
+endPoint
<<Type>>
GM_SurfaceBoundary
1
1
0..1 <<Type>> 0..*
+exterior GM_Ring
+interior
<<Type>>
GM_SolidBoundary
1
1
0..1 <<Type>>
+exterior GM_Shell
<<Type>>
GM_CompositeSurface
<<Type>>
GM_CompositeCurve
(from Geometric complex)
(from Geometric complex)
<<Type>>
GM_Shell
{isSimple() = TRUE}
{isCycle() = TRUE}
<<Type>>
GM_Ring
Geometry Boundary Data Types
0..*
+interior
60
<<Interface>>
TP_Object
<<Type>>
TP_Primitive
Complex
+element
+complex
1..*
<<Type>>
TP_Node
<<Type>>
TP_DirectedNode
<<Type>>
TP_Complex
1..*
<<Type>>
TP_Edge
<<Type>>
TP_DirectedEdge
<<Type>>
TP_Face
<<Type>>
TP_DirectedFace
<<Type>>
TP_DirectedTopo
<<Type>>
TP_Solid
<<Type>>
TP_DirectedSolid
<<DataType>>
TP_Expression
61
Topological class diagram
<<Interface>>
TP_Object
(from Topology root)
<<Type>>
TP_Primitive
(from Topological primitive)
+topology
Complex
+element
1..*
+complex
0..*
Realization
0..1
1..*
GM_Primitive
(from Geometric primitive)
TP_Complex
(from Topological Complex)
0..1
{geometry.complex -> includesAll
complex.geometry}
+element
1..*
0..*
Complex
+complex
+subComplex
1..*
/Contains
1..*
+superComplex
+topology
Realization
+geometry
+geometry
<<Type>>
<<Type>>
0..1
<<Type>>
GM_Complex
(from Geometric complex)
+subComplex
0..*
Contains
0..*
+superComplex
<<Type>>
GM_Object
(from Geometry root)
62
Relation between geometry and topology
Spatial Examples from
ISO19107
Geometric objects in a 2-D CRS
64
P1 = GM_Point < position = < 1.00, 5.00 > >
P2 = GM_Point < position = < 3.00, 5.00 > >
P3 = GM_Point < position = < 3.00, 2.00 > >
P4 = GM_Point < position = < 1.75, 2.75 > >
P5 = GM_Point < position = < 1.50, 4.50 > >
P6 = GM_Point < position = < 2.00, 3.25 > >
P7 = GM_Point < position = < 5.00, 4.00 > >
65
CS1 = GM_CurveSegment
CS2 = GM_CurveSegment
CS3 = GM_CurveSegment
CS4 = GM_CurveSegment
CS5 = GM_CurveSegment
CS6 = GM_CurveSegment
CS7 = GM_CurveSegment
interpolation =“linear”>
<controlPoint = <P1,P2>, interpolation = “linear” >
<controlPoint = <P2,P3 >, interpolation = “linear” >
<controlPoint = <P2,(6,5),(6,2),P3>, interpolation = “linear” >
<controlPoint = <P1,(1,2), P3> , interpolation = “linear” >
<controlPoint = <P5,(1.9,4.25), (2,4)> interpolation = “arc”>
<controlPoint = <(2,4),P6>, interpolation = “linear” >
<controlPoint = <P7,(4.25,4),(4.25,3.25),(5,3.25),P7 >,
66
C1 = GM_Curve segments = <CS1>
C2 = GM_Curve segments = <CS2>
C3 = GM_Curve segments = <CS3>
C4 = GM_Curve segments = <CS4>
C5 = GM_Curve segments = <CS5, CS6>
C6 = GM_Curve segments = <CS7>
67
S0 = GM_Surface patch = <GM_Polygon
S1 = GM_Surface patch = <GM_Polygon
interior = << C5, -C5 >> >
S2 = GM_Surface patch = <GM_Polygon
interior = << -C6 >> >
S3 = GM_Surface patch = <GM_Polygon
interior = << C1, C3, -C4 >> >
exterior = < C4, -C2, -C1 >,
exterior = < -C3, C2 >,
exterior = < C6 > >
68
Lake = AreaFeature featureType=“Hydrography::WaterBody”, extent = S3
RoadCenterline = LineFeature featureType = “Transportation::Road”, centerline = C2
RoadArea = RoadCenterLine.centerline.buffer < distance = 10m >
RoadExtent = AreaFeature featureType = “LandCover::Road”, extent = RoadArea
RoadInstance = ComplexFeature featureType = “LandUse::Road”,
featureComponents = {RoadCenterline, RoadArea }
Trail = LineFeature featureType = “CulturalFacilities::HikingTrail”, centerline = C5
School = PointFeature featureType = “CulturalFacilities::School”, Location = P4
69