Top Banner
ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim [email protected]
69

ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim [email protected].

Dec 14, 2015

Download

Documents

Natalie Dobbe
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

ISO19107 Geographic information – Spatial schema

Pusan National UniversityDept. of Computer EngineeringSpatiotemporal Database Lab.

Joon-Seok [email protected]

Page 2: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

2

Outline

• Introduction• Schema

– Geometry• Geometry root• Geometry primitive• Coordinate geometry• Geometry aggregate• Geometry complex

– Topology• Topology root• Topology primitive• Topology complex

• Summary

Page 3: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

3

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

Page 4: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

4

ISO 19107 Spatial Schema

ISO 19132 Location Based Services Reference Model

M

ISO 19115-2 Metadata - Imagery

ISO 19137 General ly Used Profiles

M

ISO 19134 MultiModal Navigation

M

ISO 19123 Coverages

M

ISO 19133 Tracking and Navigation

M

ISO 19141 Moving Features

M

ISO 19116 Positioning Services

M

ISO 19115 Metadata

M

ISO 06709

M

ISO 19112 Location by Identifier

M

ISO 19130 Sensor and data models for imagery and gridded data

M

ISO 19108 Temporal

M

ISO 19109 Rules for Application Schema

M

ISO 19111 Spatial Referencing by Coordinates

M

M

ISO 19144 Classi fication

M

ISO 19144-1 Classification Systems

M

M

Package Clients of ISO19107

Page 5: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

5

ISO 19107 Spatial Schema

ISO 19103 Conceptual Schema Language

M

ISO 19111 Spatial Referencing by Coordinates

M

Package Suppliers of ISO19107

Page 6: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

6

Topology<<normative>>

Geometry<<normative>>

Basic Types

(from ISO 19103 Conceptual Schema Language)

Main Diagram of ISO19107 Spatial Schema

Page 7: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Geometry

Page 8: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

8

Geometric primitiv e<<Leaf >>

+ 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

Geometric complex<<Leaf >>

+ GM_Complex+ GM_ComplexBoundary

+ GM_Composite+ GM_CompositeCurv e+ GM_CompositePoint+ GM_CompositeSolid

+ GM_CompositeSurf ace

Coordinate geometry<<Leaf >>

+ 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>

Geometry root<<Leaf >>

+ GM_Boundary+ GM_Object

Geometric aggregates<<Leaf >>

+ GM_Aggregate+ GM_MultiCurv e+ GM_MultiPoint

+ GM_MultiPrimitiv e+ GM_MultiSolid

+ GM_MultiSurf ace

Geometry Packages

Page 9: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

9

GM_Aggregate<<Type>>

GM_Object<<Type>>

GM_MultiPoint<<Type>>

GM_MultiCurve<<Type>>

GM_MultiSurface<<Type>>

GM_MultiSolid<<Type>>

GM_MultiPrimitive<<Type>>

GM_Surface<<Type>>

GM_Curve<<Type>>

GM_CompositePoint<<Type>>

GM_Point<<Type>>

GM_CompositeSolid<<Type>>

GM_Solid<<Type>>

GM_OrientablePrimitive(from Geometric primitive)

<<Type>>

GM_Complex<<Type>>

GM_Composite<<Type>>

GM_Primitive<<Type>>

GM_OrientableCurve(f rom Geometric primitiv e)

<<Type>>GM_CompositeCurve

<<Type>>

GM_CompositeSurface<<Type>>

GM_OrientableSurface(f rom Geometric primitiv e)

<<Type>>

Geometry basic classes

Page 10: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

10

Basic Concept

Geometry object

Infinite set of points

PointLineRectangle…

Point set theory

Page 11: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

11

Concept of Interior, Exterior and Boundary

U

Boundary

Interior

Exterior

Interior U Boundary= Closure

Page 12: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

12

Boundary and Dimension

Dim. Boundary Example

Point 0 Empty

Curve 1 Point

Surface 2 Curve

Solid 3 Surface

Page 13: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

13

Simple and Cycle

s e

s es

e

s e

(a) (b) (c) (d)

simple cycle

(a), (b), (d) (d)

Page 14: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

14

TransfiniteSet<DirectPosition>(from Coordinate geometry)

<<Interface>> {dimension() > boundary().dimension}{boundary().notEmpty() implies boundary().dimension() = dimension() -1}{boundary().isEmpty() = isCycle()}

GM_Aggregate(from Geometric aggregates)

<<Type>>

GM_Object

mbRegion() : GM_ObjectrepresentativePoint() : DirectPositionboundary() : GM_Boundaryclosure() : GM_ComplexisSimple() : BooleanisCycle() : Booleandistance(geometry : GM_Object) : Distancedimension(point : DirectPosition = NULL) : IntegercoordinateDimension() : IntegermaximalComplex() : Set<GM_Complex>transform(newCRS : SC_CRS) : GM_Objectenvelope() : GM_Envelopecentroid() : DirectPositionconvexHull() : GM_Objectbuffer(radius : Distance) : GM_Object

<<Type>>

0..*

+element

0..*

SC_CRS(from Coordinate Reference Systems)

<<Type>>

0..*

0..1

+object

0..*

+CRS0..1

Coordinate Reference System

GM_Primitive(from Geometric primitive)

<<Type>>GM_Complex

(from Geometric complex)

<<Type>>

GM_Object

Page 15: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

15

