Google Summer of Code/2015/Mapillary plugin for JOSM
- 1 Mapillary plugin for JOSM
- 2 Mapillary Window Pane
- 3 List of changes
- 4 Mapillary Settings
- 5 References
- 6 Technical details
- 7 Classes for individual data types
- 8 Use case scenarios
Mapillary plugin for JOSM
The developer/student will get access to documentation of a more complete API, which is currently being developed on the Mapillary side. The development blog can be found here
- Show icons of Mapillary pictures on the map. Including compass direction arrow.
- Show tracks/picture sequences on the map.
- Show one large picture. With additional information like coordinates, direction, extracted data (traffic signs, etc.)
- Show traffic signs on the map. Link with picture they were extracted from, i.e. update large picture. future API should allow user to send corrections back
- Offline cache of downloaded data.
- Upload new pictures to Mapillary?
- This could be for geo-located pictures, where the JOSM user processes them first, improves their location tags and orientation, then pushes them to Mapillary
- It could also be for other pictures, for which the user knows where they were taken
- It could be possible in this case to blur parts of the pictures, either as a request to do it on the Mapillary site or directly on the picture.
- When changing the viewport, make a request to Mapillary API for all pictures included in it
- Retrieve GPX traces for them
- Retrieve thumbnails for them and store in cache
- Purge cache when it reaches treshold
Compare to Geotagged images layer in JOSM core
- Layer showing small thumbnails or a drop symbol for all pictures available on the Mapillary server in current viewport
- Draw lines between the pictures to show how they are related as sequences
- When an orientation is in the EXIF, show an arrow pointing in the right direction.
- When a picture is selected, this becomes a line in a different color than the one for the GPX connecting the images. This line has an extra virtual node which can be dragged to modify in what direction the picture was taken.
- The position of the image can also be improved.
Mapillary Window Pane
There is also already such functionality in JOSM core
- By default this is an independent pane, so it can be viewed easily on a second monitor
- This shows the currently selected picture
- On the Mapillary layer, miniatures of the thumbnails can be shown. In this window pane the size is bigger.
- Mapillary stores pictures in 4 sizes/formats
- As long as the user keeps the size of this pane small, thumbnails will be enough while flicking through them rapidly. When looking for more than a second, the full resolution picture can be retrieved and shown.
- Add buttons for forward, backward (in the sequence), left, right (jump to other sequences).
- A button to open a browser window with the image in edit mode on the Mapillary site
- A button to add a mapillary tag to the currently selected object
- A button to go into add/remove blurring mode
- Possibility to validate recognition of traffic signs and possibility to add the tags which are a consequence of these signs to the ways they relate to and to add the proper tags on the signs themselves. Probably by having the RoadSigns plugin as a dependency.
- Button to report bad pictures?
List of changes
It's possible to improve the positioning and compass heading of the pictures. When such changes are made, it's best to send them all in what Mapillary refers to as a changeset. In this list we keep track of these changes. So the user of the plugin can send them all at once.
- It would be good if it were possible to send pictures taken with other cameras to Mapillary, preferably after improving or adding proper geotags to them. Upload scripts written in Python
- Ask for the user's credentials at Mapillary and optionally store them locally (oAuth 2.0)
- Treshold size of cache
- Automatic update of Mapillary layer if user moves the map or zooms, or on request? Looks like there is quite some data transmitted with every API request. I think that's crucial
- svn repo: https://trac.openstreetmap.org/browser/subversion/applications/editors/josm/plugins/mapillary
- JOSM ticket: https://josm.openstreetmap.de/ticket/10648
- Mapillary (github) ticket: https://github.com/mapillary/mapillary_issues/issues/148
- Mapillary API: http://www.mapillary.com/developer.html
- Jenkins: http://donvip.fr/jenkins/job/JOSM-Plugins/
- A comparable plugin: https://trac.openstreetmap.org/browser/subversion/applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj?rev=16290&order=name
- which is now in core at: http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/gui/layer/geoimage
- Name of the plugin: Mapillary
- SVN/file system directory name: mapillary (most of the JOSM plugins use lowercase)
- Hosted at OSM SVN: http://svn.openstreetmap.org/applications/editors/josm/plugins/
- this enables automatic upload to Launchpad and translations (https://translations.launchpad.net/josm/trunk/+pots/josm); strings should not be changed too often to avoid useless translation effort
Classes for individual data types
Images Sequences Objects, with sub-classes for specific objects (I would suggest to call this objects or something more generic, we are going to detect more stuff) Traffic signs
Use case scenarios
User edits some bbox
- The user wants to see all the images available at Mapillary, so thumbnails for them get downloaded to a cache folder. an icon or mini-thumbnail shows up at its position on the mapillary layer.
- The image the user is working on, gets downloaded at full resolution for viewing in a separate Window pane.
- If there are many pictures for an area, the user may want to filter them on some criteria (date range, only picture with traffic signs in them, ...)
- If the user notices the position is not correct, it should be possible to update it
- If the user notices the angle is not correct, it should be possible to change it by dragging a virtual 'helper' node
- User can confirm or correct detected traffic signs, confirmation is only possible when completely zoomed out (viewing the whole picture)
- User can zoom in and out on the picture using the mouse wheel, pan with right mouse button
User has taken pictures with the Mapillary App, or otherwise, and wants to review them before uploading
- If the user notices the position is not correct, it should be possible to drag it to the correct position
- If the user notices the angle is not correct, it should be possible to change it by dragging a virtual 'helper' node, which indicates where the camera was pointing to
- User can delete pictures which aren't suitable for uploading
- User can decide to move pictures to a 'private' folder, so they won't get uploaded, but still remain available locally
- User can tag pictures with keywords to indicate what is visible in the picture (as far as I know there is no support for this on the Mapillary side (yet), but it's easy to add such tags to EXIF)
User has geotagged pictures and other pictures which were taken during the same session
- the other pictures get geotagged automatically based on timestamps and geotags in the main sequence
- user decides whether the angles are the same or always with the same offset
User wants to add detected traffic signs to OSM
- Lower priority