Upload ... or not upload

Hi Mapillary team !

I have a big sequence from places where there is no pictures (for now).
My problem is that a part of the pictures are correctly geotaged, but another part is incorrectly positioned. I have sometimes a 100 meters shift along the road.

I’d like to take the time to manually move the pictures, but the sequence is 400km long and contain 25 000 images.

What should I do ? upload these pictures or not ?

1 Like

If you have a gpx file and the difference is constant over a longer period, you could make the exif gps tags with geosetter. You can adjust the photo time there so it matches the correct gps time

No, it’s not a constant shift. That’s the problem.

Did you take the sequence with the mapillary app or with a actioncam and wit an extern or an integrated gps

@StephaneP Awesome with the mapping! It looks like the bridge is blocking the satellite in this case. Does this happen very often for the sequence? Maybe it is difficult to check since it is a long sequence. We could try make a python script to check when this happens. This should reduce the number of photos that you need to check. We could probably also try to interpolate the gps position automatically later.

@yubin I had this this idea for a tool that let you set the coords for a few photos in a sequence (like the viaduct one in the above example that has a recognizable feature in it) and then calculates the location of the photos in between, based on the original gps track. I’m not sure what kind of tool this should be, maybe a web app, or a JOSM plugin. I think something like this could help in this case.

You could even do it yourself with excel :slight_smile:
If you have a gpx file, you can convert it to regular text (csv file) with http://www.gpsvisualizer.com/convert_input
You can read the converted file with excel. In the file there is a column with speeds. Then you mark all the columns with a strange speed (for example all speeds above 150 or below 80) After that you check all the marked sections, if you have a fault in the gps reading, you should have a high speed followed by a low speed. Erase those sections.
Convert the updated csv file to a gpx with http://www.gpsvisualizer.com/convert_input
Use Geosetter to add exif data to your photos and set it to interpolate between to gps readings
Upload your sequence to mapillary and take a beer to celebrate :slight_smile:

what about divide this track in many little tracks and apply different offset for each?

this maybe will reduce you position error for many photos.

I don’t think the problem is the with the gpx as I have this shift at other places, with an open sky.
Yes it’s difficult to say how many time it occurs, perhaps 10 times, perhaps more. And the shift is not clear, it’s more like a progressive delay, so it’s difficult to split the sequence.

I’ve already manually corrected the images from a 6500 pictures sequence. It took me 10 or 20 hours. I won’t do it another time.
If I have to take 3 or 4 hours to have a better sequence, I could do it, but if it takes days of work, I will delete the sequence.

When I’ve corrected the location of my 6500 pictures sequence, I used the Photoadjust plugin in Josm. But with this plugin, you move the pictures one by one. If you could select several pictures and move them together, it will save a lot of time.

Another tool could be useful when like me, you geotag the picture from your action cam with a gpx :
With a long sequence, you could have a drift between the gps clock and the action cam clock. This tool would be able to rewrite the exif time to sync it with the gps clock.

BTW : I really don’t know what happened with this sequence. It was my first one with the Xiaomi Yi, and I don’t know if the culprit is the cam or the gpx.

I’ve used a trick for this a few times:

  • You load the photos together with the GPX file in JOSM.
  • Convert the GPX to a data layer.
  • The photos are now right above the nodes of the converted track.
  • Find a photo you want to correct the location of.
  • Move the node under it and split the way at this node using [P].
  • Find another photo to correct, move its node and split the way.
  • Divide the nodes on the way between the two photos/splits evenly with [shift-B] (of course this only works on straight roads)
  • Use any of the tools JOSM provides on the pieces of track you create.
  • Now combine everything into one track again using [Ctrl-A] and [C]. (this one is important not to forget)
  • Convert the data layer back into GPX.
  • Align photos with GPX.

When you move the nodes with [shift-B] it’s hard to see what the corresponding photo of a node is. So it might be easier to repeat the hole process (a few times) then to try to get it right the first time.

Another useful thing I did was change the key bindings of previous/next photo to [Shift-;] and [Shift-’]. This way You can hold the shift and move trough the photos with your left hand and use your right hand to (shift)click the photos to the correct location. This makes correcting geo-data of photos one by one twice as fast as with the original JOSM settings

If the probkem is caused because the clock in the camera is running too fast or too slow, you can adjudt the times in the gpx file. Convert the gpx file as I described above, load it in excel calculate the time difference for a few points along the track. Linear interpolate the timedifference for the points in between. Reconvert the file to gpx. Update the exif part of the photis and upload to mapillary

I have write the offset of a few pictures in this csv file.
If someone find a “rule”…


You take a lot of pictures on average 2 per second and up to 4 per seconds. It could be that your camerqa get overloaded and that the photofiles get created som time after you took the picture. If itis a complicated picture it maybe takes a few seconds more time, hence the delay.
But it could also be that it is a problem with the gps file. Check how stable the speed is.

So, @yubin, do I upload this sequence ?

@StephaneP Do you have the gps trace (capture time + gps positions) of all the images? Would be great if you can send me that and I can see if I can run a interpolate script on it (yubin at mapillary.com). Thanks!