Pl:Modelowanie schodów
Strona opisuje tagowanie schodów w 3D
Koncepcja użyta również w: F3DB OSM-4D.
Specyfikacja umożliwia (niezależnie od głównego celu jakim jest modelowanie w 3D, również w specyfikacji F3DB) także przyszły ulepszony rendering schodów w 2D w najwyższych stopniach zoomu.
Punkt wyjścia do tej specyfikacji
Mapy OSM są coraz dokładniejsze, często do dyspozycji mamy również plany architektoniczne budynków z prawem ich wykorzystania w OSM. Tymczasem schody, nawet te wielkopowierzchniowe są nadal rysowane na mapie jako kreska prowadząca od do. Zmusza to niekiedy mapowiczy do naginania istniejącej specyfikacji i rysowania wielu linii w celu uzyskania efekt zbliżonego do rzeczywistości. Przykładem w Polsce są schody do Katedry Gnieźnieńskiej. Wielu ludziom słusznie nie podoba się takie podejście. Poniższa koncepcja daje propozycję rozwiązania tego problemu w 2D jak również w przypadku zastosowania dodatkowej grupy tagów do modelowania w 3D. .
Definicja
Aby umożliwić bardziej precyzyjne mapowanie i rendering schody rysujemy stosując:
- jak dotychczas, czyli oś środkową schodów w postaci wektorowej highway=steps, z użyciem tagu width=* oraz opcjonalnie height=* lub dodatkowo z podaniem:
- który punkt jest początkiem stopni (czyli jest położony najniżej) a który końcem schodów (położony najwyżej punkt) lub dodatkowo w skomplikowanych i nieregularnych przypadkach:
- z użyciem obszarów area=*=steps oraz opcjonalnie area=*=footway.
(dość podobnie do tego trzeciego przypadku jest rysowanie rzek w OSM. W przypadku dużych rzek stosujemy zarówno oś przebiegu rzeki z kierunkiem, jak również kontur linii brzegowej rzeki jako obszar)
Parametry
Key | Description | Value |
---|---|---|
width=* | szerokość stopni | m |
step_count=* | Liczba stopni | Integer |
height=* | Całkowita wysokość schodów | m |
material=* | Materiał z którego wykonane są schody | Nazwa materiału |
steps_type=* | Typ stopni | Patrz spis rodzajów stopni (do zrobienia!) |
handrail_height=* | wysokość balustrady nad stopniami | m |
handrail_form=* | Forma balustrady | See Form library |
handrail:left/right/both/center=* | railing on the left/right/both/center side of the stairs | yes/no |
stairs_thickness=* | Thickness of the stair construction | m |
stairs_start_angle=* | kąt obrotu pierwszego dolnego stopnia w stosunku do ich osi | Stopnie(°) |
stairs_end_angle=* | kąt obrotu ostatniego stopnia schodów w stosunku do ich osi | Stopnie (°) |
depth_step=* | Głębokość pojedynczego stopnia | m |
height_step=* | Wysokość pojedynczego stopnia | m |
in area-relation: role:lower | Polilinia, start line irregular steps | Polyline connected with highway=steps via relation |
in area-relation: role:upper | Polyline, end line irregular steps | Polyline connected with highway=steps via relation |
in area-relation: role:lateral | Polylinie, krawędź nieregularnych stopni | Polyline connected with highway=steps via relation |
stairs_inline=* | Polylinie, Innenkante unregelmässiger Treppe | Polyline connected with highway=steps via relation |
stairs:type=* |
see Relations/Proposed/Area#area-steps for the area-relation model of steps.
Opis parametrów
Typy schodów
Tagging do celów renderingu 3D.
stairs:type=*= full
stairs:type=*= standard
stairs:type=*= overlapped
stairs:type=*= touched
stairs:type=*= separated
Stages with offset
Used for 3D purposes only.
All stages can have offset.
Examples forming of stages for 3D rendering:
stairs:type=*= full_offset.
stairs:type=*= touched_offset.
pozycja poręczy
Position of railing:
Kąt rozpoczęcia i zakończenia stopni w schodach
Czasami kąt pod jakim płasczyzna pierwszego i ostatniego stopnia nachylona jest do osi schodów nie wynosi 90 stopni. W takich przypadkach musimy opisać tę wartość specjalnymi tagami:
- stairs_start_angle=* wartość w stopniach. Calculation of angle see sketch below.
- stairs_end_angle=* wartość w stopniach. Calculation of angle see sketch below.
Kąt nachylenia pierwszego stopnia schodów (alpha s):w punkcie początkowym (najniżej położonym) S, Kąt nachylenia ostatniego stopnia schodów (alpha e) w punkcie końcowym (najwyżej położonym) E
Nieco o renderingu
A staircase with many wrinkles and without stairway landings is rendered as in the following example:
- highway=steps
- width=value
- rendering machine calculates section points M12-M23-M34 by use of angle bisectors.
- step_count=7
- rendering machine divides polyline P1 - P2 - P3 - P4 in 7 sections of equal length.
- Szkic: wynik końcowy po renderingu.
Przykład jak mogą wyglądać zrenderowane schody:
Dlaczego wysokość jest ważna również w przypadku renderingu w 2D
W przypadku zdecydowanej większości schodów w 2D używających również tagu width=* nie ma żadnego znaczenia gdzie jest początek a gdzie koniec lub dokładniej; który stopień jest położony najwyżej a który najniżej. No chyba że:
- Początek i koniec schodów leżą nad sobą.
- Linia łamana schodów przecina się ze sobą.
Przykład: dwie możliwości renderingu schodów z przecinającym się przebiegiem osi środkowej:
Schody z międzypodestami.
Jeśli chcemy uzyskać schody z podestami położonymi między przebiegiem stopni, co jest standardem przewidzianym przez prawo budowlane jeśli mamy większą liczbę stopni, to musimy rysować w rzucie w OSM w sposób podobny jak w poniższym przykładzie: Zamiast jednej linii łamanej rysujemy kilka highway=steps i highway=footway łącząc je w jedną relację do celów modelowania 3D. Jedna relacja składać się więc będzie z następujących po sobie odcinków schodów (S) oraz odcinków podestów (P). Tak samo jak w przypadku relacji opisującej trasę autobusu ważna będzie kolejność elementów.
Głębokość pojedynczego stopnia
depth_step=*, (Ds, tag niezbędny wyłącznie do zaawansowanego renderingu 3D)
Dlaczego w ogóle ten tag? Ponieważ możliwe jest, że stopnie są dłuższe:
Punkt początkowy i końcowy schodów
Aby schody można poprawnie interpretować w 3D, musimy zdefiniować dół i górę schodów:
Linia początkowa i końcowa stopni
Schody o skomplikowanej geometrii rysujemy, konstruując górną i dolną krawędź schodów jako polilinię.
Tagowanie linii dolnej: steps:startline=yes linii górnej: steps:endline=yes.
Obydwie linie są połączone ze sobą. The connector line is the midline of stair geometry tagged as: highway=steps. This line should still be used for routing.
Rezultat po renderingu (mockup)*
- Neccesary Assumptions for the renderer, which can be developed based on this proposal:
The starting point of the polyline stairs:startline=yes is connected to the start point of stairs:endline=yes.. The line is divided into n-step sections for rendering. The same with the end points of polylines stairs:startline=yes andstairs:endline=yes
The approach solves problems arise when drawing large, complex stairs, because of differences between logical connectors for routing (graph network) and the desire, to reflect reality.
Opcje
A. Obydwie linie łamane mają tę samą liczbę punktów.
Pomiędzy punktami początkowymi a końcowymi obu linii liczba stopni jest podzielona równomiernie:
- Stairs:startline=yes yellow
- Stairs:endline=yes green
- Treppenvektor, highway=steps:rot (Start und Endline werden beliebig mit dem Treppenvektor miteinander verbunden)
- Verlauf der Stufenkanten nach dem Rendering:schwarz
Der Ansatz basiert auf den in der Kartografie bekannten Höhenlinien. Die technische Schwierigkeit: hier könnten Selbstverschneidungen auftreten.
B. Both polylines have a different number of nodes.
In diesem Fall werden die Endpunkte beider Linien miteinander verbunden. Die einzelnen Punkte der Linie die mehr Punkte besitzt, werden über das Kriterium der kürzesten Entfernung mit den Punkten der zweiten Linie verbunden.
Dalsze przykłady:
Special nodes for advanced modeling
Rendering the stairs can sometimes lead to an undesirable result if one draw start and end line with different number of nodes:
In particular, this can result in an undesirable geometry of lines after rendering:
drawn outline shapes
internal triangulation by renderer
unclean renderer output
result optimized by use of tagging solution described below.
If you want to avoid this and get the wishful result, the start and end line must be divided
by use of additionally tagging of points they should be connected corresponding to their position with:
If the real height values are known, you can use ele=* ( 3D)
The number of this points must be the same for start and end line!
(See sketch below: blue lines connect points that have the same tagging schema)
This tagging should be taken into account by the renderer.
Result mockup:
Outline and Inline
An "outline" multipolygon with tagging area:steps=yes, draws the irregular outer surface of the stair from top.
Therefore is it possible to combine several steps and footways as connected elements in ONE outline shape:
The surface after rendering:
Examples
Mockup rendering of a sequence of highway=steps and highway=footway with the same width=*:
Classical OSM 2D representation
Example: Rendering of a curved platform in OSM-4D
Combination of several connections within one outline:
stairs outline (Outline shape)
Mockup: result after rendering
Kierunek schodów
For right 3D interpretation of stairs one need the lowest and heighest point of steps. There are following possibilities:
Describe the lowest point of stairs as: "lowest:point=yes" Describe the highest point of stairs as: "highest:point=yes"
Jak rysować by uzyskać odpowiednie łamanie się stopni
Przykład: chemy osiągnąć następujący wygląd schodów w 2D i 3D:
musimy dodać dodatkowy punkt na osi schodów - a step further than the start of the turned steps:
W wyniku tego, przebieg stopni w renderingu pozostanie prostopadły do linii środkowej przebiegu schodów bez potrzeby dalszej parametryzacji.
Analogicznie dla przykładu w celu lepszego zrozumienia idei, rysunek schodów po półokręgu:
Przykład rysowania schodów barokowych
Schody składają się z trzech obrysów (outline); dwóch obszarów schodów i jednego obszaru footway: