Import use cases
- Import in project as data item; import a (complete) Sobek 2.11 MDB
- user selects import from file menu
- user selects data type from available types
- user specifies data source
- user selects (parts of) the data geographically or with time interval
- (selected) data is imported into project and added to project as data item.
- Import for specific/selected data item
for selected object in project
or selected object on map ...- user specifies data source
- user selects (parts of) the data geographically or with time interval
- (selected) data is imported into project and added to project as data item.
Import existing Sobek model database (MDB)
Version of Sobek MDB that will be imnported by plugin is set to: 2.11
and the following objects are read:
- node
- branch
- cross section
- friction
- boundary conditions
- laterals
Conv_sbk is existing software that can import various formats; reuse is a consideration.
After conferring with knowledgeable people, reviewing the source the following arguments against reuse of the Conv_sbk source were found:
- dependency to Netter
- quality of coding
- end of life of VB6
- procedural design (not OO)
- necessity to inflict serious adaptions to source for mapping to DelftShell data model
- only a fraction of the source code is of interest, namely the parts that actually read and hence have implicit knowledge of the structure of data
Hence it is decided to reimplement the 'readers' in .NET. When applicable implicit knowledge about structure from the Conv_sbk is reused.
The the tool of choice for implementing readers is LEX; contrary to existing reader implementations, with LEX we can define readers in a language independent, reusable industry standard notation.
A C# version of LEX is found in the free product GPLEX. Some first test in DS development environment were successfull.
ANTLR might be an alternative to GPLEX. ANTLR offers both a lexical and syntatical analyzer where GPLEX can only build a lexical analyzer.
TODO
- choose between GPLEX and ANTLR:
ANTLR is a more complex environment. It is able to generate both lexical and syntatical automatons; we only need the lexer. At this early stage gplex seems more lightweight and does not carry in any redundant component, does what we want from it, is fitted into the dev and build environment.
The approach is to start with implementing a full Sobek 2.11 MDB import in a time period of 20 days (40 fpe). After this period the experience will be applied to estimate the remainder of this sub project.
node
branch
Cross section
Cross Section types in Sobek
0. tabulated 1. trapezoidal 2. open circle 3. sedredge (2D morfology) 4. closed circle 5. 6. egg shaped (width) 7. egg shaped 2 (radius) not implemented 8. closed rectangular not implemented 9. 10. yz table 11. asymmetrical trapeziodal
After discussion with Edward: Initially
- Tabulated/WH
- YZ
friction
boundary conditions
laterals
Free format import
This comes second in priority.
Free format import should comprise a wizard like interface in which the structure of the data to be imported is investigated and specified by the user interactively.
Hymos has a import wizard for importing time series:
3rd Party network formats
This comes third in priority. These are the formats currently supported by Sobek.