Upload
stewart-clark
View
220
Download
3
Embed Size (px)
Citation preview
Configuration by conceptual modeling
C-plan ag
Toni Fankhauser, CTO
Authorized Resellers
Development Partner
TOPOBASE Partners in Europe
C-plan Revenue
Our customers:Government agencies, both central and localEngineering and/or surveying companiesUtilities (water, electrical, district heat)Total of more than 700 customers in Europe
Customer Focus
Where’s the GIS ?
Data AcquisitionData Acquisition
TOPOBASE™ Basic Edit
Autodesk Map
Viewing / AnalyzingViewing / Analyzing
TOPOBASE™ Generic WEB
ArcView, Geomedia, Mapinfo
Autodesk MapGuide
IntegrationIntegration
TOPOBASE™ Im / Export, SAP Integration
More than 50 Interfaces
ManagementManagementTOPOBASE™ AdministratorOracle Enterprise Tools
Open Geodata Server
TOPOBASE™ Application
TOPOBASETM Architecture
PNG, SVG, JPEG, TIFF
The GIS-Dataserver
Server-Components
ORACLE 9i with Spatial
TOPOBASE Structure
-Meta-Data
-Table_Structure
-Indexes, Views
-Rulebase
-Display_Models
-Application-Settings
-Language-Support
TOPOLOGY
-AREA
-Network
Long Transactions
- History
- Dynamic Views
Point
Linestring
Arc
Compound Line String
Polygon
Polygon with hole(s)
R-treeIndex
A
B
A
B
AB
A
B
A
B
AB
ContainsInside
CoversCovered by
Touch
OverlapBoundaries Intersect
OverlapBoundaries Disjoint
Equal
A B
Workspace B
Workspace A
Production Data
FixedVersion
CurrentVersion
00 1101 11 001
01 1001 00 001
11 0001 00 100
…
…
History
HistoricalView
Merge
Rollback
Synchronize
Undo
+ToSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool) : string+ToSqlString(in noDimensions : int, in srid : uint) : string+ToSqlString(in noDimensions : int) : string+ToSqlString() : string
Geometry
+ToSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool) : string+ToSqlString(in noDimensions : int, in srid : uint) : string+ToSqlString(in noDimensions : int) : string+ToSqlString() : string+Point()+Point(in x : double, in y : double)+Point(in x : double, in y : double, in z : double)+Point(in x : double, in y : double, in z : double, in attributes : int)+X() : double+Y() : double+Z() : double+Attributes() : int+implicit operator(in pt : Point) : Point3D+Equals(in obj : object) : bool+GetHashCode() : int+operator ==(in p1 : Point, in p2 : Point) : bool+operator !=(in pt1 : Point, in pt2 : Point) : bool
-_x : double-_y : double-_z : double-_attributes : int
Point
+ToSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool) : string+ToSqlString(in noDimensions : int, in srid : uint) : string+ToSqlString(in noDimensions : int) : string+ToSqlString() : string+LinePoint()+LinePoint(in x : double, in y : double)+LinePoint(in x : double, in y : double, in z : double)+LinePoint(in x : double, in y : double, in interpretation : Interpretations)+LinePoint(in x : double, in y : double, in z : double, in interpretation : Interpretations)+LinePoint(in x : double, in y : double, in z : double, in attributes : int, in interpretation : Interpretations)+Interpretation() : Interpretations
-_interpretation : Interpretations
LinePoint
+ToSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool) : string+ToSqlString(in noDimensions : int, in srid : uint) : string+ToSqlString(in noDimensions : int) : string+ToSqlString() : string+LineString()+LineString(in vertices : LinePoint[])+LineString(in vertices : ArrayList)+LineString(in noDimensions : int, in ordinates : double[], in interpretations : short[])+StartPoint() : LinePoint+EndPoint() : LinePoint+Length() : double+HasArcs() : bool+TestIntegrity()+AddRange(in lpArr : LinePoint[])+RemoveRange(in index : int, in count : int)+RadiusAt(in index : int) : double+ToArray() : LinePoint[]+ToPolygon() : Polygon#GetSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool, in isOuter : bool) : string+RemoveAt(in index : int)+Insert(in index : int, in what : object)+Insert(in index : int, in what : LinePoint)+Remove(in what : object)+Remove(in what : LinePoint)+Contains(in what : object) : bool+Contains(in what : LinePoint) : bool+Clear()+IndexOf(in what : object) : int+IndexOf(in what : LinePoint) : int+Add(in what : object) : int+Add(in what : LinePoint) : int+Reverse()+Reverse(in index : int, in count : int)+IsReadOnly() : bool-IList.this(in index : int) : object+this(in index : int) : LinePoint+IsFixedSize() : bool+CopyTo(in array : Array, in index : int)+CopyTo(in lpArray : LinePoint[], in index : int)+IsSynchronized() : bool+Count() : int+SyncRoot() : object+GetEnumerator() : IEnumerator
-_vertices : ArrayList
LineString
+ToSqlString(in noDimensions : int, in srid : uint, in sqlLoader : bool) : string+ToSqlString(in noDimensions : int, in srid : uint) : string+ToSqlString(in noDimensions : int) : string+ToSqlString() : string+TestIntegrity()+Polygon()+Polygon(in vertices : LinePoint[])+Polygon(in vertices : ArrayList)+Polygon(in lineString : LineString)+IsClosed() : bool+IsClockwise() : bool+CrossesItself() : bool+Area() : double
Polygon
Dynamic Data-Model
Datastructure and Applications generated from Interface-structure- INTERLIS (.ILI)- GML 3- UML- Other modelling Tools
AdvantagesFlexible Data-ModelCan be extendet very simple (by customer)RAD (rapid application development)
-Topology-History (long Transactions)-Specific Feature-Types
-3D-Splines-Raster
-Different coordinate systems-Different languages-Display-Model
RisksWe need well-defined interfaceToo many different modelsData modeling is not easyWhat can be done (not done) with the interface
Make ONE specification (data-model, interface)
Use newest technology
Create nice data-models– Do not change it too often
Work together with GIS-developers– Think about different GIS-implementations
Force people to use this only data model
My wishes….
Thank you very much !