Edytor/Budynki CityGML 2018

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Opis dotyczy przetwarzania brył budynków w formacie CityGML, udostępnionych przez Geoportal w 2018 roku, według pomysłu z 2018 roku. Być może pod koniec 2019 roku pojawi się jakaś lepsza koncepcja, wtedy też będzie opisana na osobnej stronie. Algorytm przedstawiony tu pewnie nadal będzie działał, choć może dawać gorsze rezultaty.

Informacje organizacyjne

Bryły budynków CityGML są zapisane w formacie XML, we współrzędnych PUWG 1992 (mowa o tych z Geoportalu, bo można też pobrać osobno np. budynki Poznania, one będą w innym układzie). W jednym pliku są budynki z obszaru "arkusza mapy" o boku około 2.3km, identyfikowanego przez współrzędne geograficzne, zapisane jako godło. Jeżeli arkusz wypada na granicy dwóch powiatów, to budynki będą w dwóch osobnych plikach, różniących się kodem powiatu. Kody powiatu są wg systemu TERYT i występują na początku nazwy pliku (4 cyfry). Aktualność budynków jest na lata 2011 do 2013.

Na potrzeby odwzorowania linii kolejowej trzeba będzie przetworzyć kilkanaście do kilkudziesięciu plików. Ponieważ budynków może być dużo, a część z nich może być odległa bądź zasłonięta np. lasem, podczas przetwarzania można podzielić budynki na bliskie i dalekie — znajdą się one w osobnych plikach. Jest również możliwość pominięcia wskazanych budynków (jeśli dysponuje się ładniejszymi modelami, bądź budynek pochodzi z innego czasu niż sceneria).

Budynki mają trzy elementy składowe: fundament, ściany oraz dach. Fundament może być użyty do zagęszczenia punktów wysokościowych terenu, poza tym jest niepotrzebny, gdyż jego trójkąty nie będą widoczne. Ściany nie mają teksturowania — można by na podstawie wykonanego ręcznie tagowania budynków oraz wysokości ścian dobierać tekstury z dostępnych. Dach ma szczegóły konstrukcyjne jak pochylenie połaci, natomiast można by ręcznie tagować typ dachu, a także udoskonalić algorytm przetwarzania w zakresie wydłużania okapów i wydłużania ścian szczytowych ponad dach. Budynki jednak nie posiadają takiej informacji. Być może na bazie brył CityGML powstanie ogólnopolska baza danych ulepszająca te dane o szczegóły, które będzie można użyć w symulacji.

Geoportal oferuje dwie wersje brył. Tzn. LoD1 to prostopadłościany bez skosów dla dachów, są one mało przydatne do użycia w symulacji, za to dostępne dla całej Polski i częściej aktualizowane. Lod2 to bryły ze skosami dachów. Wg stanu na koniec 2022 roku Rainsted przetwarza tylko bryły LoD2, a te LoD1 są ignorowane.

Przygotowanie

Należy pobrać pliki CityGML z Geoportalu, następnie wypakować je luzem do podkatalogu gisdata/CityGML. Pobieranie należy wykonać dla wszystkich powiatów, przez które przebiega linia, a także tych, których granice są w pobliżu linii (do 2km), a budynki wystarczająco wysokie albo widoczne z góry.

Procedura przetwarzania

Wczytanie wstępne

Należy wzdłuż linii kolejowej dokonać wczytania brył budynków (albo tylko fundamentów). Utworzone zostaną dwa pliki SCM z przetworzonymi budynkami, przy czym plik bliskich budynków będzie pusty. Aby ustawić punkt środkowy scenerii, należy wybrać plik SCN albo SCM, zawierający dyrektywę //$g z odpowiednią lokalizacją w układzie PUWG 1992. Inaczej środek będzie wypadał w okolicy Herbów Nowych (domyślny środek dla prac nad linią 61). Wczytywany arkusz będzie odpowiadał współrzędnym środka ekranu edycyjnego.

Klasyfikacja budynków

