Restrykcje

Z UMP

(Różnice między wersjami)
(znaki)
Aktualna wersja (09:22, 4 mar 2021) (edytuj) (anuluj zmianę)
(Restrykcje w źródłach: uzupełnienie)
 
(Nie pokazano 15 wersji pośrednich.)
Linia 1: Linia 1:
== Wstęp ==
== Wstęp ==
-
Mam nadzieję wkrótce dorobimy się wizualizacji restrykcji na mapie www.
+
Od 22.12.2012 na mapie www pokazujemy znaki zakazu, generowane automatycznie z zakazów stosowanych do tej pory do wyliczania tras (routing). Poniżej zasady tworzenia takich znaków, oraz jak temu automatowi pomóc.
-
Artykuł ten jest wstępnym opisem jak to będzie działać.
+
== Restrykcje w źródłach ==
== Restrykcje w źródłach ==
-
W naszym FAQ jest opisane jak definiowane są restrykcje
+
W naszym FAQ [[FAQ#A_zakazy_skr.C4.99t.C3.B3w.2C_mo.C5.BCna.3F|jest opisane]] jak definiowane są restrykcje.
-
[[FAQ#A_zakazy_skr.C4.99t.C3.B3w.2C_mo.C5.BCna.3F|A zakazy skrętów można ?]]
+
 
 +
Dodatkowe informacje jak rysować zakazy [[Jak_rysowac_drogi#Zakazy_skr.C4.99tu|tutaj]].
W plikach .txt przykładowy zakaz wygląda tak:
W plikach .txt przykładowy zakaz wygląda tak:
[POLYLINE]
[POLYLINE]
Type=0x19
Type=0x19
-
Label=dubois-L-maxaborna
+
Label=(ulica którą jedziesz) < (ulica w którą nie możesz skręcić w lewo)
-
Data0=(51.118068,17.028488),(51.117921,17.027980),(51.117682,17.028041)
+
Data0=(49.99950,20.00000),(50.00000,20.00000),(50.00000,19.99950)
[END]
[END]
-
Niestety widać je tylko w źródłach mapy i w czasie wyznaczania trasy.
+
Takiego zakazu nie widać na mapie www ani w odbiornikach.
-
 
+
-
Jadąc drogą, mając podgląd mapy w odbiorniku albo na www, nie mamy
+
-
szansy stwierdzić czy zakaz który widzimy już znajduje się na mapie.
+
== Definiowanie znaków drogowych dla restrykcji ==
== Definiowanie znaków drogowych dla restrykcji ==
-
Niedługo zostanie uruchomione wyświetlanie znaków drogowych odpowiadające restrykcjom na mapie www.
+
Autor rysujący restrykcje może dodać trzy nowe parametry w zakładce [[Parametry_w_Extras|Extras]]
-
 
+
-
Autor rysujący restrykcje będzie mógł dodać trzy nowe parametry w zakładce [[Parametry_w_Extras|Extras]]
+
Sign=ZAKAZ_LEWO
Sign=ZAKAZ_LEWO
-
SignPos=(50.4567,21.12345)
+
SignPos=(50.45678,21.12345)
-
SignAngle=-190
+
SignAngle=90
-
'''Sign''' to rodzaj znaku drogowego. Aktualne dozwolone nazwy to:
+
'''Sign''' to rodzaj znaku drogowego. Aktualne dozwolone rodzaje znaków i nazwy to:
{| class="wikitable"
{| class="wikitable"
! Znak
! Znak
Linia 34: Linia 29:
| Brak znaku
| Brak znaku
|
|
-
| BRAK,brak
+
| BRAK,NAKAZ_BRAK,brak
|-
|-
| Inna restrykcja
| Inna restrykcja
Linia 44: Linia 39:
| B-2,B2,ZAKAZ_PROSTO,Z_PROSTO
| B-2,B2,ZAKAZ_PROSTO,Z_PROSTO
|-
|-
-
| Zakaz w prawo
+
| Zakaz w lewo
| [[Grafika:Znak-B-21.png]]
| [[Grafika:Znak-B-21.png]]
| B-21,B21,ZAKAZ_LEWO,Z_LEWO
| B-21,B21,ZAKAZ_LEWO,Z_LEWO
|-
|-
-
| Zakaz w lewo
+
| Zakaz w prawo
| [[Grafika:Znak-B-22.png]]
| [[Grafika:Znak-B-22.png]]
| B-22,B22,ZAKAZ_PRAWO,Z_PRAWO
| B-22,B22,ZAKAZ_PRAWO,Z_PRAWO
Linia 56: Linia 51:
| B-23,B23,ZAKAZ_ZAWRACANIA,Z_ZAWRACANIA,NO_UTURN
| B-23,B23,ZAKAZ_ZAWRACANIA,Z_ZAWRACANIA,NO_UTURN
|-
|-
-
| Nakaz jazdy w prawo
+
| Nakaz w prawo
-
| a.png
+
| [[Grafika:Znak-C-2.png]]
| C-2,C2,NAKAZ_PRAWO,N_PRAWO
| C-2,C2,NAKAZ_PRAWO,N_PRAWO
|-
|-
-
| Nakaz jazdy w lewo
+
| Nakaz w lewo
-
| a.png
+
| [[Grafika:Znak-C-4.png]]
| C-4,C4,NAKAZ_LEWO,N_LEWO
| C-4,C4,NAKAZ_LEWO,N_LEWO
|-
|-
-
| Nakaz jazdy prosto
+
| Nakaz prosto
-
| a.png
+
| [[Grafika:Znak-C-5.png]]
| C-5,C5,NAKAZ_PROSTO,N_PROSTO
| C-5,C5,NAKAZ_PROSTO,N_PROSTO
|-
|-
-
| Nakaz jazdy prosto lub w prawo
+
| Nakaz prosto lub w prawo
-
| a.png
+
| [[Grafika:Znak-C-6.png]]
| C-6,C6,NAKAZ_PRAWO_PROSTO,N_PRAWO_PROSTO,NAKAZ_PROSTO_PRAWO,N_PROSTO_PRAWO
| C-6,C6,NAKAZ_PRAWO_PROSTO,N_PRAWO_PROSTO,NAKAZ_PROSTO_PRAWO,N_PROSTO_PRAWO
|-
|-
-
| Nakaz jazdy prosto lub w lewo
+
| Nakaz prosto lub w lewo
-
| a.png
+
| [[Grafika:Znak-C-7.png]]
| C-7,C7,NAKAZ_LEWO_PROSTO,N_LEWO_PROSTO,NAKAZ_PROSTO_LEWO,N_PROSTO_LEWO
| C-7,C7,NAKAZ_LEWO_PROSTO,N_LEWO_PROSTO,NAKAZ_PROSTO_LEWO,N_PROSTO_LEWO
|-
|-
-
| Nakaz jazdy w prawo lub w lewo
+
| Nakaz w prawo lub w lewo
-
| a.png
+
| [[Grafika:Znak-C-8.png]]
| C-8,C8,NAKAZ_LEWO_PRAWO,N_LEWO_PRAWO,NAKAZ_PRAWO_LEWO,N_PRAWO_LEWO
| C-8,C8,NAKAZ_LEWO_PRAWO,N_LEWO_PRAWO,NAKAZ_PRAWO_LEWO,N_PRAWO_LEWO
|}
|}
 +
'''SignPos''' to pozycja ustawienia znaku. Format standardowy (Długość,Szerokość) n.p. (52.123456,21.654321)
 +
 +
'''SignAngle''' to kąt obrotu znaku podany w stopniach w kierunku zgodnym z ruchem wskazówek zegara, liczony od północy. Prawidłowe wartości z zakresu od -360° do 360°. Kąt obrotu zostanie zaokrąglony do wielokrotności 45°. Przykładowo: 0° to wartość dla znaku stojącego przy drodze idącej z południa na północ, 45° - w kierunku NE, 90° (albo -270°) - z zachodu a wschód, itd.
 +
 +
== Automatyczne generowanie znaków ==
 +
 +
Aby uniknąć dużej ilości ręcznej pracy, została rozszerzona funkcjonalność [[Netgen|Netgena]] o automatyczne generowanie znaków dla restrykcji.
 +
 +
Wywołanie z parametrami ''netgen -R -S'' spowoduje dodanie znaków w przypadku, gdy nie ma jeszcze zdefiniowanych parametrów ''Sign*=*''. Gdy te parametry istnieją, [[Netgen]] zachowa je.
 +
 +
Znaki generowane są zgodnie z następującymi regułami:
 +
* rodzaje znaków:
 +
** restrykcja 3-elementowa, kąt pomiędzy segmentami (-150°,-20°) -> '''zakaz w lewo'''
 +
** restrykcja 3-elementowa, kąt pomiędzy segmentami (20°,180°) -> '''zakaz w prawo'''
 +
** restrykcja 3-elementowa, kąt pomiędzy segmentami (-20°,20°) -> '''zakaz prosto'''
 +
** restrykcja 3-elementowa, kąt pomiędzy segmentami (-180°,-150°) -> '''zakaz zawracania'''
 +
** restrykcja 4-elementowa, dwa skręty w lewo o więcej niż 45° każdy -> '''zakaz zawracania'''
 +
** restrykcja 4-elementowa, pozostałe przypadki -> '''inna restrykcja'''
 +
* umiejscowienie znaków
 +
** '''zakaz zawracania''' - 5 m po lewej stronie pierwszego segmentu, 10 m przed zakazanym manewrem
 +
** '''pozostałe przypadki''' - 5 m po prawej stronie pierwszego segmentu, 10 m przed zakazanym manewrem
 +
** jeśli dwa znaki wypadają bardzo blisko siebie, netgen stara się je odsunąć
 +
** jeśli pierwszy segment restrykcji ma pomiędzy 10 a 15 m, to znak przesuwamy o długość tego segmentu + 5m
 +
* kąt obrotu znaku
 +
** generowany automatycznie na podstawie fragmentu drogi którym dojeżdżamy do punktu restrykcji (zaokrąglany oczywiście do wielokrotności 45°)
 +
 +
Nie jest możliwe poprawne automatyczne ustawienie wszystkich znaków i nadanie im poprawnego typu.
 +
Dlatego prosimy autorów o dopisywanie parametrów ''Sign='' tam gdzie automat nie jest wystarczająco sprytny, jak również tam, gdzie zgodnie ze stanem faktycznym lub zdroworozsądkowym należy wybrać lepszą alternatywę - np. nakaz skrętu w prawo (albo na wprost) zamiast zakazu w lewo na wydzielonym pasie skrętu dochodzącym do drogi głównej itp. Analogicznie w przypadku "kumulacji" - jeśli na skrzyżowaniu typu "X" występują 2 zakazy - np. na wprost i w prawo, to jeden z nich można opatrzyć opisem "Sign=NAKAZ_LEWO", a drugi "BRAK".
 +
 +
== Zakaz nie dotyczy ==
 +
Czasami zakaz skrętu nie dotyczy (albo dotyczy) wybranych rodzajów pojazdów. Typowo: nie dotyczy pojazdów komunikacji miejskiej, dotyczy samochodów ciężarowych. W takim wypadku do linii zakazu trzeba dodać ręcznie odpowiedni parametr (zakładka Extras):
 +
* nie dotyczy komunikacji miejskiej
 +
RestrParam=1,0,0,1,1,1,1,0
 +
* dotyczy samochodów ciężarowych (i autobusów)
 +
RestrParam=1,0,1,0,1,1,1,0

Aktualna wersja

Spis treści

Wstęp

Od 22.12.2012 na mapie www pokazujemy znaki zakazu, generowane automatycznie z zakazów stosowanych do tej pory do wyliczania tras (routing). Poniżej zasady tworzenia takich znaków, oraz jak temu automatowi pomóc.

Restrykcje w źródłach

W naszym FAQ jest opisane jak definiowane są restrykcje.

Dodatkowe informacje jak rysować zakazy tutaj.

W plikach .txt przykładowy zakaz wygląda tak:

[POLYLINE]
Type=0x19
Label=(ulica którą jedziesz) < (ulica w którą nie możesz skręcić w lewo)
Data0=(49.99950,20.00000),(50.00000,20.00000),(50.00000,19.99950)
[END]

Takiego zakazu nie widać na mapie www ani w odbiornikach.

Definiowanie znaków drogowych dla restrykcji

Autor rysujący restrykcje może dodać trzy nowe parametry w zakładce Extras

Sign=ZAKAZ_LEWO
SignPos=(50.45678,21.12345)
SignAngle=90

Sign to rodzaj znaku drogowego. Aktualne dozwolone rodzaje znaków i nazwy to:

Znak Widok na www Dozwolone wartości Sign=
Brak znaku BRAK,NAKAZ_BRAK,brak
Inna restrykcja Grafika:Znak-B-1.png B-1,B1,ZAKAZ,RESTRYKCJA
Zakaz na wprost Grafika:Znak-B-2.png B-2,B2,ZAKAZ_PROSTO,Z_PROSTO
Zakaz w lewo Grafika:Znak-B-21.png B-21,B21,ZAKAZ_LEWO,Z_LEWO
Zakaz w prawo Grafika:Znak-B-22.png B-22,B22,ZAKAZ_PRAWO,Z_PRAWO
Zakaz zawracania Grafika:Znak-B-23.png B-23,B23,ZAKAZ_ZAWRACANIA,Z_ZAWRACANIA,NO_UTURN
Nakaz w prawo Grafika:Znak-C-2.png C-2,C2,NAKAZ_PRAWO,N_PRAWO
Nakaz w lewo Grafika:Znak-C-4.png C-4,C4,NAKAZ_LEWO,N_LEWO
Nakaz prosto Grafika:Znak-C-5.png C-5,C5,NAKAZ_PROSTO,N_PROSTO
Nakaz prosto lub w prawo Grafika:Znak-C-6.png C-6,C6,NAKAZ_PRAWO_PROSTO,N_PRAWO_PROSTO,NAKAZ_PROSTO_PRAWO,N_PROSTO_PRAWO
Nakaz prosto lub w lewo Grafika:Znak-C-7.png C-7,C7,NAKAZ_LEWO_PROSTO,N_LEWO_PROSTO,NAKAZ_PROSTO_LEWO,N_PROSTO_LEWO
Nakaz w prawo lub w lewo Grafika:Znak-C-8.png C-8,C8,NAKAZ_LEWO_PRAWO,N_LEWO_PRAWO,NAKAZ_PRAWO_LEWO,N_PRAWO_LEWO

SignPos to pozycja ustawienia znaku. Format standardowy (Długość,Szerokość) n.p. (52.123456,21.654321)

SignAngle to kąt obrotu znaku podany w stopniach w kierunku zgodnym z ruchem wskazówek zegara, liczony od północy. Prawidłowe wartości z zakresu od -360° do 360°. Kąt obrotu zostanie zaokrąglony do wielokrotności 45°. Przykładowo: 0° to wartość dla znaku stojącego przy drodze idącej z południa na północ, 45° - w kierunku NE, 90° (albo -270°) - z zachodu a wschód, itd.

Automatyczne generowanie znaków

Aby uniknąć dużej ilości ręcznej pracy, została rozszerzona funkcjonalność Netgena o automatyczne generowanie znaków dla restrykcji.

Wywołanie z parametrami netgen -R -S spowoduje dodanie znaków w przypadku, gdy nie ma jeszcze zdefiniowanych parametrów Sign*=*. Gdy te parametry istnieją, Netgen zachowa je.

Znaki generowane są zgodnie z następującymi regułami:

  • rodzaje znaków:
    • restrykcja 3-elementowa, kąt pomiędzy segmentami (-150°,-20°) -> zakaz w lewo
    • restrykcja 3-elementowa, kąt pomiędzy segmentami (20°,180°) -> zakaz w prawo
    • restrykcja 3-elementowa, kąt pomiędzy segmentami (-20°,20°) -> zakaz prosto
    • restrykcja 3-elementowa, kąt pomiędzy segmentami (-180°,-150°) -> zakaz zawracania
    • restrykcja 4-elementowa, dwa skręty w lewo o więcej niż 45° każdy -> zakaz zawracania
    • restrykcja 4-elementowa, pozostałe przypadki -> inna restrykcja
  • umiejscowienie znaków
    • zakaz zawracania - 5 m po lewej stronie pierwszego segmentu, 10 m przed zakazanym manewrem
    • pozostałe przypadki - 5 m po prawej stronie pierwszego segmentu, 10 m przed zakazanym manewrem
    • jeśli dwa znaki wypadają bardzo blisko siebie, netgen stara się je odsunąć
    • jeśli pierwszy segment restrykcji ma pomiędzy 10 a 15 m, to znak przesuwamy o długość tego segmentu + 5m
  • kąt obrotu znaku
    • generowany automatycznie na podstawie fragmentu drogi którym dojeżdżamy do punktu restrykcji (zaokrąglany oczywiście do wielokrotności 45°)

Nie jest możliwe poprawne automatyczne ustawienie wszystkich znaków i nadanie im poprawnego typu. Dlatego prosimy autorów o dopisywanie parametrów Sign= tam gdzie automat nie jest wystarczająco sprytny, jak również tam, gdzie zgodnie ze stanem faktycznym lub zdroworozsądkowym należy wybrać lepszą alternatywę - np. nakaz skrętu w prawo (albo na wprost) zamiast zakazu w lewo na wydzielonym pasie skrętu dochodzącym do drogi głównej itp. Analogicznie w przypadku "kumulacji" - jeśli na skrzyżowaniu typu "X" występują 2 zakazy - np. na wprost i w prawo, to jeden z nich można opatrzyć opisem "Sign=NAKAZ_LEWO", a drugi "BRAK".

Zakaz nie dotyczy

Czasami zakaz skrętu nie dotyczy (albo dotyczy) wybranych rodzajów pojazdów. Typowo: nie dotyczy pojazdów komunikacji miejskiej, dotyczy samochodów ciężarowych. W takim wypadku do linii zakazu trzeba dodać ręcznie odpowiedni parametr (zakładka Extras):

  • nie dotyczy komunikacji miejskiej
RestrParam=1,0,0,1,1,1,1,0
  • dotyczy samochodów ciężarowych (i autobusów)
RestrParam=1,0,1,0,1,1,1,0