GithubHelp home page GithubHelp logo

mapbox / osm-navigation-map Goto Github PK

View Code? Open in Web Editor NEW
27.0 109.0 17.0 1.52 MB

A map to explore navigation data in OpenStreetMap

License: ISC License

HTML 0.31% JavaScript 99.56% CSS 0.13%
openstreetmap mapillary banished

osm-navigation-map's Introduction

OpenStreetMap Navigation Map

The OpenStreetMap Navigation map is a web application which uses Mapillary vector layer to highlight the traffic signages detected in Mapillary images. The application is helpful to add/verify/modify turn-restrictions on OpenStreetMap.

image

Develop

  • git clone
  • npm install && npm start

Tilesets

The map uses various custom Mapbox tilesets maintained by @planemad that has OSM navigation data extracted via overpass/shaktimaan. The tilesets are updated infrequently, please request an update if required.

Interface

OpenStreetMap Navigation Map consists of 3 layers which helps you to navigate between OpenStreetMap data and Mapillary data.

image

  • Tile Boundaries : Tile boundaries is a overlay layer which divides the map into tiles which is visible after zoom10. This layer helps to divides the working area/city into blocks and make sure that mappers don't work on the same area.

image

Image showing tile boundaries along with tile numbers

  • Oneways : The Oneway layer highlights the roads with oneway tag in OpenStreetMap which helps the mapper to analyse the turn-restriction and the road data before adding it.

image

Image showing oneways highlighted in map style

  • Mapillary Street Photos : Mapillary Street Photos enables the Mapillary vector layer on the map which highlights the detected images with signages in it. The arrow on the GPS traces indicate the direction of the Mapillary sequence.

mapillary-traces

Image showing Mapillary traces in map style

Map Styles

OpenStreetMap Navigation map highlights different features present in OpenStreetMap and Mapillary detected signs in different colours. Below is the description on colours used in the map style:

  • Mapillary detected Turn-restriction : The turn-restrictions detected on Mapillary vector layer are shown in the form on respective detected icons. The turn-restriction signages differ from country to country. Below are few examples:

trs2

  • Turn-Restriction present on OpenStreetMap : The map shows the turn-restrictions present on OpenStreetMap for the mapper to get the overview of the detection and go forward.
    • No-turns : No turn-restriction like no-left-turn, no-right-turn, no-u-turn and no-straight-on are styled with

      • from as yellow line.
      • via as red circle/dashed-line.(orange in case of no-u-turn)
      • to as red dashed-line. t1
        uturn
    • Only-turns : Only turn-restriction like only-left-turn, only-right-turn and only-straight-on are styled with

      • from as yellow line.
      • via as blue dot/line.
      • to as in blue dashed-line. tt1

Workflow

Step 1

Login to OpenStreetMap : Logging-in to your OpenStreetMap account helps to know who reviewed the detected turn-restriction.

image

Step 2

Detecting turn-restriction images : The position of the detected signage will be a probable location of the turn-restriction.

des

  1. When clicked on the specific detected signage, you get to edit add/edit the label for the turn-restriction.
  2. The respective images location of detected signage is highlighted as big green arrow. The highlighted green arrow have the signage in it and lets you to play the sequence of the images to get an overview of where the turn-restriction is applicable when you click on it.
  3. The detected image Mapillary sequence can be played to see the images and get the identify better image with signage.
  4. laying the sequence all the photos present in that sequence are shown as smaller green arrows. We can also open image in a new tab to get a wider picture of the turn restriction by clicking on the image.

Note : Sometimes the popup might hide the detected image location. Close the popup to find green-arrows with image location

nav41

Step 3

Add/Verify/Modify turn-restriction : While navigating in the navigation map using image sequence, we can find out where and to which junction the turn-restriction applies to.

  • Click on Edit Map to edit using iD editor - Follow instructions here on how to add turn-restriction in iD editor.
  • When clicked on detected signage, the map view bounding box will be downloaded as layer in JOSM (if JOSM is open) - Follow instruction here on how to add turn-restriction in JOSM editor.

Step 4

Label reviewed turn-restriction : Once done, update the status of the restriction on the OSM navigation map:

screenshot 2016-09-07 16 52 16

  • Valid - The detected restriction is valid and is either already present on OpenStreetMap or added to OpenStreetMap base dont his workflow.
  • Redundant - The detected restriction is correct but is not necessary to be added to OpenStreetMap since it is redundant for routing. eg. A no left turn against a oneway road.
  • Invalid - The detected restriction on Mapillary is incorrect. Do not add to the map
  • Note - An OpenStreetMap note can be added if you want any local mapper to verify the turn-restriction before it is added to OpenStreetMap.

Note : For junctions where same signage is detected multiple times, review one of them and leave the rest unattended and do not label them with any of the above.

osm-navigation-map's People

Contributors

