Jakie tagi użyć do zaznaczania ograniczenia prędkości? maxspeed:type?

Jak najlepiej tagowac informacje o ograniczeniu prędkości?

Spotkałem się z kilkoma metodami, najpopularniejsza chyba to by do source:maxspeed trafił typ prędkości a do maxspeed jej numeryczna wartość i jest to do tej pory stosowana metoda.

Ale jest też kilka wariantów:

  • do maxspeed trafia wartość symboliczna, nie numeryczna (np RO:rural)
  • dla niektórych przypadków pomijane jest maxspeed i wypełniane jedynie maxspeed:type
  • opis prędkości (sign, PL:urban, PL:zone30) trafia do maxspeed:type, nie do source:maxspeed

Ten ostatni pomysł mi się podoba - normalnie source:XYZ opisuje w jaki sposób zdobyto dane o XYZ, jedynie tag maxspeed był dziwny.

Czemu ten temat się teraz pojawił? Od https://github.com/westnordost/StreetComplete/commit/c7c9537657ceba3959915739d06cd752bf542c94 StreetComplete zamiast source:maxspeed używa maxspeed:type, sposób tagowania używany do tej pory w UK (i nadal, jeśli tylko to możliwe nie wypełnia pola maxspeed).

Pierwsza moja reakcja było zaprotestowanie że nikt tak w Polsce nie zaznacza prędkości - ale może chcemy się na to przestawić lub dopuścić obie metody jako sensowne? Czy wypełnienie pola maxspeed (wartością numeryczną lub symboliczną) jest obowiązkowe?

Innymi słowy - które sposoby otagowania drogi z strefowym ograniczeniem prędkości do 30 km/h jest najlepsze a które są dopuszczalne?

maxspeed=PL:zone30

maxspeed=30
source:maxspeed=PL:zone30

source:maxspeed=PL:zone30

maxspeed=PL:zone30
maxspeed:type=PL:zone30

maxspeed=30
maxspeed:type=PL:zone30

maxspeed:type=PL:zone30

nie nie nie. Ograniczenia prędkości obowiązują od miejsca do miejsca. Czasami jedna ulica ma kilka ograniczeń na swojej długości. I chrzanię - wole wiedzieć (otrzymywać) info jakie jest danym miejscu ograniczenie. Jeśli zaczniemy stosować uproszczenia to za chwilę bedziemy mieli droge primary od miasta A do miasta B na całej długości opisana wartość symboliczna PL:rural gdzie w rzeczywistości będzie mase ograniczeń do 70 a potem 50 km (dajmy na to). W wielu miejscach mamy różne prędkości dla dwu kierunków. Nie. Korzystam z josm i jego szablonu do podawania ograniczeń prędkości, dodaje też znaki ograniczenia przy drodze (nody) by na przyszłość ktoś mógł je zobaczyć (?) poprawiając uzupełniając drogę.

co do PL:zoneXX - josm daje mi takie dane:
addr:city=Trzebież
highway=residential
maxspeed=40
name:de=Dorfstraße
name=Osadników
source:maxspeed=PL:zone40
source=Gmina Police

Pl:urban (niezależnie od tego gdzie trafi) daje się tylko i wyłącznie tam gdzie nie ma znaków i obowiązuje domyślne ograniczenie prędkości. To by się nie zmieniło, pytanie tylko gdzie ta informacja powinna zostać zapisana.

  1. Strefa 30 jest wyznaczona znakami, więc nie widzę sensu tagowania PL:zone30 pod jakimkolwiek tagiem, maxspeed=30 wystarczy, i można dać w source:maxspeed=zone30 tylko po to, żeby inni maperzy nie poprawiali na 50, bo nie widzą znaku na początku ulicy (bo go tam nie ma, był na granicy strefy).

  2. PL:urban natomiast ma jakiś sens, i dałbym prosto w maxspeed, ALE!

  3. to jest rzecz świetnie upychalna w highway:class, jak i wszystkie wartości domyślne dla urzędowo rozróżnialnych rodzajów dróg, więc może lepiej pójść w tę stronę, zamiast mnożyć kombinacje tagów?

Zbytnie upraszczanie nie przyniesie nic dobrego. Każde ograniczenie powinno zawierać też kontekst na podstawie którego je dodano bo oznaczenie dróg zmienia się dosyć często nawet na drogach krajowych (przynajmniej jeśli spojrzeć na przestrzeni kilku lat w mojej okolicy).

A rozwinąłbyś?

Gdzie widzisz zbytnie upraszczanie?

Nie wyobrażam sobie jakby to miało wyglądać. Typ drogi określałby z góry dozwoloną prędkość bez użycia tagu maxspeed?

Oczywiście, skoro na określonym typie drogi istnieje ustawowe ograniczenie, to całkowicie wystarczy je umieścić w opisie typu drogi.

Może ja spróbuję przygotować oficjalny proposal na highway:class, tylko nie wiem kiedy… Tekst po polsku mam (poniżej), natomiast procedury składania proposali zupełnie nie znam. Poza tym, że się tekst na wiki pisze…

======================================================================================
Idea jest taka: każdy obiekt (kawałek drogi) potrzebuje dwóch tagów:

highway:class:=
highway:class::defaults=

Gdzie może być kodem kraju (np. pl) lub innego regionu, np. stanu (np. usMT dla Montany), to identyfikator OSM obiektu, w którym są ustawione wartości domyślne dla klas dróg (najlepiej relacja regionu, ale można sobie lokalnie ustalić cokolwiek), a to kod klasy dróg.

To oczywiście wymaga pilnowania, żeby nikt nie podmienił , ani nie dodał włąsnej pary tagów do dróg ze wskaźnikiem do zabunkrowanego gdzieś obiektu, ustanawiając w ten sposób własne przepisy :wink: Ale to nie jest trudne, bot może ustawiać ustalone przez społecznośc wartości dla ustalonych przez lokalną społeczność wartości , a wszytkie zestawy z innym , jakie znajdzie w regionie - usuwać.

Teraz, w obiekcie 148838 (trzymając się już przykładu USA) wstawiamy serię tagów w postaci:

highway:class:default:::=

gdzie i służą do wybierania danych dla właściwej klasy drogi we właściwym regionie (muszą pasować do odpowiednich wartości w highway:class:= na drogach), a = to domyślna wartość dla tagu, jeśli nie jest on ustawiony explicite dla drogi. Na przykład, jeśli do relacji 148838 wstawimy:

highway:class:default:us:motorway:maxspeed=100

to na każdej drodze otagowanej:

highway:class:us=motorway
highway:class:us:defaults=148838

i nie mającej ustawionego maxspeed=*, przyjmuje się maxspeed=100

Jeśli jest gdzieś tak, że część przepisów jest państwowa, a część stanowa, umieszcza się tagi dla dróg stanowych, a w obiekcie definiującym typy dróg stanowych umieszcza się tag:

highway:class:inherit:=

gdzie jest kodem stanu, ale jest identyfikatorem obiektu, z którego kopiuje się wartości domyślne (zwykle - państwa) i dodaje się tylko te tagi highway:class:default:::=, które różnią się od odziedziczonych z regionu wyższego rzędu. Poziomów dziedziczenia może być więcej.

Jak widać na załączonym obrazku - aż się prosi, żeby mieć w Polsce typ drogi Z z wartościami domyślnymi dla dróg w terenie zabudowanym i stąd ciągnąć domyślne ograniczenie prędkości.

Bez meta-obiektów OSM zakopie się w prefiksowanych i sufiksowanych tagach po same uszy :stuck_out_tongue:

A może by tak użyć meta-obiektów? Coś w stylu:

<relation id=xxx>
   <member id={way_id}  type="way"/>
   <member id={way_id}  type="way"/>
   ...
   <tag k="highway"   v="class"/>
   <tag k="class"   v="pl:motorway"/>
   <tag k="maxspeed"   v="140"/>
   <tag k="source:maxspeed"   v="ustawa/znak/etc."/>
</relation>

