Wprowadzenie w relacje

From OpenStreetMap Wiki
Jump to navigation Jump to search

Poniższy artykuł jest wprowadzeniem do korzystania z relacji w OSM. Formalna definicja relacji znajduje się w artykule Relacje.

Podstawowe wiadomości

Niektórych rzeczy nie da się w OSM opisać zwykłymi atrybutami związanymi z punktami i drogami. Do opisu związków bardziej złożonych mamy tak zwane relacje. Na przykład, ktoś może chcieć opisać trasę autobusu w OSM. Taką drogę nazywa się w OSM route=*.

Wielu osobom znany jest termin niemiecki "Routenplaner".
Droga, trasa po której jeździ autobus, jest typowym przykładem tego, co w OSM jest przedstawiane za pomocą relacji. Oprócz tras autobusów mogą to być na przykład granice administracyjne, szlaki turystyczne lub przebieg drogi krajowej.

Relacja może, tak samo jak punkt czy droga, otrzymać atrybuty.
Możemy przykładowo napisać, że jest to trasa linii autobusowej, która nosi konkretny numer i jest obsługiwana przez konkretnego przewoźnika.

Przykład oznaczenia Relacji dla linii autobusowej:

  • type=route
  • route=bus
  • ref=781
  • network= nazwa przewoźnika, np. PKS
  • name= nazwa linii

Prosta relacja to zbiór linii i węzłów zwanych członkami relacji (angielski: members), które - obrazowo mówiąc - zostają "wrzucone" w relację jak w koszyk. Ten typ relacji opisuje, jakiemu celowi służy dana relacja. Jeśli celem jest przykładowo opis jakiejś trasy, to składające się na nią fragmenty dróg zostaną "zebrane", a więc przypisane relacji.
Przyporządkowanie (zbieranie) punktów i ścieżek w relację w edytorach nastąpi poprzez oznaczenie jednego lub więcej znaków, a następnie dodanie ich w menu do relacji.

Nawet jeśli dla człowieka rysującego mapę jest intuicyjnie oczywiste w jakiej kolejności należy przyporządkować poszczególne odcinki danej drogi, szlaku itd., to baza danych OSM nie jest w stanie rozpoznać prawidłowej kolejności odcinków. Oprócz tego jest możliwe, że droga będzie się krzyżowała sama z sobą. W takiej sytuacji także człowiek nie jest w stanie rozpoznać np. jaką drogą porusza się autobus. Dlatego poszczególne elementy takiej relacji muszą być uporządkowane w prawidłowej kolejności. W tym celu edytory po wywołaniu danej relacji wspomagają funkcję umożliwiającą sortowanie elementów w ramach danej relacji.

Niezależnie od swojej kolejności elementy relacji typu route są wobec siebie równoważne. W innych typach relacji elementy mogą nie być równoważne, lecz wypełniać specjalne zadania w ramach relacji. Te specjalne zadania określamy jako rolę. W tym celu, każdy element relacji posiada pole tekstowe, w którym ta rola może być wprowadzona.

Rola może składać się tylko z jednego słowa.

Jeśli pole tekstowe danej roli nie jest wypełnione, jak w przypadku relacji typu route, to element ten nie ma żadnego specjalnego zadania/roli, lecz jedynie zadanie standardowe.

Inaczej jest w przypadku relacji typu nakaz wykonania manewru /tu lepsze słowo po polsku...
Relacja ta opisuje, w jaki sposób narzucono zakaz skrętu na danym skrzyżowaniu. Musimy tu opisać z jakiej ulicy, przez który punkt nie wolno skręcić i w którą ulicę.
W tym celu przypisujemy elementom role: from, via i to.

Tak więc musimy na początku zdefiniować, jakiego typu jest dana relacja. Dopiero wtedy będziemy wiedzieć, jakie wartości może przyjąć rola. Bez określenia typu relacji określenie roli nie ma więc sensu.

Zbiór relacji można ponownie zebrać w kolejna relacje typu parent (super relacja).

W edytorze Potlatch edycja i obróbka relacji możliwa jest tylko w modusie zaawansowanym.

Dodać jeszcze należy, że w opisanym szczególnym przypadku trasy linii autobusowej, w prawidłowej kolejności zebrać należy w relacji nie tylko samą geometrię trasy, ale także kolejność przystanków autobusowych. Dla każdego kierunku jazdy autobusu tworzymy osobną relację i łączymy je potem w jedną super relację.

Definicja

Relacje to grupy obiektów (punkty, linie, płaszczyzny lub inne relacje). Relacje nie mają własnego położenia geograficznego. Tak jak punktom, liniom i płaszczyznom relacjom można przypisać własności (key i value).

Relacje służą do prostego grupowania obiektów.
Aby przykładowo przedstawić turystyczną trasę rowerową, wszystkie jej fragmenty, takie jak ścieżki rowerowe, mosty, ulice, zostaną przyporządkowane danej relacji, np. relation=Gera-Radwanderweg. Tej grupie elementów dróg przypisujemy właściwość Trasa rowerowa.

Innym celem jest przypisanie poszczególnym elementom relacji zdefiniowanych zależności w stosunku do siebie.
Elementom takiej grupy mogą być przypisane dowolne role (angielski: roles). Przykładowo możemy w ten sposób stworzyć reguły wykonywania manewru skrętu (Z drogi A nie wolno skręcić w drogę B).

Za pomocą Multipolygon-Relationen /tu zastąpić polskim linkiem/ można np. rysować otwory (patio) wewnątrz budynków, polany w lasach czy wyspy na jeziorach.

Relacje nie są kategoriami.
Przykład: Nie zbieraj wszystkich stacji benzynowych jednego operatora w relację, tylko używaj do tego celu wyszukiwarki w OSM sortując według amenity=fuel i operator=operator_xy, tworząc w ten sposób własną bazę danych.

Relacje wprowadzono do OSM wraz z API v0.5 dnia 08.10.2007.