Klasa/BinPos

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Klasa opisuje obiekt punktowy, to znaczy taki, którego położenie w scenerii jest opisane za pomocą trzech współrzędnych XYZ. Na ogół każdy obiekt punktowy ma też określony kąt obrotu względem osi pionowej.

Obiekty punktowe, poza ustawieniem jakiegoś modelu w konkretnym punkcie przestrzeni, mogą pełnić różne funkcje dodatkowe. Obiektami punktowymi są:

Zawartość rekordu

Nagłówek rekordu — pierwsze 20 bajtów
Start 0x00 0x01 0x02 0x04 0x08 0x0C 0x10
Rozmiar [B] 1 1 2 4 4 4 4
Nagłówek — wersje od 13 do 17 Len Flags Type Path Id Prev Next
Nagłówek — od wersji 18 Len Flags Type Id Path Prev Next
Nagłówek trójkąta (wersja 18) Len Flags Type Id Tri[0..2]

Pole Len zwykle ma wartość 1. Wyjątkiem są obecnie słupy podwójne, które zawierają liczbę 2. W przyszłości mogą pojawić się też inne agregaty, np. bramki z dwiema nogami lub z opcją kotwienia, słupy potrójne i poczwórne. Zasadniczo złączenie obiektów jako agregat służy do przemieszczania ich razem w sposób bardziej trwały niż np. przyklejenie (zwisu do bramki). Przykładem są słupy z wysięgnikiem oraz kotwieniem, które to kotwienie jest zawsze ściśle określone względem pozycji słupa, a każde zamocowanie drutu jest osobną listą dwukierunkową.

Pole Flags zawiera blokadę dla wartości Id (współrzędnej T w układzie THV). Jeśli blokada jest ustawiona, a obiekt ma połączenie do trajektorii z niweletą, będzie przesuwany wzdłuż trajektorii do odpowiedniego miejsca. Ma to obecnie znikomą przydatność, kiedyś było używane do np. do pozycjonowania semaforów według kilometrażu podanego na schemacie, jeśli pozycja semaforów nie była widoczna na ortofotomapie. Niemniej obecnie pozycjonowanie takie jest używane wewnętrznie przy dodawaniu np. wskaźników W11a do tarczy ostrzegawczej. Pozostałe bity są używane do umieszczenia obiektów w grupach podczas różnych operacji.

Pole Type dla obiektów punktowych zawiera liczbę z zakresu 0x8000..0xBFFF. Zakres ten jest następnie dzielony na 4 główne warstwy: sieci elektryczne (0x8000..0x8FFF), sygnalizacja 0x9000..0x9FFF, obiekty z obrysem (0xA000..0xAFFF) oraz pojazdy (0xB000..0xBFFF). Każda z 4 głównych warstw dzieli się następnie na 16 warstw. Przy czym sieci elektryczne, sygnalizacja i pojazdy są następnie powiązane z warstwami trajektorii (tory, drogi, rzeki), natomiast obiekty z obrysem dzielą się na 16 warstw o różnych własnościach, np. mosty, bramki trakcyjne, drzewa i studnie. W warstwie obiektów z obrysem znajdują się również te elementy sygnalizacji, które są pozycjonowane względem więcej niż jednej trajektorii, np. ukresy. Dolny bajt pola Type zawiera flagi blokad o znaczeniu zależnym od warstwy. Przykładowo dla obiektów sygnalizacji 3 najmłodsze bity są używane do podzielenia sygnalizacji na 8 odrębnych kategorii, które różnią się sposobem wiązania ze sobą i z trajektoriami.

Pole Id zawiera kilometraż na niwelecie (współrzędną T w układzie THV, wyrażoną w [mm]). Istotny jest znak tej liczby: dodatni oznacza, że np. — przy patrzeniu w stronę rosnącego kilometrażu — obiekt sygnalizacji będzie widoczny od bardziej istotnej strony, a słup będzie stał po prawej stronie.

Pole Path może być puste (0) albo zawierać wskaźnik na obiekt nadrzędny, np. tor, drogę. Jeśli jest puste, to obiekt jest pozycjonowany w pionie na podstawie trójkątów terenu, punktów terenu, albo danych wysokościowych (SRTM, NMT-1). Jeśli jest wskaźnik na trajektorię, to pozycja względem trajektorii może zostać zablokowana i będzie każdorazowo przeliczana, aby zachować zapisane odległości. Jeśli nie będzie blokady, odległości te będą wyliczane względem rzutu współrzędnych XYZ obiektu na trajektorię.