agius avatar ajithranka avatar amishas157 avatar bsrinivasa avatar geohacker avatar kepta avatar mikelmaron avatar planemad avatar tmcw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osm-navigation-map's Issues

Using mapillary-js

From #1, @kepta lets figure out how to integrate mapillary-js for providing more context of photos to mappers.

The objective is to help a user establish the correct position and orientation of a photograph on the map.

Functionality to expand the Mapillary image inside the navigation map itself.

@planemad - It would be great if we could expand a Mapillary imagery in the navigation map itself by double clicking on the small image shown in the tool. This would mean that we don't have to open the image separately in a new tab.

Current output:

We only have a small image on the left bottom corner which is not interactive. It is difficult to determine a turn restriction as the image is small.
screen shot 2016-07-21 at 3 03 58 pm

Expected output:

When we double click on the mapillary image it should expand the image to full-screen size inside the navigation map tool itself so that we don't have to open the image in a new tab or JOSM.

Reviewer information for each TR

There should be a way to add mapper details to each TR. Also if the TR has already been reviewed, along with the review status, reviewer name should be highlighted as well.

cc @planemad

Autoupdate the map on the client-side

When more than one person is editing the same location, it will help to have a sense of changes being made by other users. One approach to this now could be to auto-refresh the browser each 5 minutes or so and get the updated dataset. We should also give an indication on the UI for long along the map was updated.

cc: @planemad @geohacker @amishas157

Automate updating the tilesets

Currently, the tilesets used by osm-navigation-map need to be updated manually. There are two approaches we can take to automate this:

  • Have an EC2 instance than runs a scheduled process that uses shaktimaan to update the tilesets.
  • Have a more generic tool that listens to a dynamosm stream for incoming features, filters it based on a set of tags and updates a tileset or dataset API.

cc: @planemad @geohacker @amishas157

Allow deleting reviews

screenshot 2016-06-01 18 13 57

Dataset API is quickly getting overloaded due to multiple reviews for the same restriction. We need to be able to delete unnecessary reviews to reduce the payload.

Expand Mapillary restriction filter for European cities

The map currently only highlights turn restrictions in US and Canada based on this signage list.

This list needs to be expanded to highlight restriction in Europe and the rest of the world. Need to do some digging on what are the expected values of turn restrictions in the Mapillary layer for the other geographies.

@gyllen what the best place to get full list of possible Mapillary objects, is it https://github.com/mapillary/traffico/tree/master/mapillary-mappings ?

Visual changes in representing detected Mapillary signage

@planemad Currently, the road signage that are detected in the Navigation map are represented in small sized green colour dots. These are only visible beyond zoom level 14.

screenshot 2016-07-21 16 29 26

Problems:

  • The dots are too small to spot on green colour mapillary path background. After zoom level 14 we spend a lot more time in panning over the map in search of the ones which are not reviewed

Proposed changes:

  • A colour change in the signage detected dots and bigger size of the circle that represents it
  • Allowing them to be visible in higher zoom levels such as 10 or 12

cc @poornibadrinath

No change in marker position when there are group of Mapillary photos

Here the Mapillary layer is detecting two turn-restriction in the images.

image

When opened in JOSM/iD the Mapillary image sequence (Next/Previous picture) shows multiple photos of the road ahead but the image marker won't move forward or backward and the images continues to appear (upto 10-15 and more). With this group of images, its hard to find the image where the sign was detected.

img

Seeing the same in Mapillary website too where the marker is not moving but image sequence keeps changing.

pilepics

@gyllen Is this the GPS problem or anything else?

cc @oini @manoharuss @planemad

Points marked as done are not showing up on the map when browsed in Chrome.

The points marked as done are not showing up on the map when in Chrome browser. It shows this error message:
XMLHttpRequest cannot load https://api.mapbox.com/datasets/v1/planemad/ciotrgzko002ew8m29jh4lvhf/featu…aXlsbnd5dCJ9.7Ui7o2K3U6flUzDGvYNZJw&start=1060ece262ab71c00aacc1310349c72b. The 'Access-Control-Allow-Origin' header has a value 'http://127.0.0.1:4000' that is not equal to the supplied origin. Origin 'http://planemad.github.io' is therefore not allowed access.
map.js:906 Error: Input data is not a valid GeoJSON object.

This happens only with Chrome.
image

When in other browsers, eg. safari, the clusters that are previously worked are seen clearly
image

Show image location on clicking Mapillary restriction object

From #51 #53 #54 #56 the Mapillary detected restriction location has changed from the location of image capture, to predicited signage location.

This is confusing for the reviewer as it is difficult to understand from which location the photo was taken and to which road the restriction applies.

As per the API documentation #48 (comment) we should be able to use the Image Layer tiles to find the display the photo location on the map.

Ideal interaction would be:

  1. Click on detected object marker
  2. Highlight image locations that correspond to that restriction
  3. If more than one image for the restriction, hovering/clicking over image locations should load the corresponding Mapillary image

