GsoC2009 CSW proposal
From MapbenderWiki
CSW Client for Mapbender
Introduction
Catalog Services are an integral part of the FOSS-GIS platform, as governed by OGC. A CSW client will benefit Mapbender greatly in it becoming a central node of the ecosystem. The OGC specification clearly specifies the need for Catalog Services, and many catalog products exist, that implement the standards. It is vital for Mapbender to have a efficient mechanism to query these catalogs, and use them for easy layering of WMS data atop other data.
Background
About: I am Mifan Careem. I've been an advocate of F/OSS for 10 years now, and am an active member of the Linux User Group in Sri Lanka. I previously got involved in GSoC in 2006 as a student in my undergraduate year, for the Sahana project, where I built the Sahana GIS subsystem - I worked with OpenLayers and UMN/Mapserver for this. In 2007, I was a GSoC Mentor for Sahana, mentoring 2 applications: GPS support for Sahana, and GIS-Catalog service for Sahana. I am long standing contributor and committer and PMC for the Sahana project, where I lead the GIS framework development of Sahana: the Sahana GIS framework consists of a map-viewer based on OL and uses proj.4, Mapserver and Geoserver - it also contains a simple catalog to select from various data sources. I am currently reading for my post-grad degree on 'GIS data integration' which focuses on the issues arising in heterogenous data integration, and finding creative ways to deal with overlays. MapBender, with its user management aspects as well, fits in nicely to what I am researching. I am a big fan of FOSS-GIS and neogeography, and my interests increased ten-fold when I visited FOSS4G in Cape Town last year. I am a common lurker on the osgeo, openlayers lists and IRC, and am enthusiastic to be a major part of the mapbender community.
The idea
Mapbender-CSWC would be a client application to simplify the access and retrieval of metadata. It will provide a set of fields to effectively and easily filter, select, retrieve and view various catalogs, whilst also allowing for advanced querying. It provides the user with interfaces for querying CSW servers. I also plan to provide the ability to save succesful queries, with the ability to retrieve these queries the next time around. Also, users could have the ability to share saved queries with other users. Whilst the system provides a easy graphical interface to run queries, all queries will also be shown in the query language so that advanced users can make changes to query itself easier.
Queries: Support common query mechanisms - the basic approach would be to provide selectable drop-downs that allow users to select the various options: Topic, Keywords, Coordinate Reference System and Bounding Box, Date Range required to query from the Modified-date field etc. - All fields would be AJAXified accordingly to be easy-to-use. Some fields could be auto-filled, such as the current map-extent bounding box, and if required, the projection. Will also provide the ability to do advanced queries using supported query languages: simple SQL, OGC_common Catalog query language, where users are given text boxes with linking statements: AND, OR, LIKE etc - for instance a query such as 'title LIKE %road%'. Already selected catalogs, and specific sources and URLd can be stored in the system to be easily accessed the next time round, and a Tree-style down menu can be generated with the ability to select these easily.
Retrieval and metadata viewer: Will provide results in raw XML, readable HTML or in a formatted form. Allow users to view metadata before fetching the source. I intend to support CSW 2.02, 2.01, 2.0 etc. The user can choose to search in complete metadata documents by various fields. Returned metadata documents will be listed on the sidebar of the same page and can be inspected in detail in a pop-up window in a readable format. If the response is sortable via SortBy, then the documents can be sorted as well. Based on the requirements, can also allow users to 'save' the selected metadata, which can then be used from a pre-set list the next time round.
Technology: Possibly Javascript and AJAX with a combination of PHP. The client side technology to be used depends on community consensus. If F/OSS tools exist to carry out some functionality, priority will be given to this. The AJAXification might depend on the AJAX/JQuery SoC project, or it can be included within this, as necessary.
Standards to be followed: OGC Catalog Standard: http://www.opengeospatial.org/standards/cat INSPIRE Standards
Project Plan
I plan to spend this summer in the Mapbender community - getting to know the community, learn from them and collaboratively develop the module.
Timeline and Milestones:
- April 20th - May 23rd -
- Interact with community and mentors
- Discuss and finalize requirements
- Evaluate other technologies and gather best practices from both F/OSS and proprietary projects
- List requirements, technologies and get community and mentor consensus
- List requirements and details on wiki
- May 23rd 2009 - Begin Coding
- Client interface prototyping
- Static HTML version of client
- XML parsing
- Query builder and query creator for MCSWC
- Query storage facility
- July 6th - July 13th
- Mid-term evaluation.
- AJAXify user interface elements
- Tree view and list of documents
- Map overview to select region
- Research: Integrating other heterogenous data sources
- August 10th
- Pencils down!
Explain how your SoC task would benefit the OSGeo member project and more generally the OSGeo Foundation as a whole
A CSW client is important for Mapbender, to be an integral part of the FOSS-GIS infrastrucure - this client would specifically help Mapbender with its CSW capabilities and become a central node of the GDI.
Please provide details of previous GIS experience
I've worked with F/OSS GIS for sometime now, including tools such as UMN/Mapserver and Geoserver, uDIG and QGIS, PostGIS, proj.4 OpenLayers and OSM. I was part of the team that developed GIS functionality for Sahana - a FOSS disaster management system. I used OpenLayers as the web-GIS frontend in Sahana. Sahana consists of a simple catalog that can access a variety of sources in the backend, including commercial GIS APIs, OSM and file types such as KML and GML, as well as GeoRSS feeds. In my undergrad year, I worked on GRASS. Currently, I'm leading an effort in my country - Sri Lanka - in promoting the government in moving towards a standards based FOSS GIS service - this was quite successful, and we are planning to have data available on a totally open FOSS stack. We're also planning to setup a local chapter for OSM in Sri Lanka under the same initiative.
Please provide details of any previous involvement with GIS programming and other software programming
My major is in Information Technology, and I've coded in PHP, Java, Python and Javascript amongst others. I started off my GIS programming in Java with the use of Mapobjects, before switching to FOSS GIS once and for all. I've worked on a lot of OpenLayers coding using Javascript, and have done Mapserver stuff using PHP-Mapscript. I led and contributed to the Sahana-GIS framework components, which provides generic GIS functionality for the Sahana DIsaster Management SYstem and Humanitarian Relief Operations - I presented this concept at FOSS4G last year, along with a demo of Sahana-GIS.
Please provide details of general computing experience
(operating systems you use on a day-to-day basis, languages you could write a program in, hardware, networking experience, etc.)
15 years experience with using computers, half of which was spent in my undergrad years and my current post-grad.
OS: Power Linux user - Debian, and now Ubuntu
Languages: Java and C/C++ - currently more into PHP, Python and Javascript
Please tell us why you are interested in GIS and open source software
My interests started off at my undergrad 1st year, where I wanted to build a navigation system, where I discovered GRASS - soon after, I started becoming a F/OSS advocate and was part of the Linux User Group in SL. and started using and contributing to F/OSS. I jumped onto Sahana when it started and looked at ways of including FOSS-GIS into it for disaster management, and saw loads of opportunities. Web GIS has come a long way since then, and I'm amazed and happy to see all the wonderful developments going on in the FOSS-GIS world - I also want to be a continued part of it. I've been using various components of the GIS stack for Sahana, and now I think its high time I started contributing to the actual stacks itself - so here I am :)
Please tell us why you are interested in your specific coding project
My post-grad research deals with GIS data integration with heterogenous data sources - the problems with discovery, query and retrieval. Catalog services play an integral part of this, and is the key to better integration. Implementing a CSW client for Mapbender would allow me to put my research into practice as well, and learn of the actual practicalities of the problem - in addition, I'm sure what I build here would also help find better ways for integration in Sahana - probably through Mapbender itself. Currently and in the future, various data sources on the web are definitely going to play a bigger role than ever - and the catalog service will like continue to evolve to adapt to newer data formats and newer technologies. I'd definitely be interested to be involved with an evolving technology as such.
Please tell us why you are interested in the specific software project that you wish to work with
Mapbender is a great product, part of the amazing FOSS-GIS stack. I met many developers and projects at FOSS4G 2008, and it has sparked my enthusiasm to join these great projects. The Mapvender team have got a good sense of vision and the project is moving nicely. I would be privildged to contribute to Mapbender.
Do you understand this is a serious commitment, equivalent to a full-time paid summer internship or summer job?
Absolutely. I've been a successful GSoC student in the past on Sahana-GIS, and I've mentored 2 students the next year - I understand the commitments fully and am prepared to be part of the project and community, both during the GSoC and after.
