OpenStreetMap logo OpenStreetMap

Changeset Кайчан Шәрех
171272484 2 көн элек

Thanks for elaborating on how you are using this data. It's always difficult to know what the reasons, motivations or intentions of changes are without some more communication.

Yes, as I said, the signage here is really stupid and practically covers pretty much all cases, but that's not what it legally means. And OSM tags have specific well-defined meanings.

To elaborate on terminology. "General traffic" on OSM means "everyone", same as it means for all other similar tags, like access, weight/height restrictions, parking rules, etc. It means - everyone unless there is an exception via a sign, some rule or otherwise.

"Maximum" does not refer to the maximum between different signs/modes, it refers only to the maximum for that specific target. It can lowered, it can be raised, it can be cancelled, it can be an exception or the default. It all depends on the actual signage and traffic laws. This is true for all restrictions for all sorts of things - maximums, minimums, advisory, etc.

To explain this even more. Let's say every road in Riga is tagged with `maxspeed=50`. That is the default and applies to everyone. Then some roads have a 30 sign - for everyone. This cancels and lowers the normal limit for everyone and sets a different one. So it becomes `maxspeed=30`. It could also be a 70 sign. Then it raises the limit to `maxspeed=70` for everyone. Then some roads have a 30 sign but for HGVs only. This does not cancel the normal limit for everyone. This only changes the limit for HGVs. So it becomes `maxspeed=50` + `maxspeed:hgv=30`. And in very rare cases, you might even have something like a 70 sign for cars. So it raises the limit for cars only. So it would be `maxspeed=50` + `maxspeed:motorcar=70`. This is the case on this road, just taken to a (silly) extreme.

I would like to help you with your issue, sure. So I understand your app/service is having trouble with this exception. But be aware that it would also have issues with any other locations where the signs reduce or increase the speed for the specific modes of transport. These are infrequent in Latvia and generally in the world, but also there are plenty of such examples. And that's just scratching the surface of the real-world complexity. And these are the same rules used for access restrictions and many other rules.

Whatever routing or speed detection software you are using, you need to tell the developers to actually parse/implement the correct OSM tags. These tags have existed for a long time, so these are not new or obscure. They are also designed to be logical and machine-readable and parsable. This just takes a little more care in implementation than reading a single `maxspeed` value and assuming it's always valid.

If your ride-sharing is using cars, then it should be using the value hierarchy `maxspeed:motorcar` -> `maxspeed:motor_vehicle` -> `maxspeed:vehicle` -> `maxspeed` in that order of priority. This is the same hierarchy as used by access and you can see the full list here osm.wiki/Key:access#Land-based_transportation . So if there is a `maxspeed:motorcar`, then it does not matter what `maxspeed` or `maxspeed:vehicle` is - it's the `maxspeed:motorcar` that matters, like in this example. More specific mode of transport overrides the less specific one. This is why `maxspeed=50` + `maxspeed:hgv=30` means 30 for HGVs not 50 - the `:hgv` overrides the broader limit. And same is true for `maxspeed=50` + `maxspeed:motorcar=90` - the `:motorcar` overrides the default limit, even if it's in the "other direction".

When in real-life there are differences between modes of transport like this, the software will indeed have to actually consider which mode of transport it's for. `maxspeed` only describes the most broad legal value. Then additional subtags describe differences and exceptions. And I should mention there are also many incomplete, inaccurate and plain wrong values in the map data. As we slowly improve previously-inaccurately tagged roads like this one, it's inevitable that some software will break if it hasn't actually implemented tag parsing correctly.

The road like osm.org/way/1117665582 in your last example is set to `maxspeed=70` because it has a single general traffic speed limit sign that applies to everyone - https://www.mapillary.com/app/?pKey=1240676136946087&focus=photo . It's not an exception for cars or something like, it's for everyone. This is what almost all speed limit signs are like in Latvia, yes. Luckily, this also means software that only parses one value gets the right value. But that's just due to the tags are designed to have sensible hierarchy and traffic signs are usually logical.

I know this is already a lot of information for a complex topic. But just for your consideration, take this road as an example: osm.org/way/826601696 - it has `maxspeed=50` + `maxspeed:conditional=30 @ (Mo-Fr 07:00-19:00)`. Does your software think this road is always 50? Because for practical purposes, most of the time it's actually 30. I realise that most software does not implement every rule (especially complex conditions) like this and mostly responds only when users complain. But as I mentioned the real-world is messy.

Let me know if you have questions, I'm happy to answer them and direct you to whatever resources I am aware of.

171272484 2 көн элек

So the case we have here is this sign combination: https://imgur.com/VsiC1py . This is definitely not how it's usually (and logically) done, but that's what we have.

The relevant subsection from the article would be osm.wiki/Key:maxspeed#Vehicles

In this case, there is no signed speed limit for "general traffic" for the primary `maxspeed`. The speed limit for general traffic here is 50, implied by default urban speed limit. Then the signs set the *exceptions* for specific transport modes to 90 and 70.

Now, is the sign combination here stupid and does the 70/90 limit cover 99.9% of practical cases? Yes. But technically it does not cover bicycles, quads/tricycles, mopeds, horse carriages, electric scooters, different types of psvs or any other legally-distinct transport modes that those supplementary signs don't apply to. That is the result of car-centrically signing exceptions like this - they will not apply to all cases. So we also reflect that into `maxspeed` subtags.

If the signs were instead more logically set like this similar to your example: https://imgur.com/x1kuE61 , then, yes, it would be `maxspeed=90` + `maxspeed:hgv/bus=70` because the top sign would refer to everyone, i.e. "general traffic", and the 70 is an exception.

You didn't link anything in your last message, so I'm not sure which area you are referring to. I am sure there are still many errors and mistakes with max speed tagging, but I would have to see the exact example to say more. If there is only 70 sign and nothing else, then yes, it would be just `maxspeed=70` for everyone.

171272484 3 көн элек

Hello,

Can you please check the existing tags and element history before changing them. It was previously already mentioned to be more careful with max speed tagging. All the speed restrictions are tagged here exactly. This road is in the city limit and the urban default speed is 50. The 90 is an exception for cars and motorcycles given by signs on each segment.

163024931 4 көн элек

