Support Vespucci preset extensions in JOSM - GSoC'23 Final Report

Posted by Sarabjeet Sodhi on 8/28/2023

Introduction

Hi everyone, this is my final report for my GSoC’23 project: support Vespucci preset extensions in JOSM.

Previous diary entries

Getting started

Project Summary

About the project

Vespucci utilizes the JOSM preset format but has extended the configuration to work better outside of the narrow realm of JOSM. The project aimed at adding these additional extensions in JOSM. These extensions include deprecated, regions, exclude_regions, value_type, and alternative. see Vespucci preset documentation

Work done

The presets can have the additional attribute “regions”, which will contain the ISO codes of the countries to which the preset is applicable. “exclude_regions” will invert the meaning of “regions”, i.e., the preset should not be applied in countries specified under “regions”.

A warning message is displayed before the upload if the preset is applied in the country not defined in the “regions”.

Imgur Imgur

A boolean attribute “deprecated” can be added in the preset source file which indicates that a preset should only be used for matching and not for new uses.

Similar to the “regions” attribute, an error message is shown before uploading if an object is marked with a deprecated tag.

Imgur Imgur

The alternative preset contains the presets which are similar to the current preset being applied.

With this, we have an additional checkbox to filter the deprecated tags.

Imgur

What next

  • Support for value_type and some testing is left, which I plan to do after the GSoC period.
  • The validation for attribute “regions” is done after the user has applied the preset and therefore some UI element for validation is required.

Acknowledgements

I am extremely grateful to my mentors, Simon Poole, and Taylor Smock, for their invaluable guidance and support during the entire duration of the program.

I am thankful to Google Summer of Code for providing me with an opportunity to work with OpenStreetMap.