Hundred* thousand rides a day
Zverev, Ilya
We at Juno track a massive fleet of taxi cars in a relatively small area of New York. For all the internal mapping we use OpenStreetMap — and we are naturally interested in it having zero road errors. One way to ensure that is to validate it against tens of thousands GPS traces we get every day. In this talk we'll look at the relation of traces and map data in OSM, find a few ways to improve OSM using these traces, and see the validation system we made.
 Hello everyone. So, I am Ilya Zverev and I come from OpenStreetMap. Most of you know what OpenStreetMap is. It's an open map which everyone can paint. And OpenStreetMap has one issue. Well, not exactly one, it has millions of problems. But this one comes from the nature of the project. It's the biggest one. OpenStreetMap is open data. And to make open data you have to rely on even opener data, like public domain level of open. And the sources for OpenStreetMap is very hard to find because of this, because there is very few sources which are open enough for OpenStreetMap. And this hindered the development of OSM for a very long time in the start. Because first cities were drawn using only Landsat imagery, which is very crude, like 15 meters per pixel, and manually collected GPS traces, which are also not great, but you can see that at least they make road network you can trace. GPS traces are still considered the main source for OpenStreetMap. They are featured very prominently on the website. There is even a link for them. People are still uploading them, not many, just 100 a day or so, but still. And people are tracing over GPX. They are primary source, which means all other sources are aligned to GPS traces. But of course many years have passed, and thanks to many big companies, we now have a lot more detailed sources, like detailed imagery for all the world, thanks to S3, Mapbox, Digital Globe, and Bing, of course. We have StreetView, thanks not to Google, but to Mapillary, the open alternative. And we have a lot of vector data, like building footprints for all of the United States, thanks to Microsoft, road network for Netherlands, thanks to A&D, and a lot of local sources for data. So there are so many sources that you basically can draw anywhere on the map. But of course these sources have issues as well. And the main issue is that they are not always recent. Like this imagery was taken four years ago, but it doesn't actually say so on the imagery itself. You have to know where to look. The same for StreetView. You may not notice it, but StreetView images can be taken like two years ago. The same for vector data, same for even GPS traces. People are still tracing the map from traces uploaded ten years ago. So opposite map is considered to be very recent, very quality map, but in fact we all, editors of OpenSteatMap, are using sources that are very old. We are making the map of yesterday figuratively, which means years, half a year, a year ago. And that is the main issue with sources in OpenSteatMap. So a bit about myself. I work in a company called Juno. This is a taxi service like Uber, but works only in New York. If you're in New York, try using it. It's very generous to drivers. And on my job, I work with vast amounts of data collected from all the rights, from all parts of infrastructure. For example, I work with all right data collected, like where people get on the car, get dropped off, all the timestamps, locations, all the toll information, speeds and so on. And of course, a row of GPS traces from the rights. They look like this. There, of course, a row. And in build-up areas, you might know that GPX signal tends to drift off quite a lot, especially in areas like Manhattan with very high buildings. So how do you work with it? How do you analyze it and make any calculations? There is a process for that. And Peter may have talked about it in his graph-oper presentation. It's called map matching. You basically take every point of the trace and find the road segment that was most likely traveled. And it's not always nearest road segment. As you can see, drift-offs quite significantly. But using complex processes involving Markov chains, predictions and stuff like that, you finally get road segments, which you can do your work with. These algorithms are pretty well implemented in open source decisions. There is a SRM which we use. I believe Graph-Hoper also can do it. So now we have road segments. That's theory. So when I came to Juno, as you know, I come from open-state map and I have been thinking, how can I help my project? What can I do to improve open-state map itself, working at Juno? I cannot, of course, publish road GPS traces for people to trace because that will be breach of privacy and corporate stuff. But it turns out one of my colleagues have already started working on a very interesting thing. He basically took all the traces we had for a day, all 50,000 of them. I really hope we'll have 100,000 in a year. He matched them to opposite map road network, all 50,000 and started looking for anomalies. Anomalies. For unexpected loops, for places where matched roads diverge from road track because these mean that there is narrow and opposite map. That there is some one-way road that's painted, tagged incorrectly. That there is some segment missing and so on. I took over the project and made it more production ready. It looks like this. You can see that traces from our taxi drivers help find quite a lot of issues in open-state map. Like here, red traces of the road trace from the car and the blue one is matched to open-state map. You can see that there is probably some small segment in OSM that's marked one-way incorrectly. What I did is basically sped it up. Now it processes like a million of rides in under five hours. I made a nice user interface so I can immediately see errors on the map and a lot of other stuff. It's continuous. It runs every day, so every morning I start with fixing the most prominent errors in open-state map. These are other examples of such errors, like unconnected segments and stuff. There was around 2% of rides matched incorrectly when I started. Now it's like 1 in 200, which is quite great, but not perfect. Some false positives come from, for example, a sudden drift of GPS signal, which obviously cannot match to anything, or when taxi drivers make sudden U-turns to turn left when it's forbidden. But mostly it's okay. One time I started my morning with finding that more than 100 rides were matched incorrectly in West Manhattan because somebody has reversed a couple of streets, one-way streets. I started investigating it because you don't just correct it without understanding what happened. I opened a satellite imagery, so the street was heading that way, and people reversed it to face that way. You can see that cars are stationed in the new way, the way that has been fixed. I opened Google Street View, and again, it looks like it's one-way street, it's westward, so the edit must be right. But I still have 100 rides that tell otherwise that it must be an error. When the street was headed eastward, it was all okay. So what happened? I started Googling, and it turns out that four months ago the Department of Transport indeed reversed the direction of the street. But it was just four months ago, and all the sources we have, like satellite imagery, like Street View, they don't reflect it, because satellite imagery was taken like half a year ago, and Street View is from 2017. I wrote about it to OSM editor who made the change, asking them to be more careful, and from the answer, I got two things. First, well, I was answered by Lyft's employee, Lyft is now a taxi service, and she basically said that she's a part of OSM mapping team, and she didn't have another source, which means that Lyft, as well as Uber, as well as any big company that uses just spatial data, they use OpenStreetMap, that's for sure. We know that everyone uses OpenStreetMap at this moment. But what's more important, they have a dedicated mapping team, a group of people who fixes errors on OpenStreetMap, which they can find. And the second thing is they don't have recent sources, working at Lyft and even bigger companies than ours. And that is, again, the issue with sources for OpenStreetMap. So being a person involved in the OpenProject, I started thinking, how can I invent, how can I give more better sources? Because I found the error while they didn't. So there is Dpx traces. We've got, every minute we get like a dozen new writes, or a dozen new raw Dpx traces for the city, but we can't share them. So how does it happen in OpenStreetMap? Actually, in OpenStreetMap, nobody downloads Dpx files anymore. Well, nobody uploads them, but that's another thing. Because working with Dpx is very hard. It's a complex format, it takes a lot of memory, and when there is a lot of writes, it's very hard to trace over Dpx traces. So instead, people just add Dpx tiles there. It's all the same traces, but rendered in raster tiles. The color means direction of travel. So the blue one is traveling to the east, and red is to the west. So you can immediately see one waste trace and two waste trace, and where can you go? So I looked at the Dpx tile layer for Manhattan, and it was abysmal. It's just a couple of wiggly lines in Manhattan where there's a lot of people living and working. So obviously, this couldn't be the source for lift mappers, or for any mappers. So what I did was took the source code that produced these tiles, because as everything else in OpenStreetMap, it's open source, and applied them to our Dpx traces. Come on. Yeah, that's what I got. It's a trace just for one day for the area around the street in question. And you can see that there are some one-way streets. You can learn the direction and so on. So it looks pretty useful, much better than traces in OpenStreetMap. And the important thing is these are not raw data, not Dpx traces. They have no metadata, which means this is sufficiently anonymized for publishing. So now we have a daily built Docker container with tiles for writes, which happened yesterday. It's just one day of travels in a taxi service. So this container is built daily. It's published internally at the moment and ready to be published elsewhere. And what's more important is that we've got permission to publish it for the public. There are some DevOps issues, but in a week or two, it will be accessible to any OpenStreetMap editor. And with that, it will become the most recent source in OpenStreetMap ever. It's only for New York, sadly. We operate only in New York and New Jersey soon. But even then, it's basically, you can see where cars drive the day before today. Like yesterday or the day before that. So if a road is closed, then you will notice it on this map the next day. So it is very recent. Yeah. So you may believe that after publishing this, there will be no more errors in New York City. Of course, that's not correct because publishing source doesn't mean you instantly get a readymade map. If that was the case, then since we have detailed satellite imagery for most of the planet, we would have the most detailed map for the entire planet. And that is, of course, not correct. There are still a lot of places which have roads and buildings, but virtually no map data. So how do you make people, make mappers use the source that you give them? The common answer is you take this big task and split it in steps. The thing that quality assurance tools usually do, they give you a list of errors and you can fix them one by one. And we have such tool, called MapRollette. In here, for example, it shows you a segment of the street and asks you to specify how many lanes it has. You can see a number of lanes from satellite imagery. So all you have to do is open editor, enter a number and hit upload. Then it gives you the next task, the next road segment, and the next one. So a couple hours pass and you have made a substantial contribution to OpenSteetMap. So what I'm doing now, it's my job, is linking graphilidator with MapRollette. People in New York or in United States in general can go and fix the remaining errors in the road network. It's worked. It turned out a bit more complex than I expected because I had to fix MapRollette as well. There are pull requests still going. But it will be done, I hope, in a week or two. So when I finish it, I may explore other ideas because I still have this large pile of GPX traces, which I can analyze however I want. So what else can we get from it? We can validate highway classification, like confirm that the road that is very prominent on the map has indeed a lot of rights going over it. We can find one-way streets that are incorrectly mapped as two-way, because we don't validate for that currently. Missing turn restrictions, if you see 100 cars turning right at the intersection, only right, then it's most likely you cannot turn left there. And speed limits, although I wouldn't trust taxi drivers to obey speed limits. If you have any other ideas, I'm open. So what is this all about? When a company, corporation does something, you can believe they will follow through. They have money, they have resources, they have people that oversee the project. So they are fine with their projects. But open projects, they rely only on you, which means if you don't think about your open projects, then nobody will. Only people in the community are responsible for open projects, so you cannot expect somebody else to do it for you. Like, when I left MapsMe to work on Juno, I expected to stop contributing to OpenStreetMap, or not to contribute as much. But even on the new job, I always remember that I come from OpenStreetMap, and the needs of my project are still not first, but second in line. And that's what helped me to find new ways of helping OpenStreetMap. So that's also on the most of you. If you work for a company or for government, see what you can help with opening. Maybe you can help the company open some source code that's not crucial for your project, or some geodata, because we have too few geodata right now to make a pretty good map. And if you don't work for such a company, then find a friend who does. So that's all. Thank you. We have some time for questions. Regarding restrictions, there are so many options you can find in the world, especially in New York, like turn restrictions that don't work the whole day. You see on the street view that there is a clear restriction you can turn left, and in OpenStreetMap you also can turn left. But then you zoom in and you see that this restriction applies only for working hours. So you have to fix OpenStreetMap to reflect that. So the restriction, the signage in the real world is very complex. So you have to learn the many interesting ways people in OpenStreetMap try to reflect that in their tagging. You mentioned GPS reception being a problem in the end of the calendar. I think OpenStreetCam uses ODB2 to do basically dead record. If you know the car is turning, then you can turn your retrace. If you looked into that at all, the journey code down there can be used. Well, OpenStreetCam indeed did a great thing with improving GPS signal. Because when you have only GPS receiver or your phone, then the device doesn't have much to work with. It just has to rely on signal from satellites. And what OpenStreetCam did was to allow to plug into cars system to get information about its speed and angle, the wheels are turned to improve the GPS signal using this information. So it obviously works better in areas like Manhattan when something is obstructing the satellites. But of course there is a drawback why people are not using it on daily basis. Because you have to have a device that plugs into your car bus. And you have to pair it with the phone. In my case it didn't work. I couldn't just pair it with the receiver. And if everything else works, then again it connects the phone via Bluetooth. Bluetooth often just drops connection. But if everything else works, then your OpenStreetCam can help get a better signal. But I work at a taxi company and we have several thousand drivers and we can't distribute the same thing to them. So it was hard enough to make them use the single phone system. But giving extra things, this just won't work. So the question was can I use my phone as a dashcam and then use the dashcam footage to improve the map? Yes, of course. But not the way professional companies do it. We have Mapillary which is a street view that you can collect yourself. Basically use the phone as a dashcam and it will make photos and send them to the server. And then you can use that footage to manually add things you have seen to the map. There are ongoing attempts to streamline the process. Like Richard Fairhurst is working on an editor that basically gives you a photo from Mapillary. You click on the photo, like on the shop or on the sign, and it automatically places markers on the map and allows you to describe what you have clicked on. But it's still in early stages so I expect in a year or two it will be easier to process such dashcam images. Okay, one last question. Why is there so little Mapillary in New York? I have no idea. Maybe we should look at open streetcam data. But in New York we often have to rely on Google Street View to cross check errors because there is very little in Mapillary. Okay, thank you very much. Thank you. Thank you.
 Hello everyone.  So, I am Ilya Zverev and I come from OpenStreetMap.  Most of you know what OpenStreetMap is.  It's an open map which everyone can paint.  And OpenStreetMap has one issue.  Well, not exactly one, it has millions of problems.  But this one comes from the nature of the project.  It's the biggest one.  OpenStreetMap is open data.  And to make open data you have to rely on even opener data,  like public domain level of open.  And the sources for OpenStreetMap is very hard to find  because of this, because there is very few sources  which are open enough for OpenStreetMap.  And this hindered the development of OSM  for a very long time in the start.  Because first cities were drawn using only Landsat imagery,  which is very crude, like 15 meters per pixel,  and manually collected GPS traces,  which are also not great,  but you can see that at least they make road network you can trace.  GPS traces are still considered the main source for OpenStreetMap.  They are featured very prominently on the website.  There is even a link for them.  People are still uploading them,  not many, just 100 a day or so, but still.  And people are tracing over GPX.  They are primary source, which means all other sources are aligned to GPS traces.  But of course many years have passed,  and thanks to many big companies,  we now have a lot more detailed sources,  like detailed imagery for all the world,  thanks to S3, Mapbox, Digital Globe, and Bing, of course.  We have StreetView, thanks not to Google, but to Mapillary,  the open alternative.  And we have a lot of vector data,  like building footprints for all of the United States,  thanks to Microsoft, road network for Netherlands,  thanks to A&D, and a lot of local sources for data.  So there are so many sources that you basically can draw anywhere on the map.  But of course these sources have issues as well.  And the main issue is that they are not always recent.  Like this imagery was taken four years ago,  but it doesn't actually say so on the imagery itself.  You have to know where to look.  The same for StreetView.  You may not notice it,  but StreetView images can be taken like two years ago.  The same for vector data, same for even GPS traces.  People are still tracing the map from traces uploaded ten years ago.  So opposite map is considered to be very recent,  very quality map, but in fact we all, editors of OpenSteatMap,  are using sources that are very old.  We are making the map of yesterday figuratively,  which means years, half a year, a year ago.  And that is the main issue with sources in OpenSteatMap.  So a bit about myself.  I work in a company called Juno.  This is a taxi service like Uber, but works only in New York.  If you're in New York, try using it.  It's very generous to drivers.  And on my job, I work with vast amounts of data  collected from all the rights, from all parts of infrastructure.  For example, I work with all right data collected,  like where people get on the car, get dropped off,  all the timestamps, locations, all the toll information, speeds and so on.  And of course, a row of GPS traces from the rights.  They look like this.  There, of course, a row.  And in build-up areas, you might know that GPX signal  tends to drift off quite a lot,  especially in areas like Manhattan with very high buildings.  So how do you work with it?  How do you analyze it and make any calculations?  There is a process for that.  And Peter may have talked about it in his graph-oper presentation.  It's called map matching.  You basically take every point of the trace  and find the road segment that was most likely traveled.  And it's not always nearest road segment.  As you can see, drift-offs quite significantly.  But using complex processes involving Markov chains, predictions  and stuff like that, you finally get road segments,  which you can do your work with.  These algorithms are pretty well implemented  in open source decisions.  There is a SRM which we use.  I believe Graph-Hoper also can do it.  So now we have road segments.  That's theory.  So when I came to Juno, as you know, I come from open-state map  and I have been thinking, how can I help my project?  What can I do to improve open-state map itself, working at Juno?  I cannot, of course, publish road GPS traces for people to trace  because that will be breach of privacy and corporate stuff.  But it turns out one of my colleagues  have already started working on a very interesting thing.  He basically took all the traces we had for a day, all 50,000 of them.  I really hope we'll have 100,000 in a year.  He matched them to opposite map road network, all 50,000  and started looking for anomalies.  Anomalies.  For unexpected loops, for places where matched roads diverge  from road track because these mean that there is narrow and opposite map.  That there is some one-way road that's painted, tagged incorrectly.  That there is some segment missing and so on.  I took over the project and made it more production ready.  It looks like this.  You can see that traces from our taxi drivers help find quite a lot of issues in open-state map.  Like here, red traces of the road trace from the car  and the blue one is matched to open-state map.  You can see that there is probably some small segment in OSM  that's marked one-way incorrectly.  What I did is basically sped it up.  Now it processes like a million of rides in under five hours.  I made a nice user interface so I can immediately see errors on the map  and a lot of other stuff.  It's continuous.  It runs every day, so every morning I start with fixing the most prominent errors in open-state map.  These are other examples of such errors, like unconnected segments and stuff.  There was around 2% of rides matched incorrectly when I started.  Now it's like 1 in 200, which is quite great, but not perfect.  Some false positives come from, for example, a sudden drift of GPS signal,  which obviously cannot match to anything,  or when taxi drivers make sudden U-turns to turn left when it's forbidden.  But mostly it's okay.  One time I started my morning with finding that more than 100 rides were matched incorrectly  in West Manhattan because somebody has reversed a couple of streets, one-way streets.  I started investigating it because you don't just correct it without understanding what happened.  I opened a satellite imagery, so the street was heading that way,  and people reversed it to face that way.  You can see that cars are stationed in the new way, the way that has been fixed.  I opened Google Street View, and again, it looks like it's one-way street,  it's westward, so the edit must be right.  But I still have 100 rides that tell otherwise that it must be an error.  When the street was headed eastward, it was all okay.  So what happened?  I started Googling, and it turns out that four months ago the Department of Transport  indeed reversed the direction of the street.  But it was just four months ago, and all the sources we have, like satellite imagery,  like Street View, they don't reflect it,  because satellite imagery was taken like half a year ago, and Street View is from 2017.  I wrote about it to OSM editor who made the change, asking them to be more careful,  and from the answer, I got two things.  First, well, I was answered by Lyft's employee, Lyft is now a taxi service,  and she basically said that she's a part of OSM mapping team,  and she didn't have another source, which means that Lyft,  as well as Uber, as well as any big company that uses just spatial data,  they use OpenStreetMap, that's for sure.  We know that everyone uses OpenStreetMap at this moment.  But what's more important, they have a dedicated mapping team,  a group of people who fixes errors on OpenStreetMap, which they can find.  And the second thing is they don't have recent sources,  working at Lyft and even bigger companies than ours.  And that is, again, the issue with sources for OpenStreetMap.  So being a person involved in the OpenProject, I started thinking,  how can I invent, how can I give more better sources?  Because I found the error while they didn't.  So there is Dpx traces.  We've got, every minute we get like a dozen new writes,  or a dozen new raw Dpx traces for the city, but we can't share them.  So how does it happen in OpenStreetMap?  Actually, in OpenStreetMap, nobody downloads Dpx files anymore.  Well, nobody uploads them, but that's another thing.  Because working with Dpx is very hard.  It's a complex format, it takes a lot of memory,  and when there is a lot of writes, it's very hard to trace over Dpx traces.  So instead, people just add Dpx tiles there.  It's all the same traces, but rendered in raster tiles.  The color means direction of travel.  So the blue one is traveling to the east, and red is to the west.  So you can immediately see one waste trace and two waste trace, and where can you go?  So I looked at the Dpx tile layer for Manhattan, and it was abysmal.  It's just a couple of wiggly lines in Manhattan where there's a lot of people living and working.  So obviously, this couldn't be the source for lift mappers, or for any mappers.  So what I did was took the source code that produced these tiles,  because as everything else in OpenStreetMap, it's open source,  and applied them to our Dpx traces.  Come on.  Yeah, that's what I got.  It's a trace just for one day for the area around the street in question.  And you can see that there are some one-way streets.  You can learn the direction and so on.  So it looks pretty useful, much better than traces in OpenStreetMap.  And the important thing is these are not raw data, not Dpx traces.  They have no metadata, which means this is sufficiently anonymized for publishing.  So now we have a daily built Docker container with tiles for writes, which happened yesterday.  It's just one day of travels in a taxi service.  So this container is built daily.  It's published internally at the moment and ready to be published elsewhere.  And what's more important is that we've got permission to publish it for the public.  There are some DevOps issues, but in a week or two, it will be accessible to any OpenStreetMap editor.  And with that, it will become the most recent source in OpenStreetMap ever.  It's only for New York, sadly. We operate only in New York and New Jersey soon.  But even then, it's basically, you can see where cars drive the day before today.  Like yesterday or the day before that.  So if a road is closed, then you will notice it on this map the next day.  So it is very recent.  Yeah.  So you may believe that after publishing this, there will be no more errors in New York City.  Of course, that's not correct because publishing source doesn't mean you instantly get a readymade map.  If that was the case, then since we have detailed satellite imagery for most of the planet,  we would have the most detailed map for the entire planet.  And that is, of course, not correct.  There are still a lot of places which have roads and buildings, but virtually no map data.  So how do you make people, make mappers use the source that you give them?  The common answer is you take this big task and split it in steps.  The thing that quality assurance tools usually do, they give you a list of errors and you can fix them one by one.  And we have such tool, called MapRollette.  In here, for example, it shows you a segment of the street and asks you to specify how many lanes it has.  You can see a number of lanes from satellite imagery.  So all you have to do is open editor, enter a number and hit upload.  Then it gives you the next task, the next road segment, and the next one.  So a couple hours pass and you have made a substantial contribution to OpenSteetMap.  So what I'm doing now, it's my job, is linking graphilidator with MapRollette.  People in New York or in United States in general can go and fix the remaining errors in the road network.  It's worked.  It turned out a bit more complex than I expected because I had to fix MapRollette as well.  There are pull requests still going.  But it will be done, I hope, in a week or two.  So when I finish it, I may explore other ideas because I still have this large pile of GPX traces,  which I can analyze however I want.  So what else can we get from it?  We can validate highway classification, like confirm that the road that is very prominent on the map  has indeed a lot of rights going over it.  We can find one-way streets that are incorrectly mapped as two-way,  because we don't validate for that currently.  Missing turn restrictions, if you see 100 cars turning right at the intersection, only right,  then it's most likely you cannot turn left there.  And speed limits, although I wouldn't trust taxi drivers to obey speed limits.  If you have any other ideas, I'm open.  So what is this all about?  When a company, corporation does something, you can believe they will follow through.  They have money, they have resources, they have people that oversee the project.  So they are fine with their projects.  But open projects, they rely only on you, which means if you don't think about your open projects,  then nobody will.  Only people in the community are responsible for open projects,  so you cannot expect somebody else to do it for you.  Like, when I left MapsMe to work on Juno,  I expected to stop contributing to OpenStreetMap, or not to contribute as much.  But even on the new job, I always remember that I come from OpenStreetMap,  and the needs of my project are still not first, but second in line.  And that's what helped me to find new ways of helping OpenStreetMap.  So that's also on the most of you.  If you work for a company or for government, see what you can help with opening.  Maybe you can help the company open some source code that's not crucial for your project,  or some geodata, because we have too few geodata right now  to make a pretty good map.  And if you don't work for such a company, then find a friend who does.  So that's all. Thank you.  We have some time for questions.  Regarding restrictions, there are so many options you can find in the world, especially in New York,  like turn restrictions that don't work the whole day.  You see on the street view that there is a clear restriction you can turn left,  and in OpenStreetMap you also can turn left.  But then you zoom in and you see that this restriction applies only for working hours.  So you have to fix OpenStreetMap to reflect that.  So the restriction, the signage in the real world is very complex.  So you have to learn the many interesting ways people in OpenStreetMap try to reflect that in their tagging.  You mentioned GPS reception being a problem in the end of the calendar.  I think OpenStreetCam uses ODB2 to do basically dead record.  If you know the car is turning, then you can turn your retrace.  If you looked into that at all, the journey code down there can be used.  Well, OpenStreetCam indeed did a great thing with improving GPS signal.  Because when you have only GPS receiver or your phone, then the device doesn't have much to work with.  It just has to rely on signal from satellites.  And what OpenStreetCam did was to allow to plug into cars system to get information about its speed and angle,  the wheels are turned to improve the GPS signal using this information.  So it obviously works better in areas like Manhattan when something is obstructing the satellites.  But of course there is a drawback why people are not using it on daily basis.  Because you have to have a device that plugs into your car bus.  And you have to pair it with the phone.  In my case it didn't work. I couldn't just pair it with the receiver.  And if everything else works, then again it connects the phone via Bluetooth.  Bluetooth often just drops connection.  But if everything else works, then your OpenStreetCam can help get a better signal.  But I work at a taxi company and we have several thousand drivers and we can't distribute the same thing to them.  So it was hard enough to make them use the single phone system.  But giving extra things, this just won't work.  So the question was can I use my phone as a dashcam and then use the dashcam footage to improve the map?  Yes, of course. But not the way professional companies do it.  We have Mapillary which is a street view that you can collect yourself.  Basically use the phone as a dashcam and it will make photos and send them to the server.  And then you can use that footage to manually add things you have seen to the map.  There are ongoing attempts to streamline the process. Like Richard Fairhurst is working on an editor that basically gives you a photo from Mapillary.  You click on the photo, like on the shop or on the sign, and it automatically places markers on the map and allows you to describe what you have clicked on.  But it's still in early stages so I expect in a year or two it will be easier to process such dashcam images.  Okay, one last question.  Why is there so little Mapillary in New York?  I have no idea. Maybe we should look at open streetcam data.  But in New York we often have to rely on Google Street View to cross check errors because there is very little in Mapillary.  Okay, thank you very much.  Thank you.  Thank you.
Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_0_167.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_168_491.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_492_1487.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_1488_2015.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_2016_3383.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_3384_5495.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_5496_6203.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_6204_6911.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_6912_7499.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_7500_9587.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_9588_10487.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_10488_11591.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_11592_11771.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_11772_13427.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_13428_16499.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_16500_18383.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_18384_18467.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_18468_20771.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_20772_21251.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_21252_21479.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_21480_21611.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_21612_22583.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_22584_24983.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_24984_25403.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_25404_27395.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_27396_29855.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_29856_31859.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_31860_32411.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_32412_41507.png Hundred_thousand_rides_a_day_How_can_a_massive_amount_of_GPX_traces_help_us_improve_OpenStreetMap_vs_41508_41622.png
Hello everyone. So, I am Ilya Zverev and I come from OpenStreetMap. Most of you know what OpenStreetMap is. It's an open map which everyone can paint. And OpenStreetMap has one issue. Well, not exactly one, it has millions of problems. But this one comes from the nature of the project. It's the biggest one. OpenStreetMap is open data. And to make open data you have to rely on even opener data, like public domain level of open. And the sources for OpenStreetMap is very hard to find because of this, because there is very few sources which are open enough for OpenStreetMap. And this hindered the development of OSM for a very long time in the start. Because first cities were drawn using only Landsat imagery, which is very crude, like 15 meters per pixel, and manually collected GPS traces, which are also not great, but you can see that at least they make road network you can trace. GPS traces are still considered the main source for OpenStreetMap. They are featured very prominently on the website. There is even a link for them. People are still uploading them, not many, just 100 a day or so, but still. And people are tracing over GPX. They are primary source, which means all other sources are aligned to GPS traces. But of course many years have passed, and thanks to many big companies, we now have a lot more detailed sources, like detailed imagery for all the world, thanks to S3, Mapbox, Digital Globe, and Bing, of course. We have StreetView, thanks not to Google, but to Mapillary, the open alternative. And we have a lot of vector data, like building footprints for all of the United States, thanks to Microsoft, road network for Netherlands, thanks to A&D, and a lot of local sources for data. So there are so many sources that you basically can draw anywhere on the map. But of course these sources have issues as well. And the main issue is that they are not always recent. Like this imagery was taken four years ago, but it doesn't actually say so on the imagery itself. You have to know where to look. The same for StreetView. You may not notice it, but StreetView images can be taken like two years ago. The same for vector data, same for even GPS traces. People are still tracing the map from traces uploaded ten years ago. So opposite map is considered to be very recent, very quality map, but in fact we all, editors of OpenSteatMap, are using sources that are very old. We are making the map of yesterday figuratively, which means years, half a year, a year ago. And that is the main issue with sources in OpenSteatMap. So a bit about myself. I work in a company called Juno. This is a taxi service like Uber, but works only in New York. If you're in New York, try using it. It's very generous to drivers. And on my job, I work with vast amounts of data collected from all the rights, from all parts of infrastructure. For example, I work with all right data collected, like where people get on the car, get dropped off, all the timestamps, locations, all the toll information, speeds and so on. And of course, a row of GPS traces from the rights. They look like this. There, of course, a row. And in build-up areas, you might know that GPX signal tends to drift off quite a lot, especially in areas like Manhattan with very high buildings. So how do you work with it? How do you analyze it and make any calculations? There is a process for that. And Peter may have talked about it in his graph-oper presentation. It's called map matching. You basically take every point of the trace and find the road segment that was most likely traveled. And it's not always nearest road segment. As you can see, drift-offs quite significantly. But using complex processes involving Markov chains, predictions and stuff like that, you finally get road segments, which you can do your work with. These algorithms are pretty well implemented in open source decisions. There is a SRM which we use. I believe Graph-Hoper also can do it. So now we have road segments. That's theory. So when I came to Juno, as you know, I come from open-state map and I have been thinking, how can I help my project? What can I do to improve open-state map itself, working at Juno? I cannot, of course, publish road GPS traces for people to trace because that will be breach of privacy and corporate stuff. But it turns out one of my colleagues have already started working on a very interesting thing. He basically took all the traces we had for a day, all 50,000 of them. I really hope we'll have 100,000 in a year. He matched them to opposite map road network, all 50,000 and started looking for anomalies. Anomalies. For unexpected loops, for places where matched roads diverge from road track because these mean that there is narrow and opposite map. That there is some one-way road that's painted, tagged incorrectly. That there is some segment missing and so on. I took over the project and made it more production ready. It looks like this. You can see that traces from our taxi drivers help find quite a lot of issues in open-state map. Like here, red traces of the road trace from the car and the blue one is matched to open-state map. You can see that there is probably some small segment in OSM that's marked one-way incorrectly. What I did is basically sped it up. Now it processes like a million of rides in under five hours. I made a nice user interface so I can immediately see errors on the map and a lot of other stuff. It's continuous. It runs every day, so every morning I start with fixing the most prominent errors in open-state map. These are other examples of such errors, like unconnected segments and stuff. There was around 2% of rides matched incorrectly when I started. Now it's like 1 in 200, which is quite great, but not perfect. Some false positives come from, for example, a sudden drift of GPS signal, which obviously cannot match to anything, or when taxi drivers make sudden U-turns to turn left when it's forbidden. But mostly it's okay. One time I started my morning with finding that more than 100 rides were matched incorrectly in West Manhattan because somebody has reversed a couple of streets, one-way streets. I started investigating it because you don't just correct it without understanding what happened. I opened a satellite imagery, so the street was heading that way, and people reversed it to face that way. You can see that cars are stationed in the new way, the way that has been fixed. I opened Google Street View, and again, it looks like it's one-way street, it's westward, so the edit must be right. But I still have 100 rides that tell otherwise that it must be an error. When the street was headed eastward, it was all okay. So what happened? I started Googling, and it turns out that four months ago the Department of Transport indeed reversed the direction of the street. But it was just four months ago, and all the sources we have, like satellite imagery, like Street View, they don't reflect it, because satellite imagery was taken like half a year ago, and Street View is from 2017. I wrote about it to OSM editor who made the change, asking them to be more careful, and from the answer, I got two things. First, well, I was answered by Lyft's employee, Lyft is now a taxi service, and she basically said that she's a part of OSM mapping team, and she didn't have another source, which means that Lyft, as well as Uber, as well as any big company that uses just spatial data, they use OpenStreetMap, that's for sure. We know that everyone uses OpenStreetMap at this moment. But what's more important, they have a dedicated mapping team, a group of people who fixes errors on OpenStreetMap, which they can find. And the second thing is they don't have recent sources, working at Lyft and even bigger companies than ours. And that is, again, the issue with sources for OpenStreetMap. So being a person involved in the OpenProject, I started thinking, how can I invent, how can I give more better sources? Because I found the error while they didn't. So there is Dpx traces. We've got, every minute we get like a dozen new writes, or a dozen new raw Dpx traces for the city, but we can't share them. So how does it happen in OpenStreetMap? Actually, in OpenStreetMap, nobody downloads Dpx files anymore. Well, nobody uploads them, but that's another thing. Because working with Dpx is very hard. It's a complex format, it takes a lot of memory, and when there is a lot of writes, it's very hard to trace over Dpx traces. So instead, people just add Dpx tiles there. It's all the same traces, but rendered in raster tiles. The color means direction of travel. So the blue one is traveling to the east, and red is to the west. So you can immediately see one waste trace and two waste trace, and where can you go? So I looked at the Dpx tile layer for Manhattan, and it was abysmal. It's just a couple of wiggly lines in Manhattan where there's a lot of people living and working. So obviously, this couldn't be the source for lift mappers, or for any mappers. So what I did was took the source code that produced these tiles, because as everything else in OpenStreetMap, it's open source, and applied them to our Dpx traces. Come on. Yeah, that's what I got. It's a trace just for one day for the area around the street in question. And you can see that there are some one-way streets. You can learn the direction and so on. So it looks pretty useful, much better than traces in OpenStreetMap. And the important thing is these are not raw data, not Dpx traces. They have no metadata, which means this is sufficiently anonymized for publishing. So now we have a daily built Docker container with tiles for writes, which happened yesterday. It's just one day of travels in a taxi service. So this container is built daily. It's published internally at the moment and ready to be published elsewhere. And what's more important is that we've got permission to publish it for the public. There are some DevOps issues, but in a week or two, it will be accessible to any OpenStreetMap editor. And with that, it will become the most recent source in OpenStreetMap ever. It's only for New York, sadly. We operate only in New York and New Jersey soon. But even then, it's basically, you can see where cars drive the day before today. Like yesterday or the day before that. So if a road is closed, then you will notice it on this map the next day. So it is very recent. Yeah. So you may believe that after publishing this, there will be no more errors in New York City. Of course, that's not correct because publishing source doesn't mean you instantly get a readymade map. If that was the case, then since we have detailed satellite imagery for most of the planet, we would have the most detailed map for the entire planet. And that is, of course, not correct. There are still a lot of places which have roads and buildings, but virtually no map data. So how do you make people, make mappers use the source that you give them? The common answer is you take this big task and split it in steps. The thing that quality assurance tools usually do, they give you a list of errors and you can fix them one by one. And we have such tool, called MapRollette. In here, for example, it shows you a segment of the street and asks you to specify how many lanes it has. You can see a number of lanes from satellite imagery. So all you have to do is open editor, enter a number and hit upload. Then it gives you the next task, the next road segment, and the next one. So a couple hours pass and you have made a substantial contribution to OpenSteetMap. So what I'm doing now, it's my job, is linking graphilidator with MapRollette. People in New York or in United States in general can go and fix the remaining errors in the road network. It's worked. It turned out a bit more complex than I expected because I had to fix MapRollette as well. There are pull requests still going. But it will be done, I hope, in a week or two. So when I finish it, I may explore other ideas because I still have this large pile of GPX traces, which I can analyze however I want. So what else can we get from it? We can validate highway classification, like confirm that the road that is very prominent on the map has indeed a lot of rights going over it. We can find one-way streets that are incorrectly mapped as two-way, because we don't validate for that currently. Missing turn restrictions, if you see 100 cars turning right at the intersection, only right, then it's most likely you cannot turn left there. And speed limits, although I wouldn't trust taxi drivers to obey speed limits. If you have any other ideas, I'm open. So what is this all about? When a company, corporation does something, you can believe they will follow through. They have money, they have resources, they have people that oversee the project. So they are fine with their projects. But open projects, they rely only on you, which means if you don't think about your open projects, then nobody will. Only people in the community are responsible for open projects, so you cannot expect somebody else to do it for you. Like, when I left MapsMe to work on Juno, I expected to stop contributing to OpenStreetMap, or not to contribute as much. But even on the new job, I always remember that I come from OpenStreetMap, and the needs of my project are still not first, but second in line. And that's what helped me to find new ways of helping OpenStreetMap. So that's also on the most of you. If you work for a company or for government, see what you can help with opening. Maybe you can help the company open some source code that's not crucial for your project, or some geodata, because we have too few geodata right now to make a pretty good map. And if you don't work for such a company, then find a friend who does. So that's all. Thank you. We have some time for questions. Regarding restrictions, there are so many options you can find in the world, especially in New York, like turn restrictions that don't work the whole day. You see on the street view that there is a clear restriction you can turn left, and in OpenStreetMap you also can turn left. But then you zoom in and you see that this restriction applies only for working hours. So you have to fix OpenStreetMap to reflect that. So the restriction, the signage in the real world is very complex. So you have to learn the many interesting ways people in OpenStreetMap try to reflect that in their tagging. You mentioned GPS reception being a problem in the end of the calendar. I think OpenStreetCam uses ODB2 to do basically dead record. If you know the car is turning, then you can turn your retrace. If you looked into that at all, the journey code down there can be used. Well, OpenStreetCam indeed did a great thing with improving GPS signal. Because when you have only GPS receiver or your phone, then the device doesn't have much to work with. It just has to rely on signal from satellites. And what OpenStreetCam did was to allow to plug into cars system to get information about its speed and angle, the wheels are turned to improve the GPS signal using this information. So it obviously works better in areas like Manhattan when something is obstructing the satellites. But of course there is a drawback why people are not using it on daily basis. Because you have to have a device that plugs into your car bus. And you have to pair it with the phone. In my case it didn't work. I couldn't just pair it with the receiver. And if everything else works, then again it connects the phone via Bluetooth. Bluetooth often just drops connection. But if everything else works, then your OpenStreetCam can help get a better signal. But I work at a taxi company and we have several thousand drivers and we can't distribute the same thing to them. So it was hard enough to make them use the single phone system. But giving extra things, this just won't work. So the question was can I use my phone as a dashcam and then use the dashcam footage to improve the map? Yes, of course. But not the way professional companies do it. We have Mapillary which is a street view that you can collect yourself. Basically use the phone as a dashcam and it will make photos and send them to the server. And then you can use that footage to manually add things you have seen to the map. There are ongoing attempts to streamline the process. Like Richard Fairhurst is working on an editor that basically gives you a photo from Mapillary. You click on the photo, like on the shop or on the sign, and it automatically places markers on the map and allows you to describe what you have clicked on. But it's still in early stages so I expect in a year or two it will be easier to process such dashcam images. Okay, one last question. Why is there so little Mapillary in New York? I have no idea. Maybe we should look at open streetcam data. But in New York we often have to rely on Google Street View to cross check errors because there is very little in Mapillary. Okay, thank you very much. Thank you. Thank you.
itself, working at Juno? I cannot, of course, publish road GPS traces for people to trace traces we had for a day, all 50,000 of them. I probably some small segment in OSM that's marked way. You can see that cars are stationed in the travels in a taxi service. So this container is it. We can find one-way streets that are OpenStreetMap, and the needs of my project are footage to improve the map? Yes, of course. But at open streetcam data. But in New York we often