GSoC 2018 NASA-ESA WebWorldWind Support for WFS Format

== Project Description ==
OGC Web Feature Service allows a client to retrieve and update geospatial data encoded in Geography Markup Language (GML) from multiple Web Feature Services. WFS Server supports various operations like Get Feature, Describe Feature Type, Lock feature and Transaction Operations. 
Transaction operation is an optional operation which allows the feature instances and their properties to be updated or deleted and it can also be used to insert new features. Each transaction will consist of zero or more Insert, Update, and Delete elements, with each transaction element performed in order. The Transaction operation request will contain transformation operations like create, Update and Delete and web accessible feature instances on which operations need to be applied. When the transaction will complete, a web feature service will generate an XML response document indicating the completion status of the transaction.
In this project, OGC format Web Feature Service [WFS] client will be created which will support Transaction Operation on features by using WFS standard request and response. The goal is to parse Get capability request and to identify the capability of the server. And the proposed client will support Creation, Updation and deletion of the features instance using the shapes drawn on the Globe.
== The state of Project before GSoC ==
Creation, Updating and deleting of the Features using the shapes drawn on the Globe is not supported by NASA-ESA WebWorldWind 
== Benefits to the community ==
Creation, Updation and deletion of the features by drawing shapes on the Globe will help a user to maintain web features stored on the server.
The Functionality of current client will increase.
== Project Deliverables ==
* Deliver Classes that perform WFS (Transaction Operator) using the shapes drawn on the Globe.
* GUI code to display Updated features.
* Test Suits that perform testing with various data set.
* Complete documentation of Code.
Repository Link: https://github.com/GarimaNatani/WebWorldWind
== Status ==
Time	Status	Next Week Plan	Blocked
Community bonding period 
(April 23rd - May 13th)	
* Introduction and skype meeting with mentors 
* Creation and update of the wiki. 
* Installation of required software (node.js, WebStrom, Visual C++, etc)
* Cloning and Set up of WebWorldWind repository on my machine
* Installation of all the dependencies
* Able to run existing Karma tests.	
* To write code to send the Get capability request to WFS server and
* To Create of Karma tests for testing.	No
Week 1
(14th May -20th May)	
* Get Capability request (version 1.0.0) parsing. 
* Creation of WfsCapability.js
Commit1	
* To write code to send the Get capability request and parse it for version 1.1.0 and 2.0.0 
* Creation of Karma tests for testing.	No
Week 2
(21st May - 27th May)	
* Get Capability request (version 1.1.0 and 2.0.0) parsing.
* Creation of basic automatic karma test cases 
* Issues fixing and testing with various values
Commit 1
Commit 2
Commit 3	
* Create advanced level tests and fix issues/defects of existing files.	No
Week 3
(28th May - 3rd June)	
* Get Capability response parsing and advance test cases
* Issues fixing and testing with various values
* Documentation of new functions
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5	
* GetFeature response parsing.
* Writing unit test cases for the same.	No
Week 4
(4th June - 10th June)	
* Get Feature response parsing for MultiSurface and Multipolygon Gml
* Karma test creation for the same.
Commit 1
Commit 2
Commit 3	
* Documentation of functions
* Create final submission report for phase1
* Discuss next phase strategy with mentors.	No
Week 5
(11th June - 17th June)	
* Discussion of phase 2 strategy with mentors.
* Documentation of get feature code
* Went through the code that is used to display data on globe	
*Write code to display get feature data on globe	No
Week 6
(18th June - 24th June)	
* Creation of class for creating GetFeature URL 
getFeature url	
* To write code to create service instance on passing Get capability and Get Feature Url	No
Week 7
(24th June - 1st July)	
*Creation of class for creating Web feature Service Layer 
*Get Feature Url Karma Test updated
Commit 1
Commit 2	
* To write code to display data on the globe.	No
Week 8
(2nd July - 8th July)	
*Display web feature service data on the globe.
Commit 1
Commit 2	
* To write code to get sever Url from GUI and then show data on Globe	No
Week 9
(9th July - 15th July)	
*Feature List is displayed on GUI on providing ServerUrl
Commit 1	
* To write code to create get feature Url and calling get feature service on selecting a particular feature	No
Week 10
(15th July - 22nd July)	
*Written create get feature Url creation code but it is failing with different error
Commit 1	
* To write code to create get feature Url and calling get feature service on selecting a particular feature	Yes, will discuss with the mentors about the approach that can be taken to create Url
Week 11
(22nd July - 29th July)	
*I have written code to display features on selecting a particular feature from the list.
Commit 1
Commit 2	
* To write code for the transaction feature.
* Prepare a report for final evaluation	Yes, facing issue with ShapeEditorController. js file.
Week 12
(30th July - 05th Aug)	
*I have written code to parse transaction operation(insert,Update,Delete) XML response
*Created Test case to test the response parsing
*Written code to create Insert operation request XML with a different type of geometry(multiline and Polygon).
*Created test cases for insert operation XML creation
commit 1
commit 2
commit 3
commit 4
commit 5
commit 6	
* To write code for the transaction operation (Delete and update) request XML creation.
* Prepare a report for final evaluation	No
== Project Outcome ==
* Contributed to open source community by supporting web feature service and its operations
* Developed code to display vector features on 3D Globe, and to create Open Geospatial Consortium (OGC) standardized XML request of 'Get Feature' and 'Transaction' operation of web feature service
* Increased the facility of data visualization and interaction with spatial data by creating standard web feature service XML response parser in JavaScript
* Developed automatic tests in Karma framework to test newly created functionality