Projets-2016-2017-GeoDiff

=Preambule=

The project subject GeoDiff

This project is handled by three Polytech students: AMAURIN Alexandre, BECHER Hervé, BROCHIER Aymeric

=Project Presentation=

The goal of this project is to identify the differences between two spatial data sets and visualize them.

= Team =


 * Supervisors: Nicolas Palix


 * Members: AMAURIN Alexandre, BECHER Hervé, BROCHIER Aymeric


 * Department : RICM 4, Polytech Grenoble

= Progress of the project =

The project started January 14th, 2015.

Week 1 (January 09th - January 15th)

 * Project selection

Week 2 (January 16th - January 22th)
SRS
 * Project discovery
 * AIR page and GitHub project setup
 * Team organization
 * Software Requirement Specification

Week 4 (January 30th - February 05th)

 * UML diagrams (Use Case and Sequence)

Week 5 (February 6th - February 12th)

 * First look at Javascript and Leaflet
 * Finished first SRS version

Week 6 (February 13th - February 19th)

 * Progress at the level of the delta and at the level of the graphic display.

Week 7 (February 20th - February 26th)

 * Holiday break

Week 8 (February 27th - March 5th)

 * Rough interface (using Leaflet) for showing delta using layers
 * Files input and unique identifier selection

Week 9 (March 6th - March 12th)

 * Command-line tool (written in Java) development started
 * Pretty rough (prototype)
 * Done:
 * Delta computing module
 * Command-line argument parser (using jopt-simple) that currently takes two files and an optional unique identifier for each element
 * Support for GeoJSON as input files
 * Output delta as GeoJSON file, with each feature having additional properties used by GeoDiff tools (currently 'geodiff-type' which identifies the type of modification, i.e 'add', 'del', 'mod', or 'id')
 * To do:
 * Support more formats
 * Add abstraction layers for internal manipulation of data sets (adapters, etc.)
 * Allow the user to add his own module(s) for parsing input files
 * Technologies used:
 * Java
 * Gson (from Google) for manipulating JSON objects (under Apache License 2.0, GitHub repo)
 * GeoJSON addon for Gson (from user filosganga) that adds convenient structures and methods for manipulating GeoJSON objects (under Apache License 2.0, GitHub repo)
 * JOpt Simple for parsing command line options (under The MIT License, website)
 * Browser tool (JavaScript)
 * Done: (...)
 * To do: (...)
 * To do:
 * Merge the map view and data inputs (web interface)

Week 10 (March 20th - March 26th)

 * Command-line tool
 * Made internal data structures all use filosganga's geogson classes
 * Added parsers for reading and converting their input into our internal Element structure
 * Allows for simple modules for other formats
 * Currently GeoJSON and CSV supported
 * Added Javadoc
 * To do:
 * Improve the modularity of the program (=> better API)
 * Maybe write our own (simplified) data structures
 * Created test sets to check if the Java and JavaScript tools are consistent in regard to the GeoJSON standard
 * Done: tests on JavaScript
 * To do: tests on Java
 * Browser tool
 * Done: (...)
 * To do: (...)
 * To do:
 * Merge the map view and data inputs (web interface)

Week 11 (March 27th - April 2nd)

 * Command-line tool
 * Done:
 * Tests done and successful
 * Flaw detected: the parser doesn't allow empty (possibly null too?) JSON objects (like empty geometry objects)
 * To do:
 * Add options to filter output data
 * Javadoc
 * Done:
 * Tests (see section below) with a UI for easier testing
 * Squashed bugs in the comparison functions
 * Browser tool
 * Done:
 * Option to download a zip archive containing four files (additions, deletions, modifications and all three) in GeoJSON
 * Use of PHP to create the files
 * Add geodiff-type property to all features
 * To do:
 * Clean up code and improve security (for ex. prevent the modification of critical variables)
 * Merge the map view and data inputs - almost there
 * Tests
 * Test sets in GeoJSON to facilitate the checks in Java
 * All the geometrical structures have been tested: Point, MultiPoint, LineString, MultiLineString, Polygon and MultiPolygon (with consideration of the height for JavaScript)