Pola Prev oraz Next są używane do łańcuchowania obiektów. Dla słupów kolejne obiekty z listy tworzą sekcję naprężania. Dla obiektów podłużnych typu ogrodzenia — kolejny obiekt będzie dostawiany do końca poprzedniego, a poprzedni obracany w kierunku następnego. Planowane było łańcuchowanie sygnalizacji w celu weryfikacji kompletności, jednak obecnie jest to zawieszone. Niezerowa wartość w Prev umożliwia ręczne wpisanie kąta obrotu (do weryfikacji!). Wpisanie trajektorii jako Prev spowoduje umieszczenie obiektu na końcu odcinka, co jest używane np. do pozycjonowania kozłów oporowych na końcu toru.

Współrzędne czterech punktów — 60 bajtów zaraz za nagłówkiem
Start 0x14 0x44 0x48 0x4C
Rozmiar [B] 48 4 4 4
Linia prosta P[0..3] BaseItem BaseDist Length
Łuk P[0..3] BaseItem Radius Length
Poprzeczka P[0..3] BaseItem A0 Angle
Obiekt punktowy P[0..3] BaseItem BaseDist Angle

Dla obiektów wstawianych punktowo głównym punktem wstawienia jest P[1]. W przypadku sieci trakcyjnej P[0] jest punktem końca wysięgnika, a przewód jezdny rozpięty jest pomiędzy P[2] (własny) i P[3] (mocowanie na innym słupie). Współrzędne zapisane są stałoprzecinkowo, w jednostkach równych 1/8129m.

Pole BaseItem wskazuje na bramkę, do której przyklejone są zwisy sieci trakcyjnej albo elementy sygnalizacji.

Pole BaseDist teoretycznie powinno zawierać odległość obiektu od punktu 1 przypisanej trajektorii, w rzeczywistości było błędnie liczone i nie używane do niczego. W przyszłości zastosowanie zostanie zmienione.

Pole Angle zawiera kąt obrotu obiektu, który jest używany podczas eksportu (wtedy może być do niego doliczona wartość stała, powiązana z plikiem). Kąt jest wyrażony czterobajtową liczbą typu float, ale w przyszłych wersjach pliku RSF planowana jest zmiana mapująca __int32 na kąt pełny (2π), co ma zwiększyć dokładność zapisu kąta.

Dodatkowe parametry obiektu punktowego — 12 bajtów
Start 0x50 0x54 0x58
Rozmiar [B] 4 4 4
Pola Pos File Texture

Pole Pos zawiera odległości od osi trajektorii w poziomie (Pos.H) i pionie (Pos.V) w [mm]. Zależnie od ustawionych blokad, odległości te albo są używane do wyliczania pozycji XYZ w P[1], albo są wyliczane jako różnica P[1] i jego rzutu na trajektorię. Jeśli trajektoria nie jest podpięta (jako Path), to P[1].Z jest wyliczany z wybranego modelu wysokości terenu (wg punktów wysokościowych albo wg trójkątów terenu). Ponieważ przyjęcie jednostki 1mm ogranicza odległość od trajektorii do ±32m, w planach było ewentualne użycie kompresji albo skalowania, jednak dotychczas nie zostało to wprowadzone.

Pole File zawiera wskaźnik na nazwę pliku obiektu oraz jego dodatkowe parametry (wymiary).

Pole Teksture zawiera wskaźnik na nazwę pliku tekstury. Dla sygnalizatorów może być to nazwa tabliczki.

Pozostałe 36 bajtów jest wykorzystane na inne parametry, w tym ostatnie 20 bajtów najczęściej zawierają nazwę (wyjątkiem są mocowania sieci trakcyjnej, które zamiast nazwy zawierają współrzędne drutów).


Klasy ogólne BinBinManagerBinRecordBinItemBinLineBinPos
Klasy parametrów BinFileBinArcInfo
Klasy obiektów BinTrackBinPathBinSectionBinTraction
Linie Linia kierunkowaNiweletaPoprzeczkaTrajektoriaŚciana
Punktowe BramkaBudowlaDrzewoObrotnicaMostPrzejazdStudniaUkres

SygnałSłupSłupek kilometrażowy

Trójkąty TrójkątyTeren NMT-100CityGML
Eksport MaSzynaKody eksportu
Operacje Układanie niweletyŁuki koszowe
Inne RSF wersja 15RSF wersja 16WarstwyGrupaKomórkiScenerieRSFSTRU