convexHull() and buffer()

convexHull() buffer (radius: d)

d

Page 16: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

16GM_Ring<<Type>>

GM_PrimitiveBoundary<<Abstract>>

GM_Boundary(from Geometry root)

<<Abstract>>

GM_ComplexBoundary(from Geometric complex)

<<Type>>

{isCycle() = TRUE}

GM_Point<<Type>>

GM_CurveBoundary<<Type>>

1

0..*

+startPoint

1

0..*

1

0..*

+endPoint

1

0..*

GM_Ring<<Type>>

GM_SurfaceBoundary<<Type>>

0..*

1

+interior

0..*

1

0..1

1

+exterior

0..1

1

GM_Shell<<Type>>

GM_Complex(from Geometric complex)

<<Type>>

GM_Shell<<Type>>

GM_SolidBoundary<<Type>>

0..1

1

+exterior

0..1

1

0..*

1

+interior

0..*

1

GM_CompositeSurface(from Geometric complex)

<<Type>>GM_CompositeCurve(from Geometric complex)

<<Type>>

{isSimple() = TRUE}{isCycle() = TRUE}

Geometry Boundary Data Types

Page 17: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

17

The Number of Exterior of GM_SurfaceBoundary

x

y

x

z

y

2-Dimension plane

1 exterior

3-Dimension surface

0 exterior

Page 18: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

18

GM_Object(from Geometry root)

<<Type>>

GM_Solid<<Type>>

GM_Point<<Type>>

{dimension() >= cotainedPrimitive.dimension()}

GM_Curve<<Type>>

GM_Surface<<Type>>

GM_OrientableCurve<<Type>>

GM_OrientableSurface<<Type>>

GM_OrientablePrimitive<<Type>>GM_Complex

(from Geometric complex)

<<Type>>

GM_Primitive<<Type>>

0..*

1..*

+complex 0..*

+element

1..*Complex

0..*

0..*

+containingPrimitive0..*

Interior to

+containedPrimitive

0..*

GM_Primitive

Page 19: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Geometric Primitive

Page 20: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

20

GM_Primitive<<Type>>

GM_Point

position : DirectPosition

boundary() : NULLbearing(toPoint : GM_Position) : BearingGM_Point(position : GM_Position) : GM_Point

<<Type>>

Bearing

angle[0,1,2] : Angledirection[0..1] : Vector

<<DataType>>

-- at least one value is not NULL{angle.isEmpty{} implies Not direction.isEmpty()}{direction.isEmpty{} implies Not angle.isEmpty()}

GM_Point

Page 21: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

21

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

“+” “-”

“-”

“+”

Page 22: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

22

GM_OrientableSurface

boundary() : GM_SurfaceBoundary

<<Type>>

GM_Primitive<<Type>>

GM_OrientablePrimitive

orientation : Sign

<<Type>>

1

0,2

+primitive1

+proxy

0,2

Oriented

GM_OrientableCurve

boundary() : GM_CurveBoundary...

<<Type>>

GM_Surface<<Type>>

{primitive = self}{orientation = "+"}

GM_Curve<<Type>>

{(orientation = "+") implies (primitive = self )}

{primitive.isTypeOf(GM_Curve)} {primitive.isTypeOf(GM_Surface)}

GM_OrientedPrimitive

Page 23: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

23

GM_Curve

GM_GenericCurve(from Coordinate geometry)

<<Interface>>

GM_CurveSegment<<Abstract>>

GM_Curve

GM_Curve(segment[1..*] : GM_CurveSegment) : GM_Curve

<<Type>>

1..*

0..1

+segment1..*{sequence}

+curve 0..1

Segmentation

GM_OrientableCurve

boundary() : GM_CurveBoundary...

<<Type>>

GM_OrientablePrimitive<<Type>>

GM_Primitive<<Type>>

Page 24: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

24

GM_GenericSurface(from Coordinate geometry)

<<Interface>>

GM_OrientableSurface

boundary() : GM_SurfaceBoundary

<<Type>>

GM_SurfacePatch<<Abstract>>

GM_Surface

GM_Surface(patch[1..*] : GM_SurfacePatch) : GM_SurfaceGM_Surface(bdy : GM_SurfaceBoundary) : GM_Surface

<<Type>>

1..*

0..1

+patch 1..*

+surface 0..1

Segmentation

GM_OrientablePrimitive<<Type>>

GM_Primitive<<Type>>

GM_Surface

Page 25: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

25

GM_Primitive<<Type>>

GM_Solid

boundary() : GM_SolidBoundaryarea() : Areavolume() : VolumeGM_Solid(boundary : GM_SolidBoundary) : GM_Solid

<<Type>>

GM_Solid

Page 26: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Coordinate Geometry

Page 27: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

27

{coordinateReferenceSystem.dimension = coordinate.size = dimension}

if not populated, then the NameSpace of the datatype determines the CRS, e.g. the CRS of the including GM_Object

GM_Envelope

upperCorner : DirectPositionlowerCorner : DirectPosition

<<DataType>>

GM_Position

direct : DirectPositionindirect : GM_PointRef

<<Union>>

GM_Point(from Geometric primitive)

<<Type>>

GM_PointRef<<DataType>>

1

0..*

+point 1

0..*

GM_Position<<Union>>

GM_PointArray<<DataType>>

0..1j : Integer

+column

0..1j : IntegerGM_PointGrid