Oh, by the way, osm.org/way/168320202 is actually signed as a shared cycleway from the NW end (but it's the only sign along here). I biked by here today and noticed it and thought to myself "hold on, has this always been here?" So that would actually probably solve your example if we retag this. (Of course, the whole routing issue is broader than that.)

171223731 4 көн элек

Hello,

I undid your change here because the default speed limit is not 90. It is the default 50 within urban/city limit with 90 being an exception for cars and motorcycles specifically. This is already fully correctly tagged in subkeys matching what the traffic signs show.

163024931 5 көн элек

Yeah, I have tried to generate cycle routing in many engines and they all feel like beta versions. I wish there was an easy country-based solution to routing that didn't require everyone to jump through hoops, but I also believe OSM needs to be consistent not just at a country level but worldwide level to remain useful and competitive. Adding inconsistent data now will inevitably lead to maintenance for decades to come. I think this is the view held by most mappers with allowance for discrete exceptions. I guess I digress a little here, but since you mentioned motivations, I certainly err on the side of correct (whatever that means) in long-term.

You mention a trend to remove `bicycle=yes`. One thing I will disagree with is describing removing `bicycle=yes` as a trend rather than the trend that people have been *adding* `bicycle=yes` without broader discussion, without referring to any OSM guidelines and generally using personal experience. The few mappers I have asked either mentioned a specific router they had issues with, did not yet understand the traffic laws or just didn't really understand what access tags mean. In any case, there was never any broader discussion to fix such broad router issues with local OSM data changes. This sort of `bicycle=yes` tagging on sidewalks was literally everywhere from major trunk sidewalks to random living street sidewalks to sidewalks literally next to cycling infrastructure. So I did remove all of it fairly indiscriminately, although I did look at each place briefly and I'm more or less personally familiar with all of them. That said, places like bridges or your example are certainly one of the most likely candidates to be an exception.

I would be curious to see how mappers deal with what routers do in all the other countries that have similar rules to Latvia. In fact, Latvia is one of the last "developed" countries to actually add the explicit "no bicycles on sidewalks except..." and make an "official statement".[1] Many other countries have had this codified for a long time. And terrible routing is certainly not exclusive to Latvia.[2] "Avoid bicycles on sidewalks" is pretty much the default scoring for all routers. It's just that we have so little cycling infrastructure that it's incredibly obvious. And it's not even sidewalks, routers just bias roads a lot.[3] And given that this is a systemic problem with routers, I don't see how we can solve it on OSM end. Like, if every other sidewalk we map needs to be an exception, then clearly something else is fundamentally wrong.

The "solution" to connect the cycleway to the highway is technically how it's usually done, yes, at the end of cycleways that have to merge into traffic. It would be incredibly stupid here, but that is the legal "primary" route with sidewalk being the alternative. Although I should note in this particular example, I don't think any of the default routers will score the route to actually use the trunk road over other sidewalk "alternatives" and it's already connected to the trunk at the crossing. Even cycle.travel, which is arguably the best cycle router, does crazy stuff in this location (although it does actually route along the trunk road in this section if you put the points apart).

[1] https://www.lsm.lv/raksts/dzive--stils/motori/lukstins-ietve-ir-paredzeta-tikai-un-vienigi-gajejiem-velosipediem-iznemuma-gadijumos.a127199/
[2] osm.org/directions?engine=fossgis_valhalla_bicycle&route=60.384%252C23.127111%253B60.383931%252C23.125663
[3] osm.org/directions?engine=fossgis_osrm_bicycle&route=57.313513%252C24.41389%253B57.311653%252C24.412565

171107408 5 көн элек

Hello,

What is this road osm.org/way/1425453312 supposed to be here? It's not on the aerial. If you have surveyed this as a new road, then it needs an actual classification.

163024931 6 көн элек

Legally, cyclists are allowed on sidewalks as an exception, not the rule. Bicycles are to use cycling infrastructure or roads. In other words, in Latvia on sidewalks, it's `bicycle=no` (like most countries). Now, the exceptions to use sidewalks in Latvia are very broad - traffic, weather, obstacles, etc. And enforcement is non-existent. Plus, it's culturally so embedded that bicycles use sidewalks that hardly anyone even knows the actual traffic laws. So to compromise, we don't actually put `bicycle=no` on sidewalks, we just leave it with the default value and let routers (profiles) decide if they want to follow the letter of the law or be more loose with restrictions (which most do). But putting `bicycle=yes` implies that it's no longer the default restrictive traffic rules, but bikes are specifically explicitly allowed by some sign or something. That's just not the case for 99% of sidewalks and is incorrect data.

But I guess that's the problem with incomplete car-centric routers, isn't it. Do we map for the routers or do we map the actual restrictions? Because if we choose to map for the routers, then we need to add `bicycle=yes` to every sidewalk across the entire Latvia. Because we can't just subjectively cherry-pick some of them to "fix" routing for specific routers in specific locations. This would fail OSM subjectivity and verifiability principles. And we would be doing something weird just for Latvia. Other countries that have similar traffic laws don't do this (as far as I know).

Your example is a great example of what happens with automated programs when cycling infrastructure in Latvia sucks, while laws do not represent reality. So, legally, you should attempt to cycle on the road here and if that's dangerous or impossible, only then use the sidewalk and then cycle at slow speeds, give way to all pedestrians (which frankly are here always), slow at intersections, etc. Is this stupid and should this logically be at least a shared cycleway? Sure. But that's how it's legally defined and that's how any accidents here will be treated. So, yes, I call `bicycle=yes` "bogus" and that's putting it mildly, because it's legally `bicycle=no` with a long list of exceptions here regardless how people actually use it.

Are current laws stupid? Yes. Is infrastructure bad? Yes. Are router profiles poor? Yes. But I don't think the solution is to massage OSM data to fit them for something so broad. I can understand some exceptions in some cases. But here we are talking "sidewalks" as a concept throughout all of Latvia. I personally generally describe sidewalks in Latvia akin to `bicycle=permissive` in practice and I would agree to make this a country-level default access for routers even if it's not technically correct. If I recall right, I mentioned this before although we never got around to finishing the country defaults table.

Now, all that said, if multiple mappers discuss, argument and agree to mark certain road segments like this with `bicycle=yes`, then that's fine by me. But this *has* to be discussed and recorded, we can't just have everyone individually tagging subjectively to improve their favourite router.

170925599 7 көн элек

It looks like you have not fixed the issues, but are continuing to edit elsewhere and have not replied to any of the recent changeset comments. Because this changeset breaks navigation, I have reverted it for now.

104318807 8 көн элек

Similarly, these were both added at the same location osm.org/node/8709526415 and osm.org/node/8709526379 .

170248053 10 көн элек

In this changeset, you changed an apartment building into residential landuse. I am not sure what you were trying to change here, but I have reverted this for now as it seems to be a building according to aerial and cadaster data.

170500193 10 көн элек

Sveiki,

Nosaukumus tulkot nevajadzētu, ja tie nav oficiāli nosaukumi. OSM nenorāda tulkojumus, bet jau esošus nosaukumus (kas var būt tulkoti, bet tos mēs netulkojam paši). Piemēram, tūrisma mājas lapā vai uz informācijas dēļa vai kādā oficiālā datubāzē. Lielākajai daļai vietu nosaukumu citās valodās nav. Citādi sanāk patvaļīgi tulkojumi, kas var arī nebūt pareizi. Piemēram "dzirnezers" nav "lake" un "tautas nams" nav "community house" (ja vien tas nav šādi nepareizi tulkots oficiāli) utt. Arī īpašvārdi netiek burtiski tulkoti piemēram "Baznīcas ceļš", kas tad būtu "Baznīcas road" vai "Baznicas road". Skatoties piemēram https://kandava.lv/en tulkots tur nav gandrīz nekas. Šādus aprakstošus tulkojumus var gan pielikt `description:en` tegā.

170518604 10 көн элек

You added a fence here instead of what I assume is a driveway. This breaks routing for the road and footway that are now crossing a fence, so please be more careful.

170539236 10 көн элек

I have reverted this edit because it added a large amount of invalid fords breaking routing along all these roads. Please review your edits before adding so many features that don't exist.

170590542 10 көн элек

Please actually fix issues with the roads that you add using Rapid, which is your responsibility if using semi-automated tools. You left the road with an incorrect layer value, overlapping buildings, overlapping a wall, impossible geometry, misaligned.

170685818 10 көн элек

Can you please elaborate on your edits here? What is this ditch that flows uphill and connects to trenches osm.org/way/1423368941 ? Why are there ditch culvert between trenches like osm.org/way/1423368945 , what is here under the tracks and road ? Some of trenches you drew literally cross a highway like osm.org/way/1423368926 .

Please fix these features.

170786373 10 көн элек

Sveiki,

Latvijā mazciemus OSM apzīmē ar `place=hamlet` (nevis ar `place=village`, kas ir "pilnie" ciemi ar VZD robežām). Es izlaboju. Ņem vērā, ka Wikidata un citi avoti var būt novecojuši/nepareizi. Pilni VZD dati ir pieejami https://data.gov.lv/dati/lv/dataset/varis-atvertie-dati .

170925599 10 көн элек

Hello,

How do you know in this changeset and others that these are fords, e.g. osm.org/node/13094512758 or osm.org/node/13094512977 or osm.org/node/13094512859 and others ? They do not look like fords and it's very unlikely larger rural roads have fords like this.

This breaks navigation along these roads, so please check all of these locations promptly.

170216719 11 көн элек

Sveiki,

No kāda avota tu šeit iezīmēji takas?

Piemēram osm.org/way/1421214349 (kas dabā neeksistē ar apgāztiem kokiem) vai osm.org/way/1421214358 (kas iezīmēta pāri sētai slēgtā veikala teritorijā) vai osm.org/way/1421214361 (kas daudz gadus jau aizaugusi) vai osm.org/way/1421214350 (kas iezīmēta caur sētu privātīpašumā) ?

168911652 22 көн элек

Šajā piemēra no novecojuša ortofoto izmaiņu sanāca maz, bet es to pieminu, jo var sanākt arī krietni vairāk kādā citā vietā. Labot ir parasti zināmi grūtāk nekā zīmēt jaunu, it īpaši, ja ortofoto nav pieejams un jāzīmē no mapillary/video.

Platformu tiešām es nebiju vēl paspējis pārzīmēt, jo nebiju vēl nobraucis pa to (tā ir īsāka). Paldies, ka sabīdīji.