Earlier this year, Facebook launched their new AI detected feature service MapWithAI along with their custom version of the iD editor, RapiD. Kaart quickly adopted RapiD into our road vectorization workflows and saw impressive efficiency and data accuracy increases for those projects by being able to focus on the quality of the edits with the time usually spent on vectorization. We recognized the potential impact on data coverage and editing efficiency but noticed a need for an integration with JOSM.
It’s a known problem that web based editors like RapiD are difficult to use where an internet connection is either unstable or is slow enough that it brings the editor to a halt. Incorporating the MapWithAI data into JOSM would facilitate use of the data in parts of the world where a network connection may be unstable.
In September, one of Kaart’s engineers, Taylor Smock, started working on a project to create a JOSM plugin that would utilize the MapWithAI service. With some technical support from the Maps team at Facebook, we have been able to create a plugin at feature parity with RapiD but with some JOSM-esque additions.
Since September the plugin has been through multiple iterations and rounds of testing and we are very happy to publicly announce the first release version of the MapWithAI JOSM Plugin! In addition to many of the specialized functionalities of RapiD, the plugin allows for access to tools that many experienced JOSM users are familiar with.
We’ve built a couple notable features into the plugin to increase efficiency and accuracy. We’ve added a new validator rule to check for routing islands. In addition to checking whether the geometry is connected to the larger road network, the rule will check the tags and restrictions to ensure the way can be routed on to.
To be able to quickly clean up address points, we’ve also built in the ability to merge addr nodes with buildings as a setting in the MapWithAI pane of the plugin preferences window. When you add a building from the MapWithAI service, the plugin will automatically merge that addr node with one of the building’s nodes if it lies within the building’s polygon, if and only if there is one addr node inside the building polygon.
You can find more details on using the plugin and its preferences in the JOSM wiki!
Please provide any feedback by creating an issue in the repo.
Comment from josmeditor on 9 January 2020 at 23:53
Thanks a lot! This is indeed hard and great work. Taylor has provided almost 60 top-quality patches to JOSM core and has become by far the largest contributor of merged patches the last year: https://josm.openstreetmap.de/query?resolution=fixed&reporter=~taylor.smock&col=id&col=summary&col=type&col=status&col=priority&col=milestone&col=component&desc=1&order=id
Comment from EditConscript on 10 January 2020 at 02:18
downloaded and tested the plugin. seemless integration, kudos Kaart
Comment from SimonPoole on 10 January 2020 at 13:09
And, would be totally inappropriate to inquire, who actually financed Kaart the development of the plugin?
Comment from the_node_less_traveled on 10 January 2020 at 22:40
Yes, the question is inappropriate but we will explain the development process. Taylor did initial development on his own time and Kaart supported it as a company project to get it to its final stage in a quicker amount of time. During the last stages of development, we asked for technical support from Facebook’s team when we ran into certain roadblocks and to make sure the tool is complementary to their project.
Comment from pangoSE on 11 January 2020 at 19:03
This looks very promising. Thanks a lot Taylor and Kaart!
Comment from vorpalblade-kaart on 13 January 2020 at 22:31
I don’t think we made it explicitly clear in the documentation, but you can add any server that provides OSM XML in preferences (or via remote control, for tasking managers). It just has to take a bbox in the same format as the main OSM API (left,bottom,right,top). So, if you have a county/state/country that has released address data into the public domain (or is allowing OSM to use it), you can spin up an OSM-like server and serve the data that way for importers.