WxGUI WMS service rendering GSoC 2011
Student Name: | Sudeep Singh, Computer science department, Indian Institute of Technology, Kharagpur, India |
Organization: | OSGeo - Open Source Geospatial Foundation |
Mentor Name: | Maris Nartiss |
Title: | GRASS WXGUI WMS service rendering |
SVN: | wx.wms |
Aim of the project
This project aims to introduce several features that make WXGUI more user-friendly. These include adding WMS layer support for WXGUI. The selection features will be displayed as per the based on service GetCapabilities response. The parameters and the layers are to be displayed are extracted out of the xml response.
State of the art
The project uses WMS service to fetch images of the maps. The Get Feature service of WMS services provides a GML based interface to access the information about various layers available. The WMS layer knowledge is used to update the GUI of the GRASS according to the available features for a particular layer. Thw WX-GUI is to be modified and to be integrated with the WMS services.
Bulletin Board
Documentation
Overall architecture. A big picture. Might be not precise. Implementation might differ.
The sequence diagram and use case diagram for the proposed Gsoc project are shown below
Planned Timeline
1 - 7 June : To introduce toy changes in the source code. To get familiar with the source file structuring and existing code. Learn WxPython and get Comfortable with it.
7-14 June : To introduce meaningful changes in the WXGUI. Aim to write a module for statically updating the WXGUI without any back end support from WMS services.
14-21 June :To hard code for dynamic updating of GUI without WMS support
21-28 June : To establish correctness of the code , testing of the modules.
29 June - 5 July: To understand the available WMS services. To extract the features available through get feature module.
6 July - 13 July: To hard code for the WMS layer supports available so as to update the front end GUI.
14 July - 21 July: To integrate the front end WXGUI new modules for updating the interface with the backend support from WMS GetCapabilites services.
22 July- 29 July: To introduce get layers service of the WMS services in the front end of WXGUI
How to test
Note: GRASS 7 required.
g.extension -s extension=wx.wms
File -> GSoC testing -> WMS
Weekly GSOC reports
Report #0 29-05-2011.
1) What do I have completed this week?
I have completed the following by this week.
- Creating the uml diagrams (sequence and use case) for the planned architecture of the project.
- Have read GUI documentation from the programmer's manual [0].
- Have gone through the source file structuring.
- Have setup the system, compiled the source and successfully installed it.
2) What am I going to achieve for next week?
I plan to introduce some toy changes in the source code, like print statements. I will try to familiarize myself with the wxPython.
3) Is there any blocking issue?
No major bottlenecks till now.
Report #1 3-06-2011.
1) What do I have completed this week?
I have completed the following by this week.
- Read the programmers manual for WXGUI [0], [2], [3].
- Written a standalone helloWorld application in WXGUI and learning WXGUI from [3]
- Added a button to GUI of GRASS, which for now essentially does nothing.
- Printing of dummy messages and changing the welcome messages.
- Test uploading on SVN and getting acquainted with svn.
2) What am I going to achieve for next week?
I plan to update the GUI with respect to available layers. Back end WMS support will be hard coded for the time being.
3) Is there any blocking issue?
Learning of WXPython. Never used it before. I am trying to get comfortable with it.
Report #2 9-06-2011.
1) What do I have completed this week?
This week, I have not been able to do much work due to my visit to Singapore this week and problem with ubuntu system to connect to the network here. I have completed the following by this week.
- Read the [4] , Chapter 1 and 2 for SVN.
- Build a simple text editor in wxpython, build drop down menus in wxpython.
- Test uploading of SVN
- Install Quantum GIS and study it's GUI functionality.
2) What am I going to achieve for next week?
1) Get familiar with WMS use in QGIS. 2) Continue to get familiar with wxpython and GRASS wxGUI.
3) Is there any blocking issue?
Network Connectivity problem with my ubuntu system not being able to connect to network delayed the work this week. I am now more comfortable with wxpython now.
Report #3 17-06-2011.
1) What do I have completed this week?
By this week I am quite acquanted with wxpython and ready to build applications in it.
- Study QGIS WMS layer support
- Launch a New window with an "Add WMS" button from main window of grass. New window has 3 buttons. Functionality not yet coded for the buttons.
- SVN readme file update.
2) What am I going to achieve for next week?
1) Add WMS support at the backend of the added new buttons.
3) Is there any blocking issue?
Nothing major problem till now
Report #4 24-06-2011.
1) What do I have completed this week?
- Implemented a button in grass7 GUI, which launches a new window. The new window has 3 button. On pressing the button 'GetCapabilities', xml data is fetched for WMS http://www.gisnet.lv/cgi-bin/topo, and the xml data is displayed as it in the window.
- Parser(Minidom) is used to parse the xml data and display it in the form it is displayed in QGIS
2) What am I going to achieve for next week?
1) Add functioanlity to retrieve getcappabilities of any wms, currently it is hard coded for one wms. 2) Fetch the maps after the user selects particular layers from the list of layers displayed.
3) Is there any blocking issue? No major bottleneck till now
Report #5 01-07-2011.
1) What do I have completed this week?
- Major change in GUI done to support layer display and WMS url input
- Taking the URL for the WMS service as a user input implemented, thus hard coding of url removed
- Code committed to svn https://trac.osgeo.org/grass/browser/grass-addons/grass7/gui/wxpython/wx.wms
- Testing of code done on different WMS services.
2) What am I going to achieve for next week?
1) GUI support for taking user layer selection. 2) Fetching selected layers and storing them in a local cache. 3) To display the fetched map image.
3) Is there any blocking issue?
No major bottleneck till now
Report #6 08-07-2011.
1) What do I have completed this week?
- Functionality for fetching of Maps added.
- A new Window pops up to display the map. The URL for the map for the time being is hard coded.
- Restructuring of the code done.
2) What am I going to achieve for next week?
1) Major change in GUI to be done to support user Interaction 2) Error checking and renaming of variables in the back end code.
3) Is there any blocking issue? No major bottleneck till now
Report #7 15-07-2011.
1) What do I have completed this week?
- Change in GUI, Addition of functionality to Manage Servers, Display the fetched layers as a Tree
- GUI now being generated by wxGlade, backend code changed for GUI.
- Renaming of variables completed in most files, variables in two of files to be renamed.
2) What am I going to achieve for next week?
- Do Exception handling
- Implement WMS Architecture
- Non Blocking Architecture for wxPython
3) Is there any blocking issue? No major bottleneck till now
Report #8 22-07-2011.
1) What do I have completed this week?
- Implemented Serivce Excpetion Handling.
- Error checking in getmap and getcapabilities done
- WMS Architecture designed
2) What am I going to achieve for next week?
- Non Blocking Architecture
3) Is there any blocking issue? Not able to do multiple selection of layers.
Report #9 29-07-2011.
1) What do I have completed this week?
- Storing info in an xml format done
2) What am I going to achieve for next week?
- Increasing code robustness, error checking, code check
3) Is there any blocking issue? No blocking issue
Report #10 06-08-2011.
1) What do I have completed this week?
- Bugs fixed.
- Change of the functionalities as per the feedback by Maris.
2) What am I going to achieve for next week?
- Integerating code with WxGUI.
- Code to be standarized as per python_submit
3) Is there any blocking issue? No blocking issue
Report #11 12-08-2011.
1) What do I have completed this week?
- Trying to Integrate the application with GRASS
2) What am I going to achieve for next week?.
- Code to be standarized as per python_submit
3) Is there any blocking issue? Facing Problem in displaying image in grass gis display
Report #12 20-08-2011.
1) What do I have completed this week?
- Integerated successfully the application with the main wxgui application.
- Removed Bugs from the code
2) What am I going to achieve for next week?.
- Code to be standarized as per python_submit
3) Is there any blocking issue? No
References
- [0] http://grass.osgeo.org/programming6/
- [1] http://geo.fsv.cvut.cz/~landa/publications/2008/gis-ostrava-08/paper/landa-grass-gui-wxpython.pdf
- [2] http://geo.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf
- [3] http://wiki.wxpython.org/
- [4] http://svnbook.red-bean.com/en/1.5/index.html