I Wszelkie odcinki (way) spełniające kryteria takiej relacji byłyby dodawane jako członkowie. W przypadku, gdyby taka relacja osiągnęła maksymalną ilość członków możnaby ją podzielić na ‘podrelacje’, które byłyby członkiem super-relacji, która przejęłaby wszelkie tagi typu maxspeed itp.

O ile dobrze rozumiem chodzi o to by na przykład odcinek A6 Granica Państwa do swojego końca na moście nad rzeczka Chełszcząca miałby przypisane ustawowe ograniczenie prędkości 140 km/h. OK ale co z ograniczeniami na jej przebiegu rzędu: 90 km/h; 110 km/h; 70 km/h które występują na wielu odcinkach tej autostrady?
To samo z innymi drogami którym przypisze się ustawowe ograniczenia prędkości w zależności od ich rodzaju.

Co zrobi nawigacja kiedy przypisze się do drogi w terenie zabudowanym ustawowe 50/60 km/h w sytuacji gdy w rzeczywistości na tym terenie bedzie obowiązywała prędkość obniżona do 40 km/h bądź podwyższona do 70 km/h.

Co zrobi nawigacja kiedy poza terenem zabudowanym, ale na długości drogi przebiegająca pomiędzy tablicami z nazwa miejscowości gdy pod nią zamontowano znak ograniczenia prędkości 70 km/h? Będzie informowała o dopuszczalnej prędkości wynikającej z prędkości przypisanej kategorii drogi czy tez wynikającej z fizycznie wprowadzonych ograniczeniach na niej?

Trochę nie rozumiem i gubię się w tym Waszym upraszczaniem bojąc się potem … płacenia mandatów?

Myśle, że to, co robi w tej chwili - weżmie ograniczenie maxspeed=* z konkretnego odcinka.

Ja widzę działanie tak:

  1. mamy odcinek drogi z jakimiś tam tagami, w tym highway:class:pl=*

  2. Zaglądamy do obiektu wskazanego w highway:class:pl:defaults=* i wyciągamy z niego domyślne wartości wszystkich tagów dla danego typu drogi.

  3. wracamy do naszego odcinka drogi i nadpisujemy wartości domyślne wartościami z tagów danego odcinka

W ten sposób mamy wszystkie niezbędne dla nawigacji tagi wypełnione bez konieczności ustawiania ustawowych wartości maxspeed=* dla każdej drogi, a tylko dla tych dróg, gdzie maxspeed jest ustalone znakiem..

Oczywiście nawigacja nie będzie tej drogi przechodzić za każdym razem zaglądając do obiektu wskazanego w highway:class:pl:defaults, tylko sobie je skopiuje raz a dobrze przy wczytywaniu mapy.

Wygląda mi to na wandalizm, autorem jest https://www.openstreetmap.org/user/popek069

Edit:
Zestaw zmian 49274264 jest na 100% do wycofania, możliwe że pozostałe też ale najlepiej kolejno je wycofywać żeby uniknąć konfliktów.

To czy przypadkiem nie będzie wtedy tak iż:
na odcinku drogi który nie jest opisany żadnymi maxspeed=XX bo nikt danych o ŻADNYM ograniczeniu nie wprowadził nawigacja pobierze sobie dane z class? A co wtedy kiedy na takim odcinku faktycznie biegnie 4 km ograniczenia prędkości do 70 km/h a nawi informuje mnie że tu wolno lecieć 90 km/h bo to jest taka a nie inna droga która ma przypisana urzędową prędkość 90 km/h? 20 km/h wiecej niż dopuszczlana to trochę nie tak. Sam korzystam z nawi ustawiając sobie informowanie mnie gdy przekraczam prędkość o 9 km/h.

Tak wiem używanie nawi nie zwalnia od rozglądania się i przestrzegania przepisów. Tak jej zadaniem jest jej nam pomagać wspomagać a nie wprowadzać w błąd. Dlatego też obawiam się przy takim przypisywaniu o prędkościach do class danej kategorii drogi by aplikacje nie wprowadzały swoich użytkowników w błąd.

to tyle na szybko.

OCZYWIŚCIE, że sobie pobierze z highway:class, po to ona jest.