Pliki SCM można otwierać pojedynczo (co nie wymaga dodatkowych przygotowań) albo stworzyć plik SCN, który wczyta kolejne pliki z budynkami. Przy wczytywaniu dużej liczby arkuszy przez SCN wskazane jest wczytanie wstępne tylko fundamentów, gdyż Rainsted będzie zamulał przy dużej liczbie trójkątów, nawet na szybkim komputerze.

Po wczytaniu do Rainsted należy włączyć Podgląd terenu (edytor SCN) i obejrzeć budynki. Te, które są blisko torów, oznaczyć jako bliskie, wybierając opcję z menu CityGML, albo używając przycisku na zakładce Trójkąty. Wystarczy zaznaczyć jakikolwiek element budynku — mają one unikalne identyfikatory. Odpowiednio oznaczyć trzeba również budynki pomijane. Trójkąty oznaczonego budynku zmieniają kolor.

Wczytanie finalne

Należy wykonać jak przy wczytaniu wstępnym, w tym przypadku jednak budynki zostaną podzielone na bliskie i odległe.

Wykorzystanie fundamentów w terenie

Współrzędne fundamentów można wykorzystać do zagęszczenia punktów terenu, pochodzących np. z NMT-100. Obecnie nie ma prostej metody na wszycie fundamentów w teren.

Skomplikowana i pracochłonna metoda polega na dzieleniu trójkątów NMT-100 na pół i przesuwaniu końców do punktów fundamentów. Zakładając, że prostokątny obrys fundamentów znajduje się na jednym trójkącie NMT-100, trzeba będzie z tego jednego trójkąta zrobić 7 mniejszych.

Wszywanie w teren nie ma sensu dla budynków w większej odległości od torów.

Zrealizowane modyfikacje

Obliczanie wektorów normalnych

Ponieważ nowsze wersje MaSzyny nie liczą wektorów normalnych dla trójkątów, konieczne stało się ich obliczanie podczas konwersji.

Rozróżnienie na bliskie, dalekie i pomijane

Poprzez plik tekstowy o strukturze INI określić można, czy dany budynek jest bliski, czy odległy (ewentualnie ustawić jego pomijanie). Zależnie od tego wyboru bryły rozsortowane są na dwa pliki, a dołączanie budynków odległych można pominąć dla lepszej wydajności symulacji. Ustawienie pomijania pojedynczego budynku ma sens, jeśli mamy jego dokładniejszy model (np. nastawnia w Częstochowie Osobowej). Plik jest modyfikowany z menu Podglądu terenu, ale można też w nim robić ręczne poprawki.

Wczytywanie na poziom zero

Dla łatwiejszego określenia wysokości budynków oraz do użycia ich w ATS dodana została opcja wczytania z przeliczeniem fundamentu na wysokość 0. Tak przeliczone bryły zapisywane są w innych plikach niż standardowo.

Poprawiony podział na trójkąty

Punkty płaszczyzn są zapisane jako wielokąty, w tym zawierające kąty wklęsłe. Podział na trójkąty takiego wielokąta musi być realizowany w specjalny sposób, aby nie tworzyły się trójkąty na zewnątrz dzielonego wielokąta. Zostały już wprowadzone algorytmy poprawiające, jednak nadal mogą pojawiać się błędy i docelowo trzeba będzie kiedyś doprowadzić do pełnego wykluczenia innych wierzchołków i boków z wnętrza odcinanego trójkąta.

Wczytywanie fundamentów do RSF

Analogicznie do wczytywania NMT-100 zrobione jest pobieranie punktów do pliku RSF, aby zagęścić punkty terenu, szczególnie gdy okolica torów jest zabudowana. Dzięki temu można wygenerować trójkąty w edytorze RSF i następnie je wyeksportować do SCM.

Planowane zmiany

Wczytywanie brył CityGML ma obecnie charakter eksperymentalny, a bryły generują się błędnie. Rozważane są ulepszenia przetwarzania tych danych, które może z czasem zostaną wprowadzone.

Zapis brył w pliku DBF

Ponieważ przetwarzanie XML jest mało efektywne, brana jest pod uwagę opcja przepisania danych do pliku DBF, gdzie współrzędne będą zapisane jako liczby całkowite (32bit) o rozdzielczości 1mm. Pliki powinny przetwarzać się dużo szybciej, co jest istotne przy testowaniu zmian.

Pełna analiza odcinanych trójkątów

Obecnie stosowane są algorytmy uproszczone, które w pewnych sytuacjach mogą skutkować błędami w podziale wielokątów na trójkąty. W przypadku kątów wklęsłych algorytm próbuje odciąć trójkąty przy kątach wklęsłych, stosując uproszczoną weryfikację, czy odcinany trójkąt nie zawiera w sobie innych wklęsłości. Jeśli uproszczona weryfikacja nie zezwala jednoznacznie na odcięcie trójkąta, do odcięcia wybierany jest wierzchołek najbardziej odległy od kąta wklęsłego (bez dalszego sprawdzania), co może być źródłem błędów. Tak wybrany trójkąt powinien być sprawdzony, czy nie zawiera w sobie innych wierzchołków ani boków.

Wybór tekstury dachu

Obecnie dachy są mapowane jednym pikselem z przypadkowej tekstury. Użycie typowych tekstur dachu będzie wymagać powiązania pliku tekstury z budynkiem oraz prawdopodobnie określenia pewnych wskazówek co do teksturowania.

Określenie kąta elewacji

Będzie przydatne w celu pozyskania bryły do dalszych ręcznych poprawek. Przynajmniej jedna ściana będzie równoległa do osi.

Ulepszenia dachu

Będzie można określić długość okapu i wysokość ścian szczytowych, dzięki czemu poprawi się estetyka brył.

Mapowanie zdjęciami

Powinno się udać mapowanie brył zdjęciami zrobionymi z pewnej wysokości, np. z drona. Niektóre miasta mają zdjęcia ukośne, które też by można wykorzystać w tym celu.

Ściany widoczne z danego miejsca

Po wskazaniu miejsca na mapie będzie można wczytać do docelowego pliku tylko te ściany, które z tego miejsca będą widoczne. Ściany niewidoczne i zasłonięte budynki będą pomijane. Dzięki temu zamiast jednego ogromego zbioru brył uzyska się model przydatny do wyświetlenia na określonym obszarze, dla którego będzie można przepalić jedną teksturę. Modele takie będą musiały być tworzone prawdopodobnie co kilkaset metrów, ale każdy będzie miał jedną siatkę i jedną teksturę, dzięki czemu będzie łatwo je wczytywać i usuwać z pamięci.


Scenerie realistyczne
Sceneria Podstrony i informacje
Gorlice Realistyczny układ torów
Kaliska Etap 1Etap 2Etap 3WyczerpyLK146LK131Komórki
Linia 7 Aktualne zmianyKomórki
Linia 61 UwagiWOS 2011Aktualne zmianyZmiany 2017÷201920162015Komórki
Linia 64 Realistyczny układ torów
Linia 139 Aktualne zmianyKomórki
Linia 181 WOS 2011Aktualne zmianyKomórki
Suwałki Zmiany
Szczecin Przeliczenie
Tarnowskie Góry ZmianyKomórki
Toruń Zmiany
Tramwaje GOP Realistyczny układ torów
Scenerie fikcyjne
Sceneria Podstrony i informacje
Czarne Prosty tor o długości ponad 460km
Drawinowo Zmiany
Linia 546 OpisDzierżawa
MZD Zmiany
Quark MydelniczkaRuch 2016Aktualne zmiany
SDR StrzęsowiecCzerwiceKarpiceKrętoszynPiaskowiecWostrzewo
Tarniowo Na bazie rzeczywistej stacji, poprawne profile pionowe na szlakach
Zwierzyniec Zmiany
Zagadnienia ogólne
Profil 2-5-13Odcinki izolowaneSterowanie ruchem 2016Zasięgi nazewnictwa
Sieć trakcyjnaRegulacja
Teren NMT-100Budynki CityGMLPrzeliczanie niweletamiPrzeliczanie obszaramiKomórkiPUWG1992
Formatowanie SCNUnifikacja klonówZapis czasu
YouTube: Sceneria w RainstedZakopane
Lista scenerii, którymi można się zaopiekować