JOSM/Plugins/Mapillary/GSoC 2020

From OpenStreetMap Wiki
< JOSM‎ | Plugins‎ | Mapillary
Jump to navigation Jump to search

Mapillary plugin will be developed as part of Google Summer of Code 2020 [1]. On this page the progress of this project will be documented.


Mapillary plugin is used to extract street-level imagery for better editing in JOSM. Currently the basic implementation of the plugin is complete with a few bugs, but still there's lot of room for improvements. The main idea of this project is to keep the plugin bug free and to allow better editing of both OSM data and Mapillary images and to make the plugin easier to use


Community Bonding

May 5th — May 31st

I'm learning more about Mapillary API and existing plugin. I'll begin the coding phase by fixing error which occurs while undoing deletion of images.

Coding Phase 1

June 1st — June 7th

This week I've trying to remove ArrayIndexOutofBounds when undoing deletion of images. This was mainly because the images were not being sorted properly in the plugin.

  • Re implement compareTo in MapillaryAbstractImage to use image index for sorting // d174c00.
  • Re implement execute in CommandDelete to use correct index of images when deleting images // e6f9b04.
  • Write Unit tests for MapillaryAbstractImage and CommandDelete // c0866c4 3d65b3b.
  • Modify MapillaryImportedImage to support null value for image file // 5bd16af.

(all changes made to the repository this week)

Next week I'll try to add a download panel for viewing progress of Images being downloaded and possibly some functionality for pausing and canceling downloads.

June 8th — June 21st

This week I'm trying to create a download panel and I've been exploring JOSM core to see if there are existing features I can use.

  • Fix Mapillary layer background hash, option to add/remove DataSource // 8c4f26b
  • Create class DownloadProgressMonitor, stores download info and displays download progress // c1298e8.
  • Create class DownloadTableModel , stores list of downloads and table data // d136720.
  • Create class MapillaryDownloadDialog , displays table with list of downloads and changeset submit button // a247b31.
  • Modify BoundsDownloadRunnable to get download progress using ProgressMonitor // a56524c.

Basic structure of panel is complete with download table, submit changeset button and downloads info.

Next week I'll add pause/resume/cancel logic for downloads.

June 22th — June 28th

This week I'm trying to add cancel/pause/resume option for single downloads, delete changeset panel, fix errors that might arise after deletion of MapillaryLayer.

  • Modify MapillarySquareDownloadRunnable to support pause,cancel and resume/redownload // dcad888.
  • Modify MapillaryDownloader to get download info and support rejected/canceled download's hash removal // fcd4f4f.

First Evaluation

  • Add empty shortcuts for all toggle dialogs // a4d3290.
  • Add restart button, icons for restart, cancel, clear buttons and download panel. // bda3131.

Coding Phase 2

July 4th — July 12th

This week I'm creating separate MapMode for editing MapillaryImages.

  • Add empty shortcuts for undo/redo actions in History dialog // bc44463.
  • Create class EditMode as a mapmode for Mapillary layer to edit images and sequences // 1288de5.
  • Remove editing options from SelectMode // [2]1288de5.
  • Create class MapillaryEditAction to toggle between SelectMode and EditMode // 1288de5.

July 13th — July 19th

This week I'm Creating support for changeset of type deletion and Editing options in Changeset Dialog

  • Create class SubmitLocationChangesetAction for uploading changeset of type deletion. //1288de5
  • Create class DeleteImageAction used to mark Images as deleted. // 1288de5
  • Create class DeleteImageAction used to mark Whole sequence as deleted. // 1288de5
  • Add option for editing image compass angle, marking sequence/images as deleted, making all images face each other in a sequence in changeset dialog. // 1288de5

July 20th — July 26th

This week I'll be editing MapillaryLayer to add GUI to show which images have been deleted.

  • Add new markers for deleted images to be shown in MapillaryLayer. // 259e039 259e039c
  • Paint different image markers for deleted images in MapillaryLayer. // 259e039
  • Exclude deleted images when selecting images in EditMode. // 259e039

Second Evaluation

  • Add option to review images before uploading them. // 294c063 294c063
  • Force review of images before uploading images and changesets. // 294c063 662fec8
  • Remove changeset submit button from Download Dialog. // 78a1945

Coding Phase 3

August 1st — August 9th

  • Create AbstractImageViewer for common methods for both normal and panoramic viewers. // fdea3c9
  • Create ZoomPanMouseListener for listening zoom and drag commands from mouse. // fdea3c9
  • Create ImageVieweUtil to help with drawing images. // fdea3c91

August 10th — August 16th

  • Create MapillaryImageViewer to view normal Images. // fdea3c91
  • Create PanoramicImageViewer to view 360 Degree panoramic images. // 820f1fd

August 17th — August 23rd

  • Draw image detections. // 820f1fd 820f1fd
  • Create faster method for mapping panoramic images using Image's Databuffer to modify color instead of getRGB and setRGB. // 820f1fd
  • Use predefined buttons for zooming and dragging. // 7396b25

Final Evaluation

  • Use dedicated ImageViewers for viewing normal and panoramic images. // 16d38ee
  • Update direction indicator using point of view of panoramic images. // 5fe86bf
  • Recalculate View area when new images are set. // 6b30bae

Project Ideas

This list contains ideas for improvements over the course of the GSoC.

If you have ideas not on this list that you would like to see implemented, you are very welcome to suggest them On the Talk Page.


  • Fix ArrayIndex error when undeleting a large sequence.

Existing Feartures

  • Improve Viewing of 360 degree images inside JOSM.
  • Enhance editing of images and sequences.

New Features