Reference: Mapillary Vector tiles docs #48 (comment)

cc @amishas157 @ajithranka @oini @srividyacb

Feed for Mapillary Objects

Lets start thinking about how we can get a feed going with the latest detected objects from Mapillary. The database lookup would be quite expensive. So maybe we can cache something every hour and send back through an API.

We are rewriting our v3 API to use netflix falcor. Is that something you would be able to consider using for getting data from the feed. We will have an easier API REST API as a part of v3. But falcor will give you more abilities to tweak your requests.

Having the TMS layer for the blocks in the navigation map

It will be great to have the blocks we are working on for SF turn restrictions in the navigation map instead of the tms layer in JOSM. Will help us get a better idea of where we are rather than verifying the roads and the borders.

The layer is tms[99]:https://api.mapbox.com/v4/pratikyadav.3a2c11f9/{zoom}/{x}/{y}.png?access_token=pk.eyJ1IjoicHJhdGlreWFkYXYiLCJhIjoiMTA2YWUxNjRkNmFmZGQ4YzAxZWFiNDk0NDM1YjE1YjAifQ.4P6N5dNmA_WQXd3BsJvu5w

screen shot 2016-08-18 at 5 00 42 pm

cc @planemad

Min/Max zoom for Mapillary sources

Upgrade mapillaryTrafficSigns to have min/max zoom to 14 this layer will contain all information. Quering lower zoom levels will just make unecessary tile requests.

Upgrade mapillaryCoverage to have maxzoom 14 (its the last tile you ever need)

User feedback

The map has been highly useful to quickly add missing turn restrictions from Mapillary. There is significant time saved by avoiding the use of JOSM. Requests:

  • A method to add a marker to the map indicating the location has been reviewed - added, redundant, false positive
  • Navigation controls to reorient the map if rotated
  • Integration of mapillary-js for interactive photo browsing

Mapillary Vector Layer showing up signage location and not image location

Ref #53 and #54

Mapillary seems to have updated it's traffic-sign vector layer with the probable location of the object (traffic sign) rather than the location from where the image was taken. This is great except that without the knowledge as to which side the sign is facing, it is quite difficult to gauge which two roads the restriction is applying to. Also, many a times, this detection is not accurate. Thus, it would be of extreme help if we could see both the location of the object as well as the location from where the image containing that object was taken in the osm-navigation map itself. This would simplify and fasten up our process of adding turn restrictions manifold.

image
image
image

image
tr01

In both the above cases, we had to look around in iD and JOSM to get the location of the same image containing the traffic sign to try and add it to OSM.

cc @planemad @gyllen @maning @geohacker @srividyacb @abhisheksaikia

Issues with hiding the mapped turn restrictions

The click button for hiding the existing turn restrictions is not working for nodes. It only hides the line features and leaves the nodes. It would be great if we can hide and unhide both point and line features as well.
screen shot 2016-05-31 at 11 26 50 am

cc/ @planemad

Style OSM turn restrictions better

Showing existing OSM turn restrictions on the map help to easily compare with Mapillary restrictions and add/update the data onto the map.

screenshot 2016-08-17 14 30 26

_Current styling of OSM turn restriction `from` `via` and `to` members in red_

@rasagy can you review the issues with this styling from a reviewer perspective and post your notes on how it should ideally look?

cc @andreasviglakis

Marker clusters for reviewed TR

It'd be great to have a cluster layer with numbers for reviewed TRs. This would make it possible to just look at an area and get an approximate number of reviewed features.

@planemad

Pulling out filtered stats

@planemad It would be great if there is a straight way to pull out stats straight from the Navigation Map from set time to time. This would allow us to have day to day stats(Valid,Redundant,Invalid) for that city during Canada mapping sprint.

Even better. From the data team usernames on this page it would be awesome if we can pull out stats only for our data team and total reviews seperately. So we can have a clear idea of how much community participation was involved and how much data team activity is involved.

cc @poornibadrinath

Mapillary object tiles at lower zoom levels

A recurring pain point while adding turn restrictions is not being able to have a high level overview of detected restrictions in a city, since the Mapillary vector tiles start at z14.

Would be great to have detected turn restrictions available at lower zoom levels from z10, and other objects available at higher zoom levels.

cc @gyllen @geohacker @ajithranka

Missing mapillary images when loaded in JOSM

Mapillary images shown in the osm-navigation-map are not being loaded in JOSM. I came across this issue quite a few times, so thought of ticketing this.

screen shot 2016-07-27 at 3 40 45 pm
Mapillary image detected in osm-navigation-map

screen shot 2016-07-27 at 3 40 55 pm
No mapilary image in loaded on JOSM

Imagery location:

This issue is already mentioned in our previous mapping task aswell

cc:/ @planemad @geohacker

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.