Projets-2016-2017-GeoDiff
Jump to navigation
Jump to search
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)
- Project discovery
- AIR page and GitHub project setup
- Team organization
- Software Requirement Specification
Week 3 (January 23th - January 29th)
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
- Done:
- 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
- Done:
- 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)