80 likes | 233 Views
The Model Driven Approach. Jeff Konnen FME User Conference September 22nd Vancouver, BC. The Idea. Exchange Data between several GIS Software Packages (e.g. for cadastral data) Impose the data format and model for data exchange Use a Neutral Language to describe the Data Model
E N D
The Model Driven Approach Jeff Konnen FME User Conference September 22nd Vancouver, BC
The Idea • Exchange Data between several GIS Software Packages (e.g. for cadastral data) • Impose the data format and model for data exchange • Use a Neutral Language to describe the Data Model • Let everyone implement the Data Model like he wants • Let everyone implement its own interface to the mandatory data exchange format http://ilix.inser.ch
INTERLIS – The GeoLanguage • INTERLIS is a data exchange format, allowing you: • To DESCRIBE a data model including • Tables • Constraints • Relationships • Generalization / Polymorphism in a VENDOR – NEUTRAL language • To EXCHANGE data based on this Model http://ilix.inser.ch
INTERLIS - EXAMPLES • DATA MODEL • Object Oriented • Text based description • Can be edited visually with the OSS UML Editor objectOriginType=(AV,BFS,DGN_AG,DGN_BE,DGN_LU,DGN_SO,DGN_VD,DGN_ZH,GG25,GN_BL,LK100,LK200,LK25,LK50,LK500,NDB,Photo,GN25,BWG,Kanton,Ausland,GN200,undefined); gebObject=(Z_Gebaeude,Z_Innenhof,Z_Gasthof,Z_Huette,Z_Kirche,Z_Kuehlturm,Z_Lagertank,Z_Perron,Z_Schiessstand,Z_Schloss,Z_Station,Z_Treibhaus,Z_WBecken,undefined); CLASS geb = ATTRIBUTE ObjectId: MANDATORY INTEGER4; ObjectOrigin: MANDATORY objectOriginType; ObjectVal: MANDATORY gebObject; YearOfChange: MANDATORY Jahr; Geometrie: MANDATORY SURFACE WITH (STRAIGHTS) VERTEX LKoord; END geb; CLASS geb_zentroid = ATTRIBUTE Geometry: MANDATORY LKoord; END geb_zentroid; ASSOCIATION geb_zentroidObjectId = geb_zentroid -- {*} geb_zentroid; ObjectId -- {1} geb; END geb_zentroidObjectId; • DATA • XML DATA <VECTOR25.Strassennetz.str TID="x8335"><ObjectId>8335</ObjectId><ObjectOrigin>12</ObjectOrigin><ObjectVal>6</ObjectVal><YearOfChange>1991</YearOfChange><StradaId></StradaId><Geometrie><POLYLINE><COORD><C1>784946.3</C1><C2>153374.2</C2></COORD><COORD><C1>784946.5</C1><C2>153367.9</C2></COORD><COORD><C1>784950.7</C1><C2>153354.1</C2></COORD><COORD><C1>784955.7</C1><C2>153345.6</C2></COORD><COORD><C1>784960.2</C1><C2>153340.1</C2></COORD></POLYLINE></Geometrie><FromNode REF="x "></FromNode><ToNode REF="x "></ToNode></VECTOR25.Strassennetz.str> <VECTOR25.Strassennetz.str TID="x8336"><ObjectId>8336</ObjectId><ObjectOrigin>12</ObjectOrigin><ObjectVal>9</ObjectVal><YearOfChange>1998</YearOfChange><StradaId></StradaId><Geometrie><POLYLINE><COORD><C1>785603.9</C1><C2>153327.4</C2></COORD><COORD><C1>785611.4</C1><C2>153340.9</C2></COORD><COORD><C1>785621.6</C1><C2>153353.1</C2></COORD><COORD><C1>785639.643</C1><C2>153368.513</C2></COORD></POLYLINE></Geometrie><FromNode REF="x "></FromNode><ToNode REF="x "></ToNode></VECTOR25.Strassennetz.str> <VECTOR25.Strassennetz.str TID="x8337"><ObjectId>8337</ObjectId><ObjectOrigin>12</ObjectOrigin><ObjectVal>10</ObjectVal><YearOfChange>1998</YearOfChange><StradaId></StradaId><Geometrie><POLYLINE><COORD><C1>785808.4</C1><C2>153488.7</C2></COORD><COORD><C1>785787.0</C1><C2>153470.5</C2></COORD><COORD><C1>785766.0</C1><C2>153455.5</C2></COORD><COORD><C1>785751.0</C1><C2>153448.2</C2></COORD><COORD><C1>785744.0</C1><C2>153447.0</C2></COORD><COORD><C1>785735.9</C1><C2>153448.1</C2></COORD><COORD><C1>785686.0</C1><C2>153407.0</C2></COORD><COORD><C1>785669.5</C1><C2>153391.5</C2></COORD><COORD><C1>785663.5</C1><C2>153384.5</C2></COORD><COORD><C1>785658.7</C1><C2>153375.2</C2></COORD><COORD><C1>785651.5</C1><C2>153361.5</C2></COORD><COORD><C1>785646.0</C1><C2>153349.5</C2></COORD><COORD><C1>785630.7</C1><C2>153333.2</C2></COORD><COORD><C1>785615.9</C1><C2>153319.9</C2></COORD></POLYLINE></Geometrie><FromNode REF="x "></FromNode><ToNode REF="x "></ToNode></VECTOR25.Strassennetz.str> http://ilix.inser.ch
Implementing the Model Driven Approach • We implemented the Model Driven Approach for the ESRI Geodatabase: iliX (just as others did for other vendors) • What does it mean? • Generate a Geodatabase Schema based on an INTERLIS Data Model • Containing all the Constraints, Rules … • Generate an INTERLIS-Model based on an existing Geodatabase • AND: Generate FME Files for data exchange between the Geodatabase and INTERLIS http://ilix.inser.ch
The Data Model • In the Geodatabase, the INTERLIS Schema looks like this: http://ilix.inser.ch
The FME Files • FME includes Readers and Writers for the Geodatabase • There exists a free FME Plugin for Reading and Writing INTERLIS Data • During the creation of the geodatabase schema, 4 simple « mapping –tables » are created from the INTERLIS DATAMODEL. • We then programatically generate WORKBENCH-Files based on these mapping-tables allowing the user to exchange data with his geodatabase http://ilix.inser.ch
Conclusion • The Model Driven Approach allows you to efficiently exchange data • FME is the right tool to do the conversion • You can generate schemas and scripts automatically to improve the process • A similar approach could be taken with GML! If you got questions regarding INTERLIS or the generating of Workbench-Files, you can send them to fme@inser.ch http://ilix.inser.ch