Changes between Version 3 and Version 4 of GSoC/2016/WebGrass


Ignore:
Timestamp:
05/17/16 02:53:03 (9 years ago)
Author:
Mayank
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GSoC/2016/WebGrass

    v3 v4  
    1212== Brief description ==
    1313
    14 Currently a GRASS GIS user is forced to use Cartographic Composer or use another software (e.g. QGIS) to create hard copy map outputs with all features. The aim of this project is to develop complete basic cartography suite for the wxGUI Map Display so it could serve for most of the science publications. The goal is not to substitute QGIS Cart Comp or similar, it's just about completing all features so the cartography scripting abilities of GRASS GIS and its potential can be fully used.
     14This idea will focus on the development of web based GUI for the Grass “WebGrass” where people can use Grass modules through a web browser without actually installing GRASS. GRASS will be running on a server. The user interface will be built using wt web toolkit. Wt provides C++ API for developing web widgets. Wt is a page based framework. This means the web application written in Wt has are close to be alike desktop application. Wt’s Singal slot mechanism inspired from Qt allows to connect events from Wt widget to javascript calls. Also this can be the first step in making a Enterprise wide FOSS4G tool where GRASS is running on the server and user can use it with any client, processing being done on the server. In future, a cloud based application deployment can be done.
    1515
    1616
     
    1818== State before GSoC ==
    1919
    20 GRASS GIS contains some modules which would be good to implement into cartography suite for wxGUI Map Display. There are d.barscale, d.graph, d.histogram, d.legend and many other d.* commands to use. There are bugs in some of them and it needs to be fixed (options for map window size). Then there are some modules which need to be enhanced. Legend background is currently transparent ­> add an options for opacity, border and corner settings. It's possible to set number of breaks/ticks for legend but values are not rounded ­> add an option for manual brakes/ticks, add an option for automatic breaks/ticks (every ten, hundred).
     20GRASS as a software is available but as a web app, its not yet developed. The requirement for this is, as if one wants to use the Grass software, it should be installed on the system. But if web app is available then just open a browser and starts working. 
     21
     22
     23== Overview ==
     24
     25* Authorization module for user to login ( A Basic authentication service will be implemented which will store session id )
     26* Mapset location wizard
     27* Openlayers based map canvas
     28* Menu bar as grass desktop have
     29* Toolbar with
     30  1. Pan
     31  2. Query
     32  3. Zoom in-out- to box- to layer- to region
     33  4. Save to img mapcanvas
     34  5. Save display extent to region
     35
     36== Project plan ==
    2137
    2238
    2339
    24 == Addition to the project ==
     40|||||| '''Project plan'''       ||
     41||'''Date'''   ||'''Goals'''    ||'''status'''||
     42||Before 23 April ||Setup a personal wiki for weekly updates and project discussions.|| ||
     43||23 Apr-23 May ||Community bonding period. Work on the initial code written by Rashad at LSI lab. This code was written for a Proof of concept and not for any production use. Even though the implementation is done with the ultimate goal in mind. Based on the existing code define a simple uml diagram. This will finally be uploaded to grass wiki.|| ||
     44||23 May-26 May ||Understanding Command line parsing for different modules of the GRASS.|| ||
     45||26 May- 9 June ||Implement a wt based interface for GRASS’s g.parser. This include all kinds of wt widgets. No signal slot connection will be done this week. By end of this week the parser will be tested on a grass modules. Like r.average,r.buffer,v.buffer,v.build|| ||
     46||9 June - 19 June ||Authorization system integration. Testing of the implementation.|| ||
     47||19 June- 2 July ||Understanding current Mapset Location Wizard and its implementation.|| ||
     48||25 June - 27 June ||'''Midterm evaluations'''|| ||
     49||27 June - 2 July ||Remaining implementation of Mapset Location WIzard and testing its implementation.|| ||
     50||2 July - 6 July ||Implement a initial version of map canvas using openlayers by WObject::doJavascript() calls for testing maps. || ||
     51||6 July - 15 July ||WebGRASS menubar implementation. This will be the exact replica of the desktop grass gis taken from menudata.xml.|| ||
     52||5 July - 23 July ||Implement some of the action in menubar and keep but deactivate those needs extra care. || ||
     53||23 July - 27 July ||Testing the integration of the developed UI with the backend libraries .|| ||
     54||27 July - 4 Aug ||Implementation of the Security Concerns listed above.|| ||
     55||4 Aug - 11 Aug ||Final testing. Solving bugs and issues raised.|| ||
     56||11 Aug - 18 Aug ||Deployment of the solution on the server.Most probably it will be deployed on the LSI server.Other grass developer can have a look at this and report issues if there any.|| ||
     57||18 Aug - 23 Aug  ||'''Final Evaluations'''|| ||
    2558
    26 GRASS GIS is an important OSGeo project but it is perceived as not suitable for cartography which prevents a lot of users from utilizing as a GIS. Completing basic cartography suite in GRASS GIS should satisfy needs of significant part of potential user community.
    27 Moreover, GRASS GIS provides an easy way to automate simple map creation using scripting. However, only with complete suite of basic functions implemented in this GSoC project, the cartography scripting abilities of GRASS GIS can be fully used.
    2859
    29 == Project plan ==
    3060
    31 The idea of the project is to start with easy­to­implement stuff and step­by­step implement the more difficult ones. There are many details which need to be improved and many others which are missing entirely so the users have to use another software (legend background, north arrow orientation)
    32 
    33 |||||| '''Project plan'''       ||
    34 ||Date ||Goals  ||status||
    35 ||MAY 23          ||Starting GoSC|| ||
    36 ||MAY 23 -­ 27     ||Store legend, scale bar, north arrow and text in workspace, bug fixing (e.g. workspace loading) (wxGUI).|| ||
    37 ||MAY 30 ­- JUNE 3      ||Add units to legend (optionally also title) as parameter. Option for switch  legend to linear/logarithmic scale. Manual/automatic breaks/ticks for legend (option for rounded values, option for every ten,hundred).|| ||
    38 ||JUNE 6 ­- 10      ||Legend background (border, rounded corners, opacity settings) (d.legend, C).Support map units in scale bar (not only meters).Allow user to set the length of scale bar (in map units) (d.barscale).|| ||
    39 ||JUNE 13 ­- 17     ||Possibility to add any image (as in animation tool). Use cases: logo/watermark, workaround for overview maps.|| ||
    40 ||JUNE 20 ­- 24    ||General shapes.|| ||
    41 ||JUNE 20 ­- 27    ||'''Midterm evaluations'''|| ||
    42 ||JUNE 27 ­- 1 JULY     ||General shapes.|| ||
    43 ||JULY 4 ­- 8   ||Include map­display­like object.|| ||
    44 ||JULY 11 ­- 15    ||Include map­display­like object.|| ||
    45 ||JULY 18 ­- 22    ||Implement vector legend. Enhance d.vect.thematic.)|| ||
    46 ||JULY 25 ­- 29   ||Implement vector legend. Enhance d.vect.thematic. Testing, writing documentation.|| ||
    47 ||AUGUST 1 -­ 5    ||Testing, writing documentation.|| ||
    48 ||AUGUST 8 ­- 12  ||One week buffer in case of delay.|| ||
    49 ||AUGUST 15 ­- 23  ||Submitting code and evaluations.|| ||
    50 ||AUGUST 23 ­- 29  ||'''Final Evaluations'''|| ||
    51 ||AUGUST 30       ||'''Ending GSoC'''|| ||
    52 
    53 == Tickets ==
    54 
    55 We are using keywords [query:keywords=~cartography cartography] and [query:keywords=~gsoc2016 gsoc2016] to mark the tickets which are tasks for this GSoC.
    56 
    57 [[TicketQuery(keywords=~cartography|~gsoc2016,order=priority)]]
    58 == Vector legend ==
    59 
    60 Draft of legend implementation. Please edit or change completely.
    61 
    62 * 1st prototype
    63  * d.legend.vector
    64  * in: list of d.vect commands from layer manager
    65  * Python
    66  * extract: symbol color1 color2 size width text
    67   * symbol
    68    * symbols for lines and areas must be created
    69    * icon if v.info returns lines, then use the new symbol for lines
    70    * icon if v.info returns areas, then use the new symbol for areas
    71    * use icon for points
    72    * use icon when explicitly specified (there is a default but GUI does not put it there unlike history)
    73    * if mixed feature types, either special symbols or separate entries or just use symbol (needs to be decided)
    74   * color1=color
    75   * color2=fill_color
    76   * size=size
    77   * width=width
    78   * text=title or name
    79  * generates d.graph file
    80  * GUI takes d.vect commands, calls this module and uses the output in d.graph when rendering
    81 * 2nd stage
    82  * text format for customization
    83  * `symbol color1 color2 size width text...`
    84  * `legend/lines_z` red none 5 2 State border
    85 
    86 G7:d.graph code:
    87 
    88 {{{
    89 color red
    90 polygon
    91 10 10
    92 10 20
    93 20 20
    94 20 10
    95 color black
    96 move 22 10
    97 size 24 24
    98 text Red area
    99 }}}
    100 
    101 See for example: source:grass-addons/tools/std_dataset_display.py and [https://grasswiki.osgeo.org/w/images/Std_dataset_nc_stripe.png the resulting image].
    10261== Development ==
    10362