- Symulator MaSzyna -

Symulator EU07 (i nie tylko) => Na warsztacie => Wątek zaczęty przez: Hirek w 20 Czerwca 2023, 08:28:12

Tytuł: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: Hirek w 20 Czerwca 2023, 08:28:12
Hej,
na samym początku chciałbym zaznaczyć że sam nie wiem czy jest się tu czym chwalić, jeśli nie to niech administracja zamknie i zepchnie na bocznicę.

Wczoraj z racji tego że mi się bardzo nudziło a chciałem się pobawić w scenerie w maszynie to napisałem prosty pythonowy konwerter pliku pobranoego z OpenStreetMap na format rozumiany przez symulator. Sam kod działa prawie dobrze i robi to co zakładałem żeby robił. Jego umiejętności są na ten moment prymitywne bo ograniczają się jedynie do wzięcia i wrzucenia prostych fragmentów torów i połączenia ich. Oznacza to że łuki będą składać się z prostych segmentów zamiast z ładnego łuku (ale na to chyba można zaradzić rainstedem). Z rzeczy które jeszcze nie działają poprawnie zostało nazywanie node tracków i rotacja mapy. W załącznikach pod postem macie przykładowy wycinek Warszawy od Centralnego do Grodziska z linią WKD włącznie, oraz spojrzenie na bazę WKD w Grodzisku.

W założeniu nie ma to być program który jednym kliknięciem stworzy nam scenerie/układ torowy do niej. Ma tylko położyć jakąś bazę torów na którą trzeba będzie nałożyć mnóstwo poprawek innym edytorem jak np. rainsted, dodając zwrotnice, odtwarzając łuki, dodawając profil pionowy

Ogólnie to program mam zamiar udostępnić jak przepisze go na C# i posprzątam w kodzie, poprawiając multithreading, a kto wie może dorobię jakiś interfejs który skonwertuje cały zaznaczony fragment mapy.

Także do potem a jak program będzie w takim stanie że będzie można go wydać tutaj to umieszczę link do pobrania tutaj. Odnośnie jakichkolwiek aktualizacji będę dodawać kolejne wiadomości. Otwarty jestem na chęć współpracy i pomocy.

Pozderki, na dniach powinna wlecieć wersja przepisana na c#
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: Ra w 20 Czerwca 2023, 10:37:39
Z mojego doświadczenia mogę powiedzieć, że importowanie torów z OSM ma niewielki sens, chyba że ktoś lubi poprawiać krzywe tory (np. ja), a przy tym chce mieć szybko jakiś kawałek do przejechania. Przynajmniej kilka lat temu dokładność OSM w zakresie torów była słaba. Co jest i tak lepsze niż UMP, które z założenia ma niedokładność współrzędnych rzędu 1m. Natomiast z OSM jest sens importowania wszystkich innych rzeczy, np. dróg, ogrodzeń, linii energetycznych. Przy czym należałoby dopracować kwestie tworzenia dróg w MaSzynie, w szczególności skrzyżowań. Dane z OSM były parę lat temu importowane do świata w Outerra i automatycznie przetwarzane w drogi — wyglądało to średnio.

Kiedyś znalazłem jakiś program generujący model 3D z danych OSM. Niestety, chyba strona z tym programem zniknęła, ale może jest gdzieś indziej albo powstały inne programy tego typu. W załączeniu fragment Wielunia, który udało mi się wygenerować.

Przy tworzeniu scenerii z OSM trzeba uwzględnić kilka rzeczy, np. przeliczenie WGS84 na układ prostokątny płaski i wybór środka scenerii w tym układzie. Trzeba też uwzględnić wysokość terenu.
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: mati222 w 20 Czerwca 2023, 14:59:33
Potwierdzam to co zostało napisane powyżej. Dużą pomocą przy tworzeniu otoczenia realnych scenerii byłby program, za pomocą którego można importować drogi (bryły budynków już są do podmiany,  brakuje m. in. dróg). Nawet gdyby te drogi nie wyglądały idealnie, to i tak stanowiłoby to duże ułatwienie. Próby tworzenia i poziomowania dróg edytorem na sceneriach realnych z profilem pionowym, to zadanie praco i czasochłonne, a tworzone w ten sposób drogi nie wyglądają dobrze. 
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: Hirek w 20 Czerwca 2023, 17:41:53
Opcję automatycznego wstawiania dróg mogę oczywiście dorobić, jest to w sumie kwestia podania inaczej spreparowanego pliku z danymi wygenerowanymi na overpassie - zamiast "railway" = "rail" użyć innego parametru na drogi. W tej kwestii będę to musiał jeszcze przejrzeć i pewno zaimplementuję taki generator dróg. Aktualizację wstawiłbym dzisiaj ale aktualnie ciągnę maraton 26h od ostatniego spanka także jak już będę miał do tego siąść to jutro.
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: matek123 w 20 Czerwca 2023, 18:17:27
Pomysł ciekawy, ale raczej tylko jako podkładowy. Licencji danych z OSM raczej nie przeskoczymy w bezpośrednim wykorzystaniu w Maszynie.
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: Ra w 20 Czerwca 2023, 18:23:30
Wczytywanie dróg o tyle się różni, że skrzyżowania są jakoś bardziej prostokątami z drogami dołączonymi na bokach, co nie ma bezpośredniego przełożenia na format MaSzyny. Trzeba by coś modelować na podstawie pobranych danych i raczej już z uwzględnieniem wysokości terenu. Kiedyś planowałem połączyć odcinki dróg z trójkątami terenu, co w efekcie miało dać drogę wkomponowaną w teren bez konieczności żmudnego dopasowywania niezależnych od siebie siatek.

W załączeniu obrazek z Lublińca w alternatywnym świecie, widzianym przez użytkowników Outerra. Tam, gdzie są te drzewa, powinny być tory od Jawornicy oraz Rusinowic, a droga przechodząca w poprzek przez nieużytki to wiadukt nad stacją. Parę lat temu czytałem o planach wprowadzenia linii kolejowych, ale nie interesowałem się tym bliżej i nie wiem, czy są jakieś postępy w tym zakresie. Użycie Outerra jako silnika graficznego do MaSzyny rozważałem około 2014 roku.
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: JAN21 w 20 Czerwca 2023, 23:13:10
Pomysł ciekawy, ale raczej tylko jako podkładowy. Licencji danych z OSM raczej nie przeskoczymy w bezpośrednim wykorzystaniu w Maszynie.

Po wielokrotnym przeliczeniu współrzędnych i wypoziomowaniu nikt się nie doszuka ;)
Tytuł: Odp: Konwerter OSM > MaSzyna
Wiadomość wysłana przez: Hirek w 29 Czerwca 2023, 22:12:44
Jako iż na ten moment nie chce mi się zabierać za przepisywanie tego na inny język to udostępnię dla pokoleń źródło w pythonie.

Do folderu ze skryptem wrzucić zawartość danych z osm pod nazwą export.json
Skrypt stworzy plik scm z nimi. Na początku skryptu trzeba pobawić się trochę w przesuwanie mapy coby symulator nie dostał za dużych wartości do interpretacji. Z fartem mordeczki.