GEO — mapa zasadnicza
Moduł GEO (identyfikator mapa) pokazuje mapę zasadniczą: trzy rejestry urzędowe — GESUT, EGiB i BDOT500 — narysowane znakami umownymi z załącznika nr 4 do rozporządzenia.
Moduł GEO (identyfikator mapa) pokazuje mapę zasadniczą: trzy rejestry
urzędowe — GESUT, EGiB i BDOT500 — narysowane znakami umownymi
z załącznika nr 4 do rozporządzenia. Dane idą z PostGIS przez serwer kafelków
wektorowych Martin, a znaki punktowe i wzory linii rysuje przezroczysta
nakładka Three nad mapą.
Wszystkie warstwy urzędowe przychodzą jednym kafelkiem złożonym — jedno zapytanie do Martina na kafelek widoku, a nie osobne dla każdej z ponad trzydziestu warstw (od 2026-09-14). Wcześniej przesunięcie mapy wysyłało setki zapytań naraz. Warstwy ukryte przychodzą w kafelku razem z widocznymi, ale mapa ich nie rysuje.
Punkt graniczny EGiB rysuje się kołem, nie obrazkiem (od 2026-09-19). Znak punktowy z kafelka, którego blok to jeden okrąg — punkt graniczny stabilizowany (pusty okrąg 1,0 mm z kreską 0,18 mm) i niestabilizowany (kropka o średnicy 0,18 mm, jak w tabeli rozporządzenia) — idzie warstwą kół MapLibre: koło i obwódka są liczone analitycznie, więc pusty okrąg ma pusty środek także przy 4 pikselach, a kropka ma swój rozmiar, nie rozmiar okręgu. Wcześniej oba znaki były obrazkami SDF skalowanymi do 1,0 mm i wyglądały jednakowo — jak pełna plama. Pozostałe znaki punktowe kafelków nadal są obrazkami SDF.
Drzewo obiektów
Grupy GESUT, EGiB i BDOT500 nie są osobnymi modułami — to grupy obiektów w drzewie w lewym sliderze. Z drzewa osiągalny jest każdy z 89 znaków GESUT, łącznie z wariantami:
- grupa NIECZ — warianty „nieczynny";
- warianty kształtu:
supw_okragly,supw_kwadratowy,sutp_napowietrzny; - pozycje „— obszar" dla obiektów powierzchniowych.
W grupach BDOT500 obiekty stoją płaską listą, bez węzła do rozwijania:
każda reprezentacja jest osobną pozycją w schemacie
KOD - Opis (Punkt | Linia | Powierzchnia | Okrąg), np. „OTDC - Wieża
ciśnień (Punkt)" i „OTDC - Wieża ciśnień (Powierzchnia)". Zakładki GESUT,
EGiB i BDOT500 nie mają kolumn WIDOK i DRUK (od 2026-09-13 wszystkie trzy)
ani kolumny z liczbą obiektów (od 2026-09-14) — widocznością i drukiem
steruje zakładka WARSTWY. GESUT i EGiB mają węzeł obiektu z typami wprowadzania pod
nim. Nagłówki grup GESUT (SIEĆ WODOCIĄGOWA, SIEĆ KANALIZACYJNA…) stoją bez
kodu grupy (polecenie 2026-09-13).
Przewody GESUT wg typu (od 2026-09-13): przewód, którego schemat ma
atrybut typPrzewodu, stoi w drzewie jako osobny węzeł na każdy typ —
„SUKP PRZEWÓD KANALIZACYJNY-SANITARNY", „-DESZCZOWY", „-OGÓLNOSPŁAWNY",
„-PRZEMYSŁOWY", „-LOKALNY"; tak samo SUWP (ogólny, lokalny), SUEP (wg
napięcia), SUGP (wg ciśnienia), SUCP (wg parametru), SUTP (światłowód, inny),
SUSP (benzynowy, naftowy, inny). Każdy węzeł ma te same opcje (oś, obrys,
w skali) i ten sam znak; wybór zakłada warstwę z atrybutem domyślnym
gml_typPrzewodu, który obiekt dostaje od chwili narysowania — z niego
powstaje litera w opisie („kd200" = kanalizacja deszczowa 200); obiekty
z importu dostają typ z atrybutu typ_przewodu.
Węzeł „napowietrzny" (SUEP, SUTP) zostaje jeden — jego opcje same niosą
napięcie.
Przewód nadziemny z importu ma znak napowietrzny (od 2026-09-25). Obiekt z atrybutem przebieg = „n" (nadziemny) dostaje znak (B–E) załącznika nr 4 wybrany według napięcia: niskie → B, średnie → C, wysokie → D, najwyższe → E; telekomunikacyjny ma jeden znak napowietrzny. Wcześniej taki przewód rysował się znakiem podziemnym, czyli gołą czerwoną linią bez znaczków wzoru — a to znak (A), przewidziany dla przewodów podziemnych. Przewód nieczynny zostaje przy swoim znaku, bo biblioteka nie ma znaku łączonego, a nieczynność widać na mapie ważniej niż sposób prowadzenia. Przy imporcie do rysunku przewody napowietrzne trafiają na osobną warstwę z dopiskiem „— napowietrzne": warstwy rozdziela znak, więc bez dopisku dwie różne warstwy nazywałyby się tak samo.
Od 2026-09-12 w zakładkach GESUT, EGiB i BDOT500 każda grupa stoi w ramce z rozwijanym nagłówkiem (kliknięcie rozwija i zwija), a pozycje obiektów w rozwiniętej grupie to nawigacja z kreską (LineNav): kreska przy pozycji wybranej do rysowania i pod kursorem jest dłuższa. Pozycja bez znaku w bibliotece jest wyszarzona. Węzeł z opcjami wprowadzania (oś, obrys, w skali) rozwija się kliknięciem, a opcje stoją pod nim tą samą nawigacją, wcięte.
Zakładka WARSTWY
Pokazuje warstwy, które w rysunku naprawdę są — także puste; warstwy z największą liczbą obiektów stoją na górze. To tabela pismem 10 px z kolumnami: LP. (numer pozycji po sortowaniu), NAZWA (etykieta znaku taka sama jak w zakładkach GESUT / EGiB / BDOT500: kod i nazwa; warstwa własna bez znaku w drzewie zostaje pod nazwą z projektu), SZER. (szerokość kreski; w komórce sama liczba z kropką dziesiętną, milimetry w podpowiedzi; od 2026-09-25 kliknięcie otwiera listę szerokości, którymi rysują biblioteki: 0.05–1 mm, a wartość spoza listy zostaje na niej — bez wpisywania z ręki), KOLOR (sama próbka; zapis #rrggbb w podpowiedzi pod kursorem; kliknięcie otwiera dymek z szesnastoma kolorami podstawowymi i przyciskiem WŁASNY KOLOR, który sięga po wybierak przeglądarki — od 2026-09-20, ten sam dymek stoi przy stylu warstwy w pasku narzędzi), WIDOK (oko), LINIA (próbka wzoru kreski) i DRUK (drukarka: czy warstwa wchodzi na wydruk PDF). Kolumna OBIEKTÓW i pasek z liczbą warstw i obiektów nad tabelą zeszły 2026-09-14. Układ kolumn i pismo od 2026-09-12; od 2026-09-23 nagłówek brzmi SZER. zamiast GRUBOŚĆ MM, a kolumna LINIA stoi za WIDOKIEM. Tabela stoi na tej samej siatce, co tabela obiektów w prawym sliderze: kliknięcie nagłówka sortuje, krawędź nagłówka zmienia szerokość kolumny, nagłówek jest przyklejony, a wiersze są wirtualizowane. Kliknięcie wiersza ustawia warstwę bieżącą (wiersz zaznaczony); oko i drukarka działają bez zmiany warstwy. Rodzaj linii, grubość i kolor idą ze znaku umownego warstwy, a nadpisania ze stylu warstwy mają pierwszeństwo — tabela mówi to, co widać na mapie.
Przełączenie oka lub drukarki nie przelicza całego rysunku (od 2026-09-25): kreskowanie skarp i stopnie schodów są pamiętane na obiekt i na mapę idzie tylko różnica, więc na opracowaniu z ponad stu tysiącami obiektów kliknięcie zamyka się w ułamku sekundy zamiast kilku sekund. Kliknięcie w wiersz warstwy ukrytej nie ustawia jej jako bieżącej — pasek komunikatów mówi, że na ukrytej warstwie nie da się rysować.
Rzędne urządzeń GESUT i opis „innej budowli"
Nośnik rzędnej GESUT (punkt o określonej wysokości przewodu lub urządzenia) niesie rzędną góry i dołu. Na mapie stoją obie: góra w pierwszym wierszu, dół pod nią (od 2026-09-13; wcześniej rysowała się tylko góra), obie z dwoma miejscami po przecinku także wtedy, gdy plik nie niesie własnej treści opisu (wcześniej „269.1" zamiast „269.10"). Nośnik z samą rzędną dołu (dno bez rzędnej włazu) pokazuje ją w pierwszym wierszu, razem z odnośnikiem z pliku — wcześniej taki punkt nie miał na mapie ani rzędnej, ani odnośnika (poprawka 2026-09-13). Kreska odnośnika jest kreską ułamkową: góra nad nią, dół pod nią; nośnik z samą rzędną dołu stoi pod kreską (2026-09-13). Wiersze opisu piętrowego są wyrównane do wspólnej prawej krawędzi (od 2026-09-19): cyfry mają jednakową szerokość, więc przecinki obu rzędnych stoją pod sobą także wtedy, gdy liczby różnią się liczbą cyfr („1256.80" nad „256.30"); wcześniej każdy wiersz był osobno wyśrodkowany. Kreska odnośnika biegnie pod całą kolumną. Symbole i litery rysowane blokami stoją względem osi układu projektu, nie północy geograficznej — poprawka zbieżności południków w blokach Three (zgłoszenie „wstawiony symbol jest skręcony", 2026-09-13). Odwodnienie liniowe SUKL: pas dwóch krawędzi b 1,0 mm bez osi, zamknięty na końcach, z kreskami poprzecznymi co 0,7 mm. Obiekt BDOT500 OTDI „inna budowla" ma na mapie stały opis „ib" (wskazanie użytkownika z rozporządzenia, 2026-09-13); informacja dodatkowa („korytko betonowe", „fundament") jest tylko atrybutem w panelu obiektu, nie napisem na mapie.
Sekcje atrybutów w panelu obiektu (od 2026-09-25). Panel w prawym sliderze
dzieli atrybuty obiektu na trzy sekcje: „Atrybuty wg rozporządzenia" (albo
„wg schematu biblioteki", gdy warstwa pochodzi z biblioteki własnej ze
słownikiem z XSD) — pola ze słownika klasy, listy kodowe jako wybór; „Atrybuty
GML spoza schematu" — każde pole gml_*, którego słownik biblioteki nie zna,
także dla obiektu na warstwie bez znaku (do 2026-09-25 takie pola nie
pokazywały się nigdzie, choć szły do eksportu); „Atrybuty techniczne" —
reszta (blok, środek, obrót). O tym, KTÓRY słownik opisuje obiekt, rozstrzyga
warstwa (biblioteka_id), a bez niego — prefiks kodu znaku (SU, EG, OT);
biblioteki własne nie są nigdy przeszukiwane po samym znaku, bo ten sam kod
może mieć w dwóch bibliotekach inne atrybuty.
Warstwa założona znakiem z biblioteki własnej zapamiętuje identyfikator tej
biblioteki (od 2026-09-25), więc słownik nie jest zgadywany po kodzie —
bierze się z niej wprost.
Styl punktu a obiekty z rejestrów
Pozycja Punkt… w menu USTAWIENIA ramki mapy wybiera symbol punktów roboczych (dziś: punkty z wykazu współrzędnych): kółko, kółko z kropką, kropka, krzyżyk, kwadrat albo brak symbolu. Obiekty punktowe GESUT, EGiB i BDOT500 — także pikiety OTRN i OTRS (kropka 0,18 mm i rzędna pismem 1,5 mm) — temu ustawieniu nie podlegają: rysuje je znak z rozporządzenia. (Do 2026-09-13 było odwrotnie: ustawienie zmieniało pikiety.)
Tabela obiektów a ruch mapy
Tabela w prawym sliderze pokazuje rysunek uspokojony: po każdej zmianie (dociągnięcie kadru z bazy, edycja) czeka 300 ms ciszy i dopiero wtedy przebudowuje wiersze. Mapa i panel danych idą na żywo; tabela nie liczy tysięcy wierszy kilkanaście razy w czasie jednego przesunięcia mapy.
Tabela pokazuje cały rysunek, nie wycinek: przy 126 311 obiektach pasek stanu mówi „Wierszy: 126 311" i tyle też da się przewinąć. W drzewie strony stoi jednak tylko kilkadziesiąt wierszy naraz — te widoczne plus zapas — a resztę wirtualizacja podstawia w trakcie przewijania. Pole Szukaj filtruje po całości, niezależnie od tego, co akurat widać na mapie.
Do 2026-09-25 tak nie było: gniazdo prawej szuflady nie miało własnej wysokości, więc obszar przewijania tabeli rósł do wysokości wszystkich wierszy (4 041 992 px), wirtualizacja uznawała, że cała tabela mieści się w oknie, i wstawiała do drzewa strony komplet 126 311 wierszy. Przewijała się wtedy płyta szuflady, a nie tabela — stąd kilkanaście wierszy i pusta przestrzeń pod nimi.
Przełączenie zakładki nic nie kosztuje (od 2026-09-26). Tabela zapamiętuje policzone wiersze: wyjście na zakładkę INFO ich nie wyrzuca, a powrót nie liczy ich od nowa. Przeliczenie odbywa się wtedy, gdy zmieni się rysunek — także wtedy, gdy zmienił się przy schowanej zakładce, więc po powrocie widać stan aktualny, a nie zapamiętany.
Wcześniej było odwrotnie: schowanie zakładki kasowało wiersze, a powrót budował je od zera. Przy 126 311 obiektach każde przełączenie zatrzymywało aplikację na pół sekundy do sekundy (zmierzone: 543–824 ms; po poprawce 100–126 ms).
Symbolika
- Wzory linii EGiB pochodzą z biblioteki
MapaZas2021.lin— 11 kodów (EGJE, EGOE, EGUG, EGKK, EGBU, EGBP, EGBL, EGBZ, EGBA, EGBW, EGBI). - 22 znaki BDOT500 ze wzorem kreskowym, wzory powierzchniowe zieleni
(
otzz,otzk,otzc,otzt). - Etykiety GESUT i EGiB: litera sieci,
typPrzewodui średnica. - Znaki dwuliniowe, końcówki linii (przepust OTKZ, brama OTOB, furtka OTOF), symbol środka (OTSP, OTSZ), obrysy poligonów.
- Wstawki (kropki ogrodzeń, kształty) znikają poniżej zoomu 15.
Skala
Jeden stan skali opracowania (1:500 albo 1:1000) karmi mapę, wydruk i eksport DXF — nie ma trzech niezależnych ustawień. Skalą bazową rysowania jest 1:500. Reguła 75 % dla wielkości symboli obowiązuje także na ekranie, a nie tylko w wydruku.
Przycisk OPISY w stopce ustawia osobno skalę opisów: 1:200, 1:500, 1:1000 albo własną.
Kreski skarp i stopnie schodów
Dwa znaki mają drugą geometrię, bez której obiekt zostaje pustym obrysem. W obu razach obrys rysuje się w całości, a zaraz po jego zatwierdzeniu włącza się tryb wskazywania: dwa kliknięcia, Esc kończy bez znaku wewnętrznego, Ctrl+Z cofa punkt po punkcie.
| Znak | Co się wskazuje | Gdzie |
|---|---|---|
| Skarpa (umocniona, nieumocniona) | początek i koniec góry | na obwodzie — wskazanie dociąga się do niego |
| Schody w ciągu komunikacyjnym, schody (budowle) | początek i koniec biegu | dowolnie — polilinia nie musi leżeć na obwodzie |
Przy schodach polilinia kierunkowa wyznacza kierunek wypełnienia, a stopnie stawia się do niej PROSTOPADLE — każdy stopień jest cięciwą obrysu w poprzek polilinii, co 1,0 mm mapy. Prostopadłość wiąże stopień z polilinią, nie z obrysem: dla schodów zakrzywionych albo wachlarzowych wypełnienie obraca się razem z nią.
Aplikacja niczego nie zgaduje: bez punktów góry nie wiadomo, po której stronie jest grzbiet skarpy, a bez polilinii — w którą stronę ustawić stopnie. Schody wczytane z pliku GML mają polilinię kierunkową z pliku i wskazywania nie wymagają.
Import
- GML — kreator WYBÓR PLIKU → ZAPIS PLIKU DO BAZY → IMPORT Z BAZY → RAPORT KOŃCOWY, bez limitu rozmiaru, z dziennikiem komunikatów na żywo i przyciskiem W TLE (okno znika, import biegnie, na końcu okno z wynikiem).
- Wykaz współrzędnych
.TXT/.CSV— kreator PLIK → KOLUMNY → PODGLĄD, wynik na warstwie „Punkty z wykazu".
Kolejność: najpierw zapis, potem rozbiór (od 2026-09-22). Wskazanie pliku w kroku 1 nie wysyła niczego — plik wchodzi na listę natychmiast, z nazwą i rozmiarem. Krok 2 zapisuje bajty do bazy bez rozbierania, a dopiero gdy materiał jest w bazie, serwer go rozbiera i dopisuje rejestry, klasy i strefy. Nieudany rozbiór nie oznacza więc utraty materiału — plik już leży w bazie.
Ile to trwa. Rozbiór rośnie z rozmiarem pliku: 4 MB ≈ 1 s, 36 MB ≈ 6 s, 58 MB ≈ 10 s (zmierzone na stanowisku). Wysyłka jest od niego niezależna: wcześniej obie rzeczy siedziały w jednym żądaniu i przy dwóch plikach drugi stał na „Wysyłam plik na serwer… 0%" przez cały czas rozbioru pierwszego. Dla porównania plik KCD jest rozbierany w przeglądarce i nie jedzie nigdzie — dlatego jest natychmiastowy.
Plik jedzie spakowany (od 2026-09-22). Przy pracy przez internet wąskim
gardłem nie jest serwer, tylko łącze w górę: zmierzona wysyłka 6 MB materiału
na serwer produkcyjny trwała 69,6 s (ok. 90 kB/s) i długie wysyłki potrafiły
zerwać się w połowie. Teraz przeglądarka pakuje treść gzipem tuż przed
wysłaniem — GML to XML, więc przez łącze idzie zwykle kilkanaście razy mniej
bajtów, a dziennik pokazuje, ile dokładnie („Pakuję do wysyłki: 5,8 MB →
0,4 MB"). W bazie ląduje plik nietknięty, bajt w bajt. Przeglądarka bez
CompressionStream wysyła materiał surowy, tak jak przedtem.
Szczegóły kroków: Przepływy pracy.
Ograniczenia
- Eksport DXF pomija obiekty urzędowe — do pliku wchodzi wyłącznie rysunek roboczy. Pisarza DWG nie ma.
- Import EGiB jest niepełny — 18 klas jest pomijanych (klasy podmiotowe,
dokumenty,
BlokBudynku,ObrebEwidencyjnyi inne). - Osiem wariantów „nieczynny" wygląda tak samo jak obiekty istniejące; różnica siedzi w danych, nie w rysunku. To dług świadomy.
- Pas ekranu akustycznego (OTKY) i tryb „w skali" nie działają w wydruku ani w eksporcie DXF.
- Znaki powierzchniowe nie mogą iść przez
fill-patternmapy, bo ten kafelkuje w pikselach ekranu, a nie w metrach terenu.
Model danych w grafie FLOW
Model danych mapy zasadniczej żyje w trzech rozłącznych miejscach: schematy aplikacyjne GUGiK (klasy i atrybuty), załącznik nr 4 do rozporządzenia (znaki umowne) i tablice wiążące jedno z drugim.
Znaki umowne (SetBase)
Moduł „Znaki umowne" jest edytorem biblioteki znaków wg załącznika nr 4 do rozporządzenia. Odpowiada za to, jak obiekt zostanie narysowany: definicję znaku, jego walidację i kompilację do warstw mapy.