Projets-2016-2017-GeoDiff

From air
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

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

SRS

Week 3 (January 23th - January 29th)

Week 4 (January 30th - February 05th)

  • UML diagrams (Use Case and Sequence)

UML

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)