A myślisz, że bez highway:class co teraz robi nawigacja, kiedy nie ma danych o lokalnym ograniczeniu prędkości? Dokładnie tak samo zakłada ustawowe. Tu nic się nie zmieni. Nie ma cudów, żeby pokazać prawidłowe dane, trzeba je skądś mieć. Jest lokalne ograniczenie prędkości, to ktoś je musi wprowadzić do danych, żeby aplikacje mogły o nim wiedzieć…

Co się zmieni, to:

  1. Jeśli przepisy się zmienią, to wystarczy je odwzorować w highway:class - i wszystko, co korzysta z highway:class będzie mieć nowe przepisy

  2. Nawigacja, korzystająca z highway:class będzie dobrze działać w każdym miejscu ze zdefiniowanym highway:class bez potrzeby zaszywania w aplikacji domyślnych wartości dla poszczególnych klas dróg w różnych miejscach

  3. Nawigacja będzie mieć dodatkowe dane o oficjalnej klasyfikacji drogi do porównania z dowolnie wypełnianym tagiem highway, co zwiększy jej odporność na wandalizm

  4. Dane highway:class spokojnie mogą być pilnowane z użyciem bota i korygowane na podstawie informacji od zarządców dróg

  5. Zniknie odwieczny spór o to, czy tag highway wypełniać na podstawie oficjalnej klasyfikacji, czy według ważności drogi według odczucia maperów, bo będzie osobny tag do oficjalnej klasyfikacji :wink:

No nie wiem - “moja” Magic Earth Navigation na moje szczęście jak nie ma podanych wartości maxspeed ich nie podaje. Wolę takie rozwiązanie niż zawierzyć że na danym odcinku jest domyślna maxspeed przypisana do highway:class a w rzeczywistości jak wyżej mamy 4 km 70 km/h. Czyli wprowadza mnie w błąd :(.

Tak to nie chcę.

Wyobraź sobie że lecisz sobie spokojnie drogą Dobieszczyn - Nowe Warpno - co kawałek ograniczenia do 40; 60; 70 km/h masę zakrętów i nawi podaje Tobie leć sobie 90 km/h i w którymś momencie lecisz w las na łuku bo - wiem nie wierz ślepo - myśl!!! Ale jednak. Albo bo ktoś ściął wcześniej znak a zarządca nie zdążył go uzupełnić. Jeśli ktos mówi nie ma nie nanosimy to wprowadzanie w highway:class danych o ustawowych prędkościach i udostępnianie ich w miejscach gdzie jest inaczej - ale nikt tego nie dodał - będzie nie halo chyba :(.

Jak nawigacja jest sprytna to nie pokaże że 90 jest dozwolone, ale jeśli ktoś przekroczy 90 to ostrzeże.

Chyba lepsze to niż brak jakiegolwiek ostrzeżenia.

@RafalR Wygląda na wadliwą edycje, ale to nie wątek na dyskusję o tym.

Czekaj, bo myśmy się chyba nie zrozumieli.

To, że ja tu podałem algorytm wyciągania wartości domyślnych z highway:class, nie znaczy, że jakieś Tajemnicze Coś będzie to robić i tak obrobione podstawiać aplikacjom, w tym nawigacjom. Absolutnie nie, aplikacja dostanie dokładnie to, co teraz, plus tagi highway:class i zrobi z nimi co zechce. highway:class w żaden sposób nie przekona aplikacji, żeby wyświetlała w danym miejscu ustawowe ograniczenie.

^^ wiesz oparłem swoją wypowiedź o ten fragment:

Magic Earth Nawigation tego naszczęście nie robi. Nie ma droga przypisanego maxspeed nie informuje. :wink:

Po części robi. Włącz “Demo” na jakiejś drodze, która nie ma oznaczego maxspeed, zauważysz, że aplikacja zakłada jakąś prędkość w zależności od drogi (o ile dobrze pamiętam na residental jest to 40, a na primary 60). Nie pokazuje tej informacji na ekranie, ale bierze ją pod uwagę przy liczeniu czasu przebycia trasy.