<<DataType>>

0..1i : Integer

+row

0..1i : Integer

row.column.count is constant

DirectPosition

coordinate : Sequence<Number>/ dimension : Integer

<<DataType>>

SC_CRS(from Coordinate Reference Systems)

<<Type>>

0..*

0..1

+directPosition0..*

+CRS 0..1

Coordinate Reference System

DirectPosition

Page 28: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

28

GM_Arc<<Ty pe>>

GM_ArcStringByBulge<<Ty pe>>

GM_ArcString<<Ty pe>>

GM_CurveInterpolation

lineargeodesiccircularArc3PointscircularArc2PointWithBulgeell ipticalclothoidconicpolynomialSplinecubicSplinerationalSpline

(f rom Geometric primitiv e)

<<CodeList>>

GM_Geodesic<<Ty pe>>

GM_GeodesicString<<Ty pe>>

GM_LineSegment<<Ty pe>>

GM_SplineCurve<<Ty pe>>

GM_Clothoid<<Ty pe>>

GM_Conic<<Ty pe>>

GM_CubicSpline<<Ty pe>>

GM_BSplineCurve<<Ty pe>>

GM_PolynomialSpline<<Ty pe>>

GM_LineString<<Ty pe>>

GM_GenericCurve

startPoint() : DirectPositionendPoint() : DirectPositionparam(s : Distance) : DirectPositiontangent(s : Distance) : VectorstartParam() : DistanceendParam() : DistanceparamForPoint(p : DirectPosition) : Set<Distance>, DirectPositionconstrParam(cp : Real) : DirectPositionstartConstrParam() : RealendConstrParam() : Reallength(point1 : GM_Position, point2 : GM_Position) : Lengthlength(cparam1 : Real, cparam2 : Real) : LengthasLineString(spacing : Distance, offset : Distance) : GM_LineString

<<Interf ace>>

GM_Circle<<Ty pe>>

GM_Bezier<<Ty pe>>

GM_Curve(f rom Geometric primitiv e)

<<Ty pe>>

GM_OffsetCurve<<Ty pe>>

GM_CurveSegment(from Geometric primitive)

<<Abstract>>

1..*

0..1

+segment1..*

{sequence}

+curve0..1

Segmentation

0..*

1

0..*

+baseCurv e

1

Curve segment classes

Page 29: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

29

GM_CurveSegment(from Geometric primitive)

<<Abstract>>

GM_LineSegment

GM_LineSegment(point [2] : GM_Position) : GM_LineSegment...

<<Type>>

GM_GeodesicString

controlPoint : GM_PointArray

GM_GeodesicString(points[2..*] : GM_Position) : GM_GeodesicString...asGM_Geodesic() : Sequence<GM_Geodesic>

<<Type>>

GM_Geodesic

GM_Geodesic(point [2] : GM_Position) : GM_Geodesic...

<<Type>>

GM_LineString

controlPoint : GM_PointArray

GM_LineString(points[2..*] : GM_Position) : GM_LineString...asGM_LineSegment() : Sequence<GM_LineSegment>

<<Type>>

{interpolation = "geodesic"}

--all points in the controlPoint sequence are colinear --all points in the controlPoint sequence lie on the same geodesic

{interpolation = "linear"}

Linear and Geodetic Interpolation

Page 30: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

30

GM_CurveSegment(from Geometric primit ive)

<<Abstract>>

GM_ArcString

numArc : IntegercontrolPoints : GM_PointArray

GM_ArcString(point[3,5,7,..] : GM_Position) : GM_ArcStringasGM_Arc() : Sequence<GM_Arc>

<<Type>>

GM_Arc

GM_Arc(point[3] : GM_Position) : GM_ArcGM_Arc(point[2] : GM_Position, bulge : Real, normal : Vector) : GM_Arccenter() : DirectPositionradius() : DistancestartOfArc() : BearingendOfArc() : Bearing

<<Type>>

GM_ArcStringByBulge

bulge : Sequence<Real>numArc : Integernormal : Sequence<Vector>

GM_ArcStringByBulge(point[2..n] : GM_Position, bulge[1..n] : Real , normal[1..n] : Vector) : GM_ArcStringByBulgeasGM_ArcString() : GM_ArcString

<<Type>>

GM_Circle

GM_Circle(point[3] : GM_Position) : GM_CircleGM_Circle(center : GM_Position, radius : Distance) : GM_Circle

<<Type>>

{interpolation = "circularArc3Points"}{controlPoints.count = 2*numArc +1

{interpolation = "circularArc2PointWithBulge"}{bulge.count = normal.count = numArc}

-- all points in the controlPoint sequence are on the same circle

-- the first and last points in the controlPoint sequence are the same

GM_ArcByBulge

GM_ArcByBulge(point[2] : GM_Position, bulge : Real, normal : Vector) : GM_ArcByBulge

<<Type>>

-- all arc are on the sa...

Arcs

Page 31: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

31

GM_AffinePlacement

location : GM_PositionrefDirection[1..*] : Vector

inDimension() : IntegeroutDimesion() : Integertransform(in : Vector) : Vector

<<Type>>

GM_Placement

inDimension() : IntegeroutDimesion() : Integertransform(in : Vector) : Vector

<<Interface>>

GM_Conic

position : GM_AffinePlacementshifted : Booleaneccentricity : RealsemiLatusRectum : RealstartConstrParam : RealendConstrParam : Real

<<Type>>

GM_CurveSegment(from Geometric primitive)

<<Abstract>>

{interpolation = "conic"} {refDirection->dimension = outDimension}{refDirection.count = inDimension}

Conics and placements

Page 32: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

32

GM_SplineCurveForm

polylineFormcircularArcellipticArcparabolicArchyperbolicArc

<<CodeList>>GM_KnotType

uniformquasiUniformpiecewiseBezier...

<<CodeList>>

GM_Knot

value : Realmultiplicity : Integer...weight : Real

<<DataType>>

GM_SplineCurve

degree : Integerknot : Sequence<GM_Knot>controlPoints : GM_PointArray...

<<Type>>GM_PolynomialSpline

vectorAtStart : Sequence<Vector>...vectorAtEnd : Sequence<Vector>

<<Type>>GM_CubicSpline

<<Type>>

GM_BSplineCurve

curveForm[0..1] : GM_SplineCurveFormknotSpec[0..1] : GM_KnotTypeisPolynomial : Boolean

GM_BSplineCurve(deg : Integer, pts : GM_PointArray, k[0,1] : Sequence<GM_Knot>, ks[0,1] : GM_KnotType) : GM_BSplineCurve...

<<Type>>

GM_Clothoid

refLocation : GM_AffinePlacement...scaleFactor : NumberstartParameter : RealendParameter : Real

<<Type>>

{degree > 0}{interpolation = "polynomialSpline"}{vectorAtEnd.count = vectorAtStart.count...

{degree = 3}{interpolation = "cubicSpline"}

GM_CurveSegment(from Geometric primitive)

<<Abstract>>

GM_OffsetCurve

distance : LengthrefDirection[0..1] : Vector...

<<Type>>

1

0..*

+baseCurve1

0..*

{interpolation = clothoid}

{(interpolation = "polynomialSpline") OR (interpolation = "rationalSpline)}

GM_Bezier<<Type>>

{degree = controlPoint.count -1}{interpolation = "polynomial"}

Spline and specialty curves

Page 33: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

33

GM_SurfaceInterpolation

noneplanarsphericalellipticalconictinparametricCurvepolynomialSplinerationalSplinetriangulatedSpline

(from Geometric primitive)

<<CodeList>>

GM_GriddedSurface<<Type>>

GM_BilinearGrid<<Type>>

GM_BicubicGrid<<Type>>

GM_ParametricCurveSurface<<Type>>

GM_Cylinder<<Type>>

GM_Cone<<Type>>

GM_Sphere<<Type>>

GM_Tin<<Type>>

GM_BSplineSurface<<Type>>

GM_TriangulatedSurface<<Type>>

GM_Triangle<<Type>>

GM_GenericSurfaceupNormal(point : DirectPosition) : Vectorperimeter() : Lengtharea() : Area

<<Interface>>

GM_Surface(from Geometric primitive)

<<Type>>

GM_SurfacePatch

interpolation : GM_SurfaceInterpolation = "planar"numDerivativesOnBoundary[0..1] : Integer = 0

boundary() : GM_SurfaceBoundary

(from Geometric primitive)

<<Abstract>>

GM_PolyhedralSurface<<Type>>

GM_Polygon<<Type>>

Surface patches

Page 34: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

34

GM_PolyhedralSurface

GM_PolyhedralSurface(tiles[1..*] : GM_Polygon) : GM_PolyhedralSurface

<<Type>>

GM_Polygon

boundary : GM_SurfaceBoundaryspanningSurface[0..1] : GM_Surface

GM_Polygon(boundary : GM_SurfaceBoundary) : GM_PolygonGM_Polygon(boundary : GM_SurfaceBoundary, spanSurf : GM_Surface) : GM_Polygon

<<Type>>

0..1 1..*

+surface

0..1

+patch

1..*Segmentation

GM_TriangulatedSurface<<Type>>

GM_Triangle

corners[3] : GM_Position

<<Type>>0..1 1..*

+surface

0..1

+patch

1..*Segmentation

-- the spanni...

GM_Tin

stopLines : Set<GM_LineString>breakLines : Set<GM_LineString>maxLength : DistancecontrolPoint[3..*] : GM_Position

GM_Tin(post : Set<GM_Position>, stopLines : Set<GM_LineString>, breakLines : Set<GM_LineString>, maxLength : Number) : GM_Tin

<<Type>>

GM_SurfacePatch

interpolation : GM_SurfaceInterpolation = "planar"numDerivativesOnBoundary[0..1] : Integer = 0

boundary() : GM_SurfaceBoundary

(from Geometric primitive)

<<Abstract>>

GM_Surface

GM_Surface(patch[1..*] : GM_SurfacePatch) : GM_SurfaceGM_Surface(bdy : GM_SurfaceBoundary) : GM_Surface

(from Geometric primitive)

<<Type>>

1..*0..1

+patch

1..*

+surface

0..1

Segmentation

subset

subset

Polygonal surface

Page 35: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

35

TIN construction

Page 36: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

36

GM_GriddedSurface

controlPoint : GM_PointGrid/ rows : Integer/ columns : Integer

<<Type>>

GM_BilinearGrid<<Type>>

GM_BicubicGrid

horiVectorAtStart : Sequence<Vector>horiVectorAtEnd : Sequence<Vector>vertVectorAtStart : Sequence<Vector>vertVectorAtEnd : Sequence<Vector>

<<Type>>

GM_Cyl inder<<Type>>

GM_Cone<<Type>>

GM_Sphere<<Type>>

GM_BSplineSurface

degree[1,2] : Integerknot[2] : Sequence<GM_Knot>knotSpec : GM_KnotTypesurfaceForm : GM_BSplineSurfaceFormisPolynomial : Boolean

GM_BSplineSurface(pts : GM_PointGrid, deg[1,2] : Integer, k[0,2] : Sequence<GM_Knot>, ks[0,1] : GM_KnotType) : GM_BSpl ineSurface

<<Type>>

GM_Knot

value : Realmultipl ici ty : Integerweight : Real

<<DataType>>

GM_BSplineSurfaceForm

planarcyl indricalconicalsphericaltoroidalunspecified

<<CodeList>>

{horizontalCurveType = verticalCurveType = "l inear"

{horizontalCurveType = verticalCurveType = "cubicSpl ine"}{numDerivativesOnBoundary = 2}

{horizontalCurveType = "conic"}{verticalCurveType = "linear"}

{horizontalCurveType = " conic"}{verticalCurveType = "linear"}

{horizontalCurveType = "circularArc3Point...

{horizontalCurveType = " polynomialSpine" OR horizontalCurveType = "rationalSpine" }{ verticalCurveType = " polynomialSpine" OR verticalCurveType = "rationalSpine" }

GM_ParametricCurveSurface

horizontalCurveType : GM_CurveInterpolationverticalCurveType : GM_CurveInterpolation

horizontalCurve(t : Real) : GM_CurveverticalCurve(s : Real) : GM_Curvesurface(s : Real, t : Real) : DirectPosition

<<Type>>

{interpolation = " parametricCurve"}

GM_ParmetricCurveSurface and its subtypes

Page 37: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Geometric AggregateGeometric Complex

Page 38: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

38

GM_MultiPrimitive<<Type>>

GM_MultiCurve

/ length : Length

<<Type>>GM_MultiSurface

/ area : Area/ perimeter : Length

<<Type>>

GM_MultiPoint

/ position : Set<DirectPosition>

<<Type>>GM_MultiSolid

/ volume : Volume/ area : Area

<<Type>>

GM_Object(from Geometry root)

<<Type>>

{element.subTypeOf(GM_Point)}

{element.subTypeOf(GM_OrientableCurve)}

{element.subTypeOf(GM_OrientableSurface)}

{element.subTypeOf(GM_Solid)}

{elements.subTypeOf(GM_Primitive)}

GM_Object(from Geometry root)

<<Type>>GM_Aggregate

fromSet(set : Set<GM_Object>) : GM_Aggregate

<<Type>>

0..*

+element

0..*

GM_Aggregate

Page 39: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

39

--All primitives in the generator are in the complex (as a set of primitives){Set::element->includesAll(generator)}

-- a complex is closed under the boundary operation {subComplex includes boundary()}GM_Object

(from Geometry root)

<<Type>>

GM_Composite<<Type>>

GM_Complex

isMaximal() : Boolean

<<Type>>

0..*

0..*

+subComplex0..*

Contains

+superComplex0..*

GM_Primitive(from Geometric primitive)

<<Type>>

1..*0..*

+generator

1..*

+composite

0..*Composition

0..*

1..*

+complex0..*

+element1..*

Complex

subset

GM_Complex

Page 40: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

40

GM_Solid(from Geometric primitive)

<<Type>>

GM_CompositeSolid<<Type>>

1..*

0..*

+generator

1..*

+composite

0..*

Composition

GM_CompositePoint<<Type>>

GM_Point(from Geometric primitive)

<<Type>>

0..*

1

+composite

0..*

+generator

1

Composition

GM_OrientableSurface(from Geometric primitive)

<<Type>>

GM_CompositeSurface<<Type>>

1..*

0..*

+generator

1..*

+composite

0..*

Composition

GM_CompositeCurve<<Type>>

GM_OrientableCurve(from Geometric primitive)

<<Type>>

0..*

1..*

+composite

0..*

+generator

1..*

{sequence}

Composition

{dimension() = generator.dimension()}GM_Complex<<Type>>

GM_Composite<<Type>>

GM_Primitive(from Geometric primi tive)

<<Type>>

0..*

1..*+composite

0..*

+generator1..*Composition

CM_Composite

Page 41: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Topology

Page 42: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

42

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

Page 43: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

43

Topology root<<Leaf>>

+ TP_Object

Topological primitive<<Leaf>>

+ 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

Topological Complex<<Leaf>>

+ TP_Complex

Topology packages

Page 44: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

44

TP_Expression<<DataType>>

TP_Object<<Interface>>

TP_DirectedNode<<Type>>

TP_Edge<<Type>>

TP_Node<<Type>>

TP_DirectedEdge<<Type>>

TP_Face<<Type>>

TP_DirectedSolid<<Type>>

TP_Solid<<Type>>

TP_DirectedFace<<Type>>

TP_DirectedTopo<<Type>>

TP_Primitive<<Type>>

TP_Complex<<Type>>

1..* 1..*

+element

1..*

+complex

1..*

Complex

Topological class diagram

Page 45: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

45

TP_Object(from Topology root)

<<Interface>>

{geometry.complex -> includesAll complex.geometry}

GM_Object(from Geometry root)

<<Type>>

TP_Primitive(from Topological primitive)

<<Type>>TP_Complex

(from Topological Complex)

<<Type>>

1..*

1..*

+superComplex1..*

/Contains

+subComplex1..*1..* 1..*

+element

1..*

+complex1..*Complex

GM_Primitive(from Geometric primitive)

<<Type>>

0..*

0..1

+topology 0..*

+geometry0..1

Realization

GM_Complex(from Geometric complex)

<<Type>> 0..*

0..*

+subComplex0..* Contains

+superComplex

0..*

0..1

0..1

+topology0..1

+geometry 0..1

Realization

1..*

0..*+element

1..* +complex

0..*

Complex

Relation between geometry and topology

Page 46: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

46

{boundary().dimension() = dimension() - 1}

TP_Object

dimension() : Integerboundary() : TP_BoundarycoBoundary() : Set<TP_DirectedTopo>interior() : Set<TP_Primitive>closure() : Set<TP_Primitive>exterior() : Set<TP_Primitive>maximalComplex() : TP_Complex

<<Interface>>

TP_Complex(from Topological Complex)

<<Type>>TP_Primitive

(from Topological primi tive)

<<Type>>

TP_Object

Page 47: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

47

TP_DirectedSolid<<Type>>

TP_Solid<<Type>> 1

2+topo

1 +proxy

2

Center

TP_DirectedFace<<Type>>

1..*

0..22

+boundary1..*

+primitive

0..22

Boundary

TP_Face<<Type>>

2

1 +proxy

2+topo

1Center

TP_DirectedEdge<<Type>>

1..*

0..*

+boundary1..*

+primitive0..*

Boundary

TP_Node<<Type>>

TP_Edge<<Type>>

2

1 +proxy

2+topo

1 Center

TP_DirectedNode<<Type>>

2

1 +proxy

2+topo

1Center

0..*

2

+primitive0..*

+boundary

2Boundary

TP_DirectedNode<<Type>>

TP_Node<<Type>> 2

1 +proxy

2+topo

1

Center

TP_DirectedEdge<<Type>>

1

0..*

+hub1

+spoke0..*

CoBoundary

TP_Edge<<Type>> 2

1 +proxy

2+topo

1

Center

TP_Solid<<Type>>

TP_DirectedFace<<Type>>

0..*

1..*

+spoke

0..*

{CircularSequence}

+hub1..*

CoBoundary

TP_DirectedSolid<<Type>>

1

2+topo

1 +proxy

2Center

TP_Face<<Type>> 2

1 +proxy

2+topo

1

Center

0..22

1..*

+spoke

0..22

+hub1..*

CoBoundary

Boundary and coboundary operation

Page 48: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

48

TP_PrimitiveBoundary<<DataType>>

TP_FaceBoundary

exterior[0..1] : TP_Ringinterior[0..*] : TP_Ring

<<DataType>>TP_SolidBoundary

exterior[0..1] : TP_Shellinterior[0..*] : TP_Shell

<<DataType>>

TP_Shell<<DataType>>

TP_Ring<<DataType>>

TP_EdgeBoundary

startNode : TP_DirectedNodeendNode : TP_DirectedNode

<<DataType>>

TP_Boundary<<DataType>>

TP_ComplexBoundary<<DataType>>

TP_Expression<<DataType>>

{isCycle()} {isCycle()} {isSimple()}{isConnected()} {support().dimension() = 1}

{isCycle()} {isSimple()}{isConnected()} {support().dimension() = 2}

{support().dimension() = 0} {support().dimension() = 1} {support().dimension() = 2}

Boundary relation data types

Page 49: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

49

-- topological dimension agrees with geometric dimension{geometry->forAll(geometry.dimension() = dimension())}-- basic geometric operation are preserved{complex.geometry->forAll(element->includes(geometry))}{boundary().asTP_Primitive().geometry = geometry.boundary()}-- isolated topology is codimension at least 2{coincidentSubelement.dimension() < dimension() -1}-- a primitive is its own positive TP_DirectedTopo{asTP_DirectedTopo(+) = self}

TP_Object(from Topology root)

<<Interface>>GM_Primitive

(from Geometric primitive)

<<Type>>

TP_Complex(from Topological Complex)

<<Type>>TP_Primitive

asTP_DirectedTopo(orientation : Sign) : TP_DirectedTopodimension() : Integerboundary() : TP_BoundarycoBoundary() : Set<TP_DirectedTopo>interior() : Set<TP_Primitive>closure() : Set<TP_Primitive>exterior() : Set<TP_Primitive>maximalComplex() : TP_Complex

<<Type>>

0..1

0..*

+geometry

0..1

+topology

0..*

Realization

0..*0..1 +isolated0..*

Isolated In

+container0..11..*

1..*

+element 1..*

+complex 1..*

Complex

1

+maximalComplex

1

TP_Primitive

Page 50: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

50

TP_DirectedTopo subclasses

TP_Solid<<Type>>

TP_DirectedSolid<<Type>>

1

2

+topo1

+proxy 2

Center

TP_DirectedFace<<Type>>

TP_Face<<Type>>

2

1

+proxy 2

+topo1

Center

TP_DirectedEdge<<Type>>

TP_Edge<<Type>>

2

1

+proxy 2

+topo1

Center

TP_DirectedNode<<Type>>

TP_Node<<Type>>

2

1

+proxy 2

+topo1

Center

{orientation = "+" implies topo = self}

TP_Primitive<<Type>>

TP_DirectedTopo<<Type>>

1

2

+topo 1

+proxy 2

Center

{primitive = self}{orientation = "+"}

TP_DirectedTopo

orientation : Sign = "+"

negate() : TP_DirectedTopoasTP_Expression() : TP_Expression

<<Type>>

Page 51: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

51

TP_Primitive<<Type>>

TP_DirectedTopo<<Type>>

1

2

+topo1

+proxy

2

Center

TP_DirectedNode<<Type>>

TP_Node

boundary() : NULL

<<Type>>

1

2

+topo

1

+proxy

2

Center

TP_DirectedEdge<<Type>>

1

0..*

+hub1

+spoke

0..*CoBoundary

subset

TP_Node

Page 52: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

52

TP_Primitive<<Type>>

TP_DirectedTopo<<Type>>

1

2

+topo1

+proxy

2

Center

TP_DirectedFace<<Type>>

TP_DirectedNode<<Type>>

TP_Edge

boundary() : TP_EdgeBoundary...

<<Type>>

1..*

0..*

+hub 1..*

+spoke

0..*

{CircularSequence}CoBoundary

2

0..*

+boundary2

+primitive

0..* Boundary

TP_DirectedEdge<<Type>>

1

2

+topo1

+proxy2

Center

subset

TP_Edge

Page 53: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

53

TP_Primitive<<Type>>

TP_DirectedTopo<<Type>>

1

2

+topo1

+proxy

2Center

TP_DirectedSolid<<Type>>

TP_DirectedFace<<Type>>

TP_Face<<Type>>

1..*

0..2

+hub 1..*

+spoke

0..2CoBoundary

1

2

+topo1

+proxy

2

Center

TP_DirectedEdge<<Type>>

0..* 1..*+primitive

0..*+boundary 1..*

Boundary

subset

TP_Face

Page 54: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

54

TP_Primitive<<Type>>

TP_DirectedTopo<<Type>>

1

2

+topo1

+proxy

2Center

TP_DirectedSolid<<Type>>

TP_Solid

boundary() : TP_SolidBoundary

<<Type>>

2

1

+proxy

2

+topo1

Center

TP_DirectedFace<<Type>>

0..2

1..*

+primitive

0..2

+boundary1..*

Boundary

subset

TP_Solid

Page 55: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

55

TP_Expression

TP_Expression(dt : TP_DirectedTopo) : TP_ExpressionTP_Expression(sdt : Set<TP_DirectedTopo>) : TP_Expressionplus(s : TP_Expression) : TP_Expressionminus(s : TP_Expression) : TP_Expressionnegate() : TP_ExpressionisZero() : BooleanisCycle() : Booleanboundary() : TP_ExpressioncoBoundary() : TP_Expressionequals(s : TP_Expression) : Booleansupport() : TP_Complex

<<DataType>>

TP_DirectedTopo

orientation : Sign = "+"

negate() : TP_DirectedTopoasTP_Expression() : TP_Expression

<<Type>>

TP_ExpressionTerm

coefficient : Integer = 1

<<DataType>>

1

0..*

+expression

1

+term0..*

Terms

1 0..*

+variable

1

+term

0..*Variable

TP_Expression

Page 56: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

56

TP_Object(from Topology root)

<<Interface>>

-- the maximalComplex contains this complex{superComplex->contains(maximalComplex)}-- a maximal complex is contained only in itself{(self = maximalComplex) implies (superComplex = {self}) }{isMaximal() implies (self = maximalComplex)}

TP_Primitive(from Topological primitive)

<<Type>>

GM_Complex(from Geometric complex)

<<Type>>

TP_Complex

isMaximal() : BooleanisConnected() : Booleanboundary() : TP_ComplexBoundaryTP_Complex(GC : GM_Complex) : TP_Complexdimension() : IntegercoBoundary() : Set<TP_DirectedTopo>interior() : Set<TP_Primitive>closure() : Set<TP_Primitive>exterior() : Set<TP_Primitive>maximalComplex() : TP_Complex

<<Type>>

1..* 1..*+superComplex1..*

/Contains

+subComplex1..*

1..* 1..*

+element

1..*

+complex

1..*Complex

0..10..1

+topology

0..1

+geometry

0..1 Realization

1 +maximalComplex1

TP_Complex

Page 57: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Summary

Page 58: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

58

Geometric primitive<<Leaf>>

(from Geometry)Geometric complex

<<Leaf>>

(from Geometry)

Coordinate geometry<<Leaf>>

(from Geometry)

Geometry root<<Leaf>>

(from Geometry)Geometric aggregates

<<Leaf>>

(from Geometry)

Topological primitive<<Leaf>>

(from Topology)

Topology root<<Leaf>>

(from Topology)

Topological Complex<<Leaf>>

(from Topology)

Geometry and Topology Packages

Page 59: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

59

GM_Aggregate<<Type>>

GM_Object<<Type>>

GM_MultiPoint<<Type>>

GM_MultiCurve<<Type>>

GM_MultiSurface<<Type>>

GM_MultiSolid<<Type>>

GM_MultiPrimitive<<Type>>

GM_Surface<<Type>>

GM_Curve<<Type>>

GM_CompositePoint<<Type>>

GM_Point<<Type>>

GM_CompositeSolid<<Type>>

GM_Solid<<Type>>

GM_OrientablePrimitive(from Geometric primitive)

<<Type>>

GM_Complex<<Type>>

GM_Composite<<Type>>

GM_Primitive<<Type>>

GM_OrientableCurve(f rom Geometric primitiv e)

<<Type>>GM_CompositeCurve

<<Type>>

GM_CompositeSurface<<Type>>

GM_OrientableSurface(f rom Geometric primitiv e)

<<Type>>

Geometry basic classes

Page 60: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

60GM_Ring<<Type>>

GM_PrimitiveBoundary<<Abstract>>

GM_Boundary(from Geometry root)

<<Abstract>>

GM_ComplexBoundary(from Geometric complex)

<<Type>>

{isCycle() = TRUE}

GM_Point<<Type>>

GM_CurveBoundary<<Type>>

1

0..*

+startPoint

1

0..*

1

0..*

+endPoint

1

0..*

GM_Ring<<Type>>

GM_SurfaceBoundary<<Type>>

0..*

1

+interior

0..*

1

0..1

1

+exterior

0..1

1

GM_Shell<<Type>>

GM_Complex(from Geometric complex)

<<Type>>

GM_Shell<<Type>>

GM_SolidBoundary<<Type>>

0..1

1

+exterior

0..1

1

0..*

1

+interior

0..*

1

GM_CompositeSurface(from Geometric complex)

<<Type>>GM_CompositeCurve(from Geometric complex)

<<Type>>

{isSimple() = TRUE}{isCycle() = TRUE}

Geometry Boundary Data Types

Page 61: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

61

TP_Expression<<DataType>>

TP_Object<<Interface>>

TP_DirectedNode<<Type>>

TP_Edge<<Type>>

TP_Node<<Type>>

TP_DirectedEdge<<Type>>

TP_Face<<Type>>

TP_DirectedSolid<<Type>>

TP_Solid<<Type>>

TP_DirectedFace<<Type>>

TP_DirectedTopo<<Type>>

TP_Primitive<<Type>>

TP_Complex<<Type>>

1..* 1..*

+element

1..*

+complex

1..*

Complex

Topological class diagram

Page 62: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

62

TP_Object(from Topology root)

<<Interface>>

{geometry.complex -> includesAll complex.geometry}

GM_Object(from Geometry root)

<<Type>>

TP_Primitive(from Topological primitive)

<<Type>>TP_Complex

(from Topological Complex)

<<Type>>

1..*

1..*

+superComplex1..*

/Contains

+subComplex1..*1..* 1..*

+element

1..*

+complex1..*Complex

GM_Primitive(from Geometric primitive)

<<Type>>

0..*

0..1

+topology 0..*

+geometry0..1

Realization

GM_Complex(from Geometric complex)

<<Type>> 0..*

0..*

+subComplex0..* Contains

+superComplex

0..*

0..1

0..1

+topology0..1

+geometry 0..1

Realization

1..*

0..*+element

1..* +complex

0..*

Complex

Relation between geometry and topology

Page 63: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

Spatial Examples from ISO19107

Page 64: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

64

Geometric objects in a 2-D CRS

Page 65: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

65

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 > >

Page 66: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

66

CS1 = GM_CurveSegment <controlPoint = <P1,P2>, interpolation = “linear” >CS2 = GM_CurveSegment <controlPoint = <P2,P3 >, interpolation = “linear” >CS3 = GM_CurveSegment <controlPoint = <P2,(6,5),(6,2),P3>, interpolation = “linear” >CS4 = GM_CurveSegment <controlPoint = <P1,(1,2), P3> , interpolation = “linear” >CS5 = GM_CurveSegment <controlPoint = <P5,(1.9,4.25), (2,4)> interpolation = “arc”>CS6 = GM_CurveSegment <controlPoint = <(2,4),P6>, interpolation = “linear” >CS7 = GM_CurveSegment <controlPoint = <P7,(4.25,4),(4.25,3.25),(5,3.25),P7 >,interpolation =“linear”>

Page 67: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

67

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>

Page 68: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

68

S0 = GM_Surface patch = <GM_Polygon interior = << C1, C3, -C4 >> >S1 = GM_Surface patch = <GM_Polygon exterior = < C4, -C2, -C1 >, interior = << C5, -C5 >> >S2 = GM_Surface patch = <GM_Polygon exterior = < -C3, C2 >,interior = << -C6 >> >S3 = GM_Surface patch = <GM_Polygon exterior = < C6 > >

Page 69: ISO19107 Geographic information – Spatial schema Pusan National University Dept. of Computer Engineering Spatiotemporal Database Lab. Joon-Seok Kim joonseok@pnu.edu.

69

Lake = AreaFeature featureType=“Hydrography::WaterBody”, extent = S3RoadCenterline = LineFeature featureType = “Transportation::Road”, centerline = C2RoadArea = RoadCenterLine.centerline.buffer < distance = 10m >RoadExtent = AreaFeature featureType = “LandCover::Road”, extent = RoadAreaRoadInstance = ComplexFeature featureType = “LandUse::Road”,featureComponents = {RoadCenterline, RoadArea }Trail = LineFeature featureType = “CulturalFacilities::HikingTrail”, centerline = C5School = PointFeature featureType = “CulturalFacilities::School”, Location = P4