Introducing the Model-Driven Approach for GIS Data Exchange
At the FME User Conference 2023 in Vancouver, Jeff Konnen presented a breakthrough model-driven approach that enables efficient data exchange between various GIS software packages. This technique employs a neutral language, INTERLIS, to define data models outlining tables, constraints, and relationships. It allows users to implement their own interfaces while adhering to a standardized data exchange format, improving interoperability and easing data sharing among systems. Join us in advancing geospatial data collaboration and discover practical examples demonstrating this innovative methodology.
Introducing the Model-Driven Approach for GIS Data Exchange
E N D
Presentation Transcript
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