[routerelaties in JOSM] Issue Continuity line

In een superroute-relatie geeft de continuity line aan of de deelrelaties goed op elkaar aansluiten. Maar niet of de deelrelaties zelf ononderbroken zijn.

Ik heb een enhancement request https://josm.openstreetmap.de/ticket/22174 gemaakt met de vraag of er een signaaltje inkan als de deelrelatie intern niet continu is. Bijvoorbeeld een rood bolletje of een onderbrekingstekentje in het continuity lijntje. Of het lijntje gewoon rood maken.

De deelrelaties worden voor het vaststellen van de continuity al nagelopen en de code of er een onderbreking is wordt binnen een routerelatie standaard al toegepast, dus ik vermoed dat het voor iemand die kan programmeren niet heel ingewikkeld is.

Het controleren van een LAW wordt dan veel makkelijker en sneller. Nu moet je alle deelrelaties openen en helemaal aflopen op onderbrekingen; als deze verbetering er komt hoef je alleen de onderbroken deelrelaties te openen.

Het is vrij complex om te maken (qua code en qui UI), omdat je niet per se de sub-relaties in JOSM beschikbaar hebt om die controle te doen (die moet hij dan downloaden op verzoek). Sowieso is het niet eenvoudig om die functionaliteit aan te passen. Ik heb een tijdje terug een bug in de relatiecode opgelost die voor ons als mappers heel simpel leek, maar waar best nog wat voor aangepast moest worden (de fouten die voorkwamen in de relatievolgorde bij het splitsen van wegen; die bug is er al een tijd uit nu). Ik zie het niet snel gebeuren in JOSM zelf, maar wie weet.

Waarschijnlijk kun je dit makkelijker voor elkaar krijgen met een plugin die de controle taken voor je uitvoert, maar ook die moet iemand maken. Een probleem is dat het werken met JOSM voor Java-ontwikkelaars (zoals ik) vrij omslachtig is door een gebrek aan moderne build-omgeving (geen Maven of Gradle) en de noodzaak om je IDE met de hand in te richten voor JOSM. Daar komt dan nog eens bovenop dat JOSM niet in een git-repo staat, maar in SVN, waardoor bijdragen niet via een pull of merge request gedaan kunnen worden, maar via patches die je in een extreem verouderde issuetracker moet plaatsen (wat voor plugins gelukkig niet geldt).

Je voelt al aan: het nodigt niet uit tot bijdragen. Ik slaag er van tijd tot tijd wel in (in tegenstelling tot Carto wordt daar wel gewoon samengewerkt met de gemeenschap en blijft het mopperen tot een redelijk tolerabel niveau), maar het kost veel tijd en moeite door de verouderde gereedschappen.

Ha Jeroen, ja jij weet er alles van! Toch heb je het destijds voor elkaar gekregen de sortering van split-node fietsroutes te verbeteren, waar ik nog steeds veel gebruik van maak!

Het probleem van de niet gegarandeerd aanwezige subrelaties is er nu ook, maar het is heel simpel: als de subrelatie er niet is of de leden zijn niet gedownload, dan is de continuity onderbroken. Er wordt niet om gevraagd. Ik vind dat prima; je leert dat als gebruiker snel genoeg, het werkt pas als je de subrelaties met leden volledig downloadt. Control-A, knopje “Geselekteerde leden in selectievenster zetten”, Control-A in selektievenster, rechtsklik, Alle leden downloaden. En floep, daar is je continuity-lijn.

Dus het is gewoon zo dat een niet of niet met alle leden gedownloade subrelatie losse eindjes en (als het opgepakt wordt) een onderbreeksignaal toont. Lijntje rood tonen lijkt me het simpelst en heel effektief, trouwens. De vorige en de volgende subrelatie zijn dan niet rood maar wel verkort (dat is het niet-aansluit-signaal).

Lastiger wordt het als je rekening moet houden met dat subrelaties zelf ook weer superroutes kunnen zijn. Volgens mij gebeurt dat nu ook simpelweg niet, maar ik heb het verrassend genoeg nog nooit gemist. Die ingewikkelde hierarchische relaties zijn meestal meer collecties van varianten en subcollecties per land, veel te complex om even in de relatie-editor van JOSM in te bouwen. Hoeft nu niet opgelost te worden.

Vaststellen of een route binnen een routerelatie continu of onderbroken is zie ik in veel toepassingen gebeuren. Josm zelf doet het denk ik ietsjes anders, die kijkt denk ik alleen per way of die aansluit op de volgende en de vorige en toont dan het bijpassende streepje. Maar dan is het een kwestie van een vlaggetje: zodra er een way niet aansluit, geldt de hele routerelatie als onderbroken. Een soort “dirty”- vlaggetje.

(wat een lekentaal he?).