[[TOC]] = GSoC 2014 Metadata for GRASS GIS maps and datasets = || Title: || '''Metadata for GRASS GIS maps and datasets'''|| ||Student Name: || Matej Krejci, [http://www.cvut.cz Czech Technical University in Prague]|| ||Organization: || [http://www.osgeo.org OSGeo - Open Source Geospatial Foundation]|| || Mentor Name: || [http://grass.osgeo.org/wiki/User:Landa Martin Landa], [http://grass.osgeo.org/wiki/User:Madi Margherita Di Leo] || || GSoC proposal: || [http://www.google-melange.com/gsoc/proposal/public/google/gsoc2014/krejcmat/5629499534213120 view proposal] || = Motivation = Current GRASS GIS offers just a poor and out-of-date administration of metadata. The goal of this project is to implement administration of metadata according to the standards of ISO 19115, ISO 19139 and to create a graphical user interface which would allow the user to operate with metadata, such as creating, updating, browsing, searching etc. = Timeline = |||| timeline from proposal ||newly proposed timeline|| status|| ||MAY 1- 7 || "Early starts" Study ISO, INSPIRE and FGDC standards || ||+|| ||MAY 7 - 14 || Getting familiar with GRASS GIS modules code. || ||+|| ||MAY 14 - 19 || Design of metadata GRASS library|| design GRASS library (in Python) to read / write metadata based on ISO as flat XML files||+|| ||MAY 19 || Starting GoSC x|| ||+|| ||MAY 19- 25 || Support of different metadata profiles ||design GRASS library (in Python) to read / write metadata based on ISO as flat XML files including profies (XSD validation, Inspire as the show-case)||+|| ||MAY 26 - JUN 16 || "Break"(Prepare for bachelor final exam) ||add support for conversion GRASS (current) metadata files <-> XML ISO metadata ||+|| ||JUN 16 - 24 || Implement basic library model for command line ||design cmd modules for reading and writing ISO-based metadata -> r.info.iso + v.info.iso (including support for conversion GRASS (current) metadata files <-> XML ISO metadata)||+|| ||JUN 24 - 30 || Modules functionality (searching, publishing metadata)|| design GUI for reading and writing ISO-based metadata|||| ||JULY 1 - 7 || Design GUI|| design GUI for reading and writing ISO-based metadata -> g.gui.metadata|||| ||JULY 7 - 14 || Connect GUI library, basic functions|| advanced metadata publishing/searching based on owslib + pycsw|||| ||JULY 14 - 21 || Implementation of search function to GUI ||advanced metadata publishing/searching based on owslib + pycsw|||| ||JULY 21 - 30 || Improve metadata validation using designed GUI ||advanced metadata publishing/searching based on owslib + pycsw -> testing prototype|||| ||AUGUST 1 - 9 || Polishing code ||polishing code|||| ||AUGUST 9 - 18 || Testing and documentation ||testing and documentation|||| ||AUGUST 18 || The end of GSoC ||the end of GSoC|||| = Development = == Dependencies == Current development of metadata management have dependence on external libraries: * OWSLib (no additional dependence), * Jinja templates (suitable to remake) == Architecture == The new designed metadata management in GRASS is based on external python modules without interference to GRASS core. * First step which is partially successful is to create basic modules for exporting ISO based metadata for raster and vector maps. The modules are contented to implemented class which is providing parsing metadata from r.info and v.info. This metadata are unassigned to ISO attributes with using OWSLib. The OWSLib is offering to create instances of ISO element. The instances are suitable to filled in the predefined Jinja xml ISO profile. From this part are created r.info.iso and v.info.iso === r.info.iso and v.info.iso === * The modules are based on the said implementation. * Offers converting metadata from *.info to xml file based on ISO standard * Current available metadata profile for GRASS. * INSPIRE profile, * GRASS BASIC profile - this profile are mainly including available metadata from GRASS. === g.gui.metadata === Current task is to design the GUI interface and the implementation. Below is the first design. Main aggravating factor is the fact that some attributes in ISO can be define multiple times. For the solution is necessary to crate interface for getting information from some source. Currently the easier way is to get information form predefined XML Jinja template. Interface ensure independence between editor and source of informations. This is useful for future development. The editor will support: || version || function || || 1.0 || to implement main window and layout || || || function for browsing maps with using treeCtrl || || || to create xml ISO file (with using v/r.info.iso) || || || interface to get information about ISO attributes || || 1.1 || editing of created xml file with using Jinja templates || || 1.2 || to add multiple values for specific attributes || || 1.3 || validator of inspire xml || || || options for update r/v.support by changed values values in editor. || || 1.4 || multiple metadata editing ( choose maps, chooses attributes with are same for chosen maps. || [[Image(source:/grass/browser/sandbox/krejcmat/pic/diagram.png)]] (scheme of a designed implementation) [[Image(source:/grass/browser/sandbox/krejcmat/pic/prototyp1.png)]] (draft of a GUI editor) [[Image(source:/grass/browser/sandbox/krejcmat/pic/main.png)]] (draft of a GUI for choosing ISO profile or option for just edit xml ) == Weekly reports == === Week 1 (May 23) === studied metadata and tried to find suitable python lib during last three weeks: * studied ISO 19115 and EN ISO 19119 * INSPIRE * be advised to leave out implementation of FGDC - just ISO, INSPIRE * get familiar with OWSLib and pycsw * set pycsw metadata server catalog * handled metadata by OWSLib * spent time with design lib based on automated generation of XML from XSD - failed * tested suitability of generateDS to generate python object from XML scheme (XSD) * designed library for parse GRASS GIS metadata to XML based on md. ISO * parsed metadata from: * r.info * v.info * designed essential metadata profile for raster and vector maps (based on ISO standard) * prepared lib for new update of OWSLib that will be ready during next week. (in contact with author) * created new timeline - main changes: * will create basic metadata management based on creating, editing, validating ISO. (obligatory) * will create advanced management based on client-server with using pycsw. (optional) [http://lists.osgeo.org/pipermail/grass-dev/2014-May/069086.html report email] === Week 2 (May 30) === created cmd modules for writing ISO-based metadata -> r.info.iso + v.info.iso support: * basic grass ISO profile * inspire profile (for subsequent editing in future wxGUI editor) [http://lists.osgeo.org/pipermail/grass-dev/2014-May/069220.html report email] === Week 3 (June 06) === * Consulted design of metadata editor with mentors. * Consulted current implementation of v.info.iso and r.info.iso * Search for alternatives to Jinja templates (current implementation) * Learned basics of wxPython [http://lists.osgeo.org/pipermail/grass-dev/2014-June/069374.html report email]