PlBuildings – wtyczka do importowania budynków w JOSMie

PlBuildings – wtyczka do importowania budynków w JOSMie.

Ponad 2 lata temu opublikowałem pierwszą wersję wtyczki, ale tylko na discordzie (jest tam też stare FAQ). Zapewne większość z Was już to widziała, ale obiecałem sobie, że jak forum zostanie zmigrowane, to warto będzie kolejną wersję wrzucić i tutaj na forum, co właśnie czynię, choć w nieco skromniejszej formie niż to co jest na Discordzie :slight_smile:


PlBuildings to wtyczka, która umożliwia importowanie budynków z danych urzędowych w JOSMie.

Sposób użycia jest dość prosty: należy przesunąć kursor myszy na widoczny budynek i nacisnąć skrót CTRL+SHIFT+1.
Można też zaznaczyć wcześniej istniejący budynek, wtedy zostanie on zaktualizowany (tak aby zachować historię obiektu).

Wtyczka posiada szereg dodatkowych funkcjonalności z którymi zachęcam się zapoznać. Zamieściłem je wraz z szerszym opisem w README na GitHubie.

Wspierane źródła to BDOT i EGiB (zachęcam do zapoznania się niżej z informacjami o wersji v2.0.0/EGiBie, które były publikowane również na discordzie).
Link do strony ze stanem importów EGiBu: EGiB stan obszarów


Mini FAQ (od wersji v1.4.2)

FAQ:

  1. Gdzie zgłaszać błędy?
  • To zależy. Najprościej napisać na Discordzie (na kanale JOSM, albo na pw), ale jak ktoś chce się bawić w issues w repo to też można, choć może być nieco ciężkie do określenia, bo problem może występować w 4 różnych repozytoriach: pluginu, serwera pluginu, serwera egibu, bądź budynków (gugik2osm).
  1. Czy da się importować multipolygony?
  • Nie da się i nie zamierzam tego na ten moment obsługiwać. To komplikuje cały proces importu i przetwarzanie takich danych może powodować mnóstwo problemów, a nie jest takich budynków jakoś dużo.
  1. Podczas aktualizacji budynku wyświetla się błąd przy podmianie geometrii.
  • Podmiana geometrii używa mechanizmu z utilsplugin2. Jeśli na budynku węzły są w jakiś sposób otagowane np. entrance=*, to nie da się takiej geometrii podmienić. Trzeba usunąć najpierw tagi z takich węzłów, bądź odpiąć takie węzły. Inna możliwość błędu, to nie pobranie wcześniej pełnego obszaru do warstwy – obszar musi być w pełni pobrany tak, żeby budynek się w nim całkowicie znajdował.
  1. Czy da się użyć innego źródła danych?
  • TAK – Wraz z wersją v2.0.0 do BDOT dołącza drugie źródło danych EGiB. Jako, że urzędy nie wspierają tego w pełni, to ja również nie gwarantuję tu 100% skuteczności :), ale można powiedzieć, że na ten moment całkiem działa. Wersja v2.0.0 została przepisana w taki sposób, że jeśli ktoś miałby inne swoje źródło danych, to może skonfigurować własny serwer tak, żeby go dodać do tego pluginu.
  1. Budynek się nie ściąga, a widać go na orto/JOSM się na chwile zawiesza i nie wiadomo co się dzieje.
  • Mając otwarty Toggle Dialog (boczny panel), mamy możliwości śledzenia aktualnego statusu importu – widać, czy np. zawiesiło się na pobieraniu danych.
    Możliwości jest parę m.in.: brak danych u źródła (najczęstsza przyczyna), timeout – serwer nie odpowiada, bo jest obciążony (czasem się zdarza i można spróbować po chwili ponownie), serwer od pluginu padł (nie powinno się to wydarzyć – powiadomić mnie :stuck_out_tongue:).
  1. Dlaczego plugin wykorzystuje dodatkowy serwer, zamiast bezpośrednio pobierać ze strony budynków?
  • Z początku faktycznie nie było to potrzebne przy 1 źródle i rzeczywiście tak było. Plugin ściągał ze strony budynków bezpośrednio. Jednak z czasem wyszło, że serwer stanowiący pośrednika może wypaść korzystniej mimo zwiększonego (mało odczuwalnie) czasu odpowiedzi. Pozwoliło to również na dodanie innych źródeł danych w wersji 2.0.0.
  1. Dlaczego budynki są pobierane jako building=house, a nie detached/semidetached_house/terrace itd.?
  • Zarówno BDOT jak i EGiB na ten moment nie określa z jakim typem budynku (z powyższych) mamy do czynienia. BDOT ma te wartości nieco bardziej szczegółowe, w EGiBie niestety jest z tym gorzej (KŚT dla zainteresowanych), dlatego jest pobierana najbliższa możliwa, tak żeby uniknąć błędnych mapowań (niestety w przypadku EGiBu jest to często building=yes).
  1. Czy będzie możliwość pobierania więcej budynków naraz, a nie tylko 1?
  • Na ten moment nie, ale nie wykluczam takiej możliwości w dalekiej przyszłości.

9. Polacy nie gęsi…

  • JOSM wspiera i18n, więc postaram się temu przyjrzeć i jeśli będzie to proste w realizacji, to wersja PL wyjdzie w kolejnej aktualizacji. EDIT. Obsługa wielu języków została dodana w wersji v1.5.0.
  1. Więcej statystyk?
  • Aktualnie są dostępne statystyki indywidualne z poziomu JOSMa. Trochę jako dodatek, bo wiem, że niektórzy lubią takie rzeczy (w tym ja). Jest to przechowywane lokalnie w configu JOSMa, więc dopóki ten plik nie zostanie utracony, to statystyki są zachowane. Robienie tzw. wspólnej TOPki było poruszanym tematem, ale ze względu na łatwość jej sfałszowania (bez odpowiednich bardzo czasochłonnych zabezpieczeń) oraz potencjalnego naruszenia prywatności, po rozmowie z kilkoma osobami na ten temat zrezygnowałem z takiego pomysłu.
  1. W jakim języku zostało to napisane/jakich narzędzi używałeś?
  • Plugin: Java 8/11+ do JOSM (core) oraz pluginu utilsplugin2. Serwer do pluginu: Python, FastAPI, PostgreSQL/PostGIS, Docker.
    Jeśli chodzi o IDE, to do pluginu IntelliJ IDEA, do serwera PyCharm. Do organizacji i rozplanowania zadań wg prostego Kanban – Trello.
  1. Ile czasu zajęło pisanie takiego pluginu.
  • Pierwsza wersja około pół roku. Między wersją 1.8, a 2.0.0 blisko 2 lata. Robione w wolnym czasie + gdy były chęci. Czasowo, samego pisania kodu wg Wakatime (od 1 commita) wyszło ~100h do pierwszej wersji, a pewnie drugie tyle na testowanie, próby zrozumienia działania JOSM (od strony dev) i rzeczy związane z hostowaniem tego na serwerze. Na ten moment (przed wypuszczeniem v2.0.0?) pewnie sporo przebiło 300.
    W międzyczasie udało mi się napisać inny drobny plugin w 2-3 dni, który zajął mi raptem kilka h na wszystko, więc to kwestia skomplikowania i tego co ma dany plugin robić.
  1. Dlaczego repo nie jest w organizacji OSM na GitHubie?
  • A czy to coś zmienia? :stuck_out_tongue:
  1. Dlaczego jest to na licencji GPL, a nie MIT/innej:

Jako, że nie wszyscy korzystają z Discorda oraz również w celu zachowania historii, pozwolę sobie tutaj wrzucić publikację/opisy nowych wersji, a kolejne pewnie będę wrzucał w komentarzach pod tym postem.
Nie trzeba ich wszystkich czytać, choć zajrzenie od tych od 2.0.0 może być przydatne.

Wersja v1.4.2 (publikacja) (2022-07-19)

Plugin plbuildings do importowania budynków z danych BDOT ze strony budynków Tomka.
Umożliwia proste tworzenie i aktualizowanie istniejących budynków (geometria lub/i tagi) – oczywiście z zachowaniem historii edycji.

Opis użycia i funkcjonalności znajduje się w <README.md> na GitHubie (po ang.), ale w skrócie: najechać kursorem (i ew. zaznaczyć) potencjalny budynek i wcisnąć CTRL + SHIFT + 1.
Jeśli komuś skrót nie odpowiada/nie działa (bo się nakładał z innym), to oczywiście JOSM umożliwia jego zmianę (szukać pod “Download building” w ustawieniach skrótów).

Plugin NIE BYŁ i na ten moment NIE JEST tworzony z myślą o masowej wymianie budynków, dlatego Wasz wcześniejszy wypracowany workflow z pobieraniem pliku ze strony budynków w szczególności w przypadku ich braku dla np. całej wsi może być zdecydowanie wydajniejszy. Jest nastawiony na minimalizację dodawania potencjalnych błędów w tym takich, które pobieranie “paczki” i wrzucenie ich do JOSMa może nie zapewniać (choć oczywiście nie zawsze).

Poprawiłem nim/wymieniłem wszystkie budynki w swojej gminie (12k+) i było to dla mnie mega wygodne. Sprawdza się również świetnie “przy okazji” np. import adresów i do tego uzupełnianie/poprawianie okolicznych budynków.

Opis na GitHubie: GitHub - praszuk/josm-plbuildings-plugin: PlBuildings plugin for JOSM editor.

Wersja v1.5.0 (2022-07-28)

Aktualizacja pluginu plbuildings (v1.5.0):

  • Dodałem wielojęzyczność (FAQ #9) w tym zostały niektóre napisy zaktualizowane.
  • Dodałem pomijanie okna konfliktu dla zmiany z building=residential na house, apartments, detached, semidetached_house, terrace.
  • Zaktualizowałem README na GitHubie o ten ficzer z tłumaczeniami oraz screenshota statystyk.
Wersja v1.6.0 (2022-07-31)

Aktualizacja pluginu plbuildings (v1.6.0):

  • Dodałem wstępne sprawdzanie tagów podmienianego budynku. W przypadku znalezienia wartości “survey” wyświetli się odpowiednia informacja z pytaniem o kontynuację importu.
  • Dodałem sprawdzanie tagów po imporcie budynku. Sprawdzane są “nietypowe” tagi. Również wyświetli się odpowiednia informacja zachęcająca do weryfikacji/uszczegółowienia obiektu np. church/fire_station/hospital (listę oczywiście możemy zmienić, jak uznacie inaczej).
  • Zaktualizowałem README na GitHubie o te funkcjonalności.
Wersja v1.7.0 (2022-08-19)

Aktualizacja pluginu plbuildings (v1.7.0):

Główne zmiany:

  • Dodałem 2 dodatkowe wstępne sprawdzanie tagów podmienianego budynku:
    • W przypadku gdy wartość budynku może zostać zubożona (np. detachedhouse) zostanie bardziej szczegółowa wartość bez konfliktu (w tym przypadku detached).
    • W przypadku gdy nowe building:levels == aktualne: building:levels + roof:levels, to wtedy nie jest aktualizowane (na to nowe) i również nie wywoła to konfliktu tagów.

Reszta:

  • Poprawiłem losowe niepowodzenia testów.
  • Zaktualizowałem README na GitHubie o te funkcjonalności.
  • Zaktualizowałem plugin-link w meta danych, tak żeby w opisie pluginu wyświetlał się link do repo na GitHubie.
  • Zaktualizowałem wersję kompilacji (JOSM) do najnowszej: 18531.
  • Zaktualizowałem minimalną wspieraną wersję do 17856 (wersja z 2021-05-02).
Wersja v1.8.0 (2022-09-11)

Aktualizacja pluginu plbuildings (v1.8.0):

Główne zmiany:

  • Dodałem statusy, które są zmieniane zależnie od stanu importu.
  • Dodałem boczny panel GUI (Toggle Dialog), który wyświetla: aktualny status, źródło danych (aktualnie tylko “BDOT”), ostatnie tagi i informacje o specyficznych tagach.
  • Dodałem (prowizoryczną) ikonkę dla pluginu (z powodu GUI).
  • Przepisałem i zaktualizowałem (post-check) wykrywanie “specyficznych tagów” – teraz tagi wyświetlają się w okienku dialogowym.
  • Naprawiłem zawieszanie się całego JOSMa podczas importu.

Reszta:

  • Zaktualizowałem i dostosowałem tłumaczenia.
  • Zaktualizowałem wersję kompilacji (JOSM) do najnowszej: 18543.
  • Zaktualizowałem README o nowe funkcjonalności, zaktualizowany diagram i nowego GIFa GUI.
  • Naprawiłem “action names” (pozwala to zbindować daną akcję do toolbara, ale nie jest to jeszcze idealne).
  • Przepisałem sporo kodu (usunięte zbędne rzeczy, nowe enumy/modele/klasy na stałe dane itp.).
  • Usunąłem redundantny plik tłumaczenia (.mo).
Wersja v2.0.0 (2024-09-21)

Trwało to trochę czasu (2 lata :sweat_smile:), ale w końcu nadszedł moment w którym mogę opublikować plbuildings w wersji 2.0.0!

Dla nowych użytkowników – PlBuildings to wtyczka, która umożliwia importowanie budynków z danych urzędowych w JOSMie za pomocą prostego kliknięcia.
Tutaj pierwotny post wraz z FAQ: Discord
Po więcej info zapraszam do zapoznania się z README.md na GitHubie (są obrazki/gify).

Co nowego:

  1. Nowe tryby importów: Pełny, Geometria, Tagi.
    Od teraz można wybrać, czy chcemy aktualizować w pełni budynek, czy podmieniać tylko kształt lub aktualizować tagi.

  2. Możliwości konfiguracji wielu serwerów i profili (brzmi tajemniczo).

W skrócie profile to różne źródła danych.
Tak, oprócz BDOTa zawita wyczekiwany przez niektórych EGIB (bardziej w becie, o tym niżej). Plugin umożliwia korzystanie ze źródeł wymiennie, bądź łączenia obu naraz.
Np. można wybrać taki profil, który łączy: 1 dla tagów, a 2 dla geometrii, co może skutkować dodawaniem danych w lepszej jakości.

  1. Ustawienia powiadomień – można wyłączać/włączać co ma się wyświetlać.

  2. Możliwość konfiguracji (nie)typowych tagów.

  3. Trochę sprzątania: Automatyczne dodanie odpowiednich tagów source:building oraz source:geometry (tylko gdy jest to potrzebne) – w tym automatyczne usuwanie source=geoportal.gov.pl.

  4. Nowa statystka z podmianą geometrii w oknie statystyk.

  5. Nowy algorytm detekcji duplikatów budynków.

  6. Ujednolicenie skrótów/akcji/nazw jeśli chodzi o ustawienia.

Pierwsze uruchomienie:
Po aktualizacji do 2.0.0 może się zdarzyć tak, że jak ktoś miał niestandardowy skrót (zamiast ctrl+shift+1), to będzie musiał wejść w ustawienia i go ponownie zmienić, bo utworzy się duplikat. Można to znaleźć w ustawieniach skrótów wpisując plbuildings – będzie pod nazwą Download building lub odpowiednio Pobierz budynek.

No i na koniec chciałbym bardzo podziękować głównemu testerowi pluginu, czyli oczywiście @syntex, który w trakcie testów znalazł kilka krytycznych błędów oraz wyłapał kilka innych rzeczy, które mogłem poprawić/usprawnić przed publikacją, mimo, że sam ich nie doświadczyłem :smile:

Dodatek do v2.0.0 o serwerze EGiB (2024-09-21)

Na razie jest w becie (i pozostanie w niej pewnie dłuższy czas), ponieważ na start nie obsługuję wszystkich możliwych powiatów – to po prostu niemożliwe oraz wymaga więcej czasu :stuck_out_tongue:

Na ten moment w liczbach obsługuję jakieś ~230/380 powiatów. Jeśli czyjś powiat nie jest obsługiwany, to może do mnie napisać na PW i o ile dany powiat ma usługę WFSa i nie jest to Webewid :roll_eyes: (czyli wykluczam jakieś jawnie zdefiniowane ~60 powiatów), to mogę spróbować go dodać.

Na ten moment dodawałem tylko te, które dało się dodać “masowo” np. Epodgik, geoportal2 itp. + niestandardowe dla kilku większych miast tj. Warszawa, Wrocław (kilka innych jest “w standardzie”).

O wektoryzacji EGiBu słyszymy już od dawna, ale nadal idzie im to “tak sobie”, dlatego nie ma co się nastawiać na złoto. Część urzędów wprowadza własne standardy ignorując wytyczne rozporządzenia (choćby typowo Warszawa – wszystko po swojemu), część daje niepełne atrybuty np. tylko typ budynku bez innych danych, a niektóre nawet i tego nie dają – sama geometria.

Urzędy pomimo aktywnego WFSa mają bardzo spore braki w danych np. na cały powiat tylko 1 mała wieś ma zwektoryzowane budynki.

Samo rozporządzenie, które narzuca standard mocno ogranicza możliwość mapowania wartości budynków na tagi OSM, więc należy się liczyć z tym, że większość budynków ze EGIBu to, będzie building=yes, bo KST jest dla nas niestety dość nieprzydatny – dlatego polecam łączenie z BDOTem na ile to możliwe :slight_smile:

Wersja v2.1.0 (2024-12-19)

Aktualizacja pluginu PlBuildings v2.1.0!

Zmiany to głównie zgłoszenia od Was i inne drobne usprawnienia i poprawa błędów:

  • dodano domyślną blocklistę tagów dla zaznaczenia – nie da się już zaktualizować obiektu, który ma niepoprawny tag np.: landuse, boundary, czy highway oraz obiekt nie jest zamkniętą linią.
  • dodano możliwość ustawienia domyślnej strategii w przypadku braku danych z jednego źródła + możliwość zapamiętania tego dla bieżącej sesji (tak żeby zawsze nadal pytało za pierwszym razem) – rekomendowane. W przypadku ręcznych zmian ustawień, zachęcam do przywrócenia opcji *ASK_USER * w ustawieniach pluginu.
  • rozszerzono automatyczne czyszczenie tagu source o wartość Bing
  • dodano możliwość zapamiętania wyboru w bieżącej sesji dla strategii, gdy budynki nie pokrywają się wystarczająco
  • poprawa zbyt długiego przetwarzania (w nieskończoność?), gdy brakuje 1 źródła budynku
  • dodano pokazywanie powiadomienia w przypadku użycia domyślnej strategii z ustawień/bądź wyboru z sesji dla brakującego źródła danych
  • dodano pokazywanie powiadomienia w przypadku użycia wyboru z sesji dla niewystarczająco pokrywających się budynków
  • dodano pokazywanie powiadomienia w przypadku braku wybranego źródła danych
  • drobna optymalizacja algorytmu mierzącego pokrywanie się budynków
  • zapobieganie zaimportowania budynku poza widokiem użytkownika
  • przepisanie ustawień powiadomień – pojawiło się ich więcej odnośnie powyższych strategii oraz są inaczej zgrupowane
  • zaktualizowano wersję kompilacji dla JOSM
  • zaktualizowane README.md (korekty i nowe zrzuty ekranu ustawień)

Zachęcam do aktualizacji :slight_smile:

Aktualizacja serwera z danymi EGiB (2024-12-19)

Aktualizacja serwera z danymi EGiB!

Dziś w nocy wdrożyłem nową wersję serwera nad którą spędziłem ostatnie ~2-3 miesiące :sweat_smile:

Serwer został przepisany, żeby przejść z trybu serwowania danych live na tryb offline (względem serwerów urzędowych).
Dzięki temu liczba obsługiwanych obszarów wzrosła z 232/246 powiatów i 1/1 gminy do 375/380 powiatów i 5/5 gmin!

Tryb offline przekłada się również na wzrost szybkość importu pluginem, co niektórzy mogli już odczuć :slight_smile:
Import BDOT + EGiB może być delikatnie odczuwalnie szybciej, ale sam EGiB powinien być już drastycznie szybciej.
Różnica to jakieś 350-380 ms → 40-60 ms (testując lokalnie).

Importy na razie planuję na wtorek i piątek godzinę 14:00. Powinny trwać ok ~1.5h, import nie powinien wpływać na dostępność jeśli chodzi o mapowanie, ew. aktualizacja konkretnego powiatu może go zawiesić na ~20-30 sekund.

EGiB stan obszarów


5 wykluczonych powiatów na ten moment z importów to: miasto Poznań, miasto Żory, powiat średzki (wlkp), powiat ostrzeszowski i powiat kościański.
Te powiaty mają niedostosowane/niedziałające serwery WFS – na ten moment nie nadają się do importowania lub obsłużenie wymaga zbyt dużego wysiłku.

Część serwerów urzędów jest niestety niestabilna, co będzie się objawiać niepomyślnymi importami danych. Część ma słabo zwektoryzowane dane. Jest 1 powiat, który zwraca brak danych przez cały czas (staszowski). Inna kwestia, że urzędy lubią zmieniać firmy, które świadczą usługi związane z EGiBem (monitoruję na bieżąco botem i aktualizuję w miarę możliwości).
Jak zauważycie, że powiat nie importuje się prawidłowo przez np. kilka tygodni, lub/i jakiś problem z danymi – śmiało mi to zgłaszajcie.

Na ten moment zaimportowane jest ok. 17.2 mln budynków.

9 Likes

Super, bardzo przydatna wtyczka. Przetestowałem i na pewno będę używał.

1 Like

Jeszcze raz dzięki za tę wtyczkę, zmieniła moje życie! :wink:

Jeżeli można, chciałbym poprosić o rozszerzenie również o wartość Yahoo przy następnej aktualizacji.

1 Like

Pomyślałem też o tym, by wprowadzić automatyczne (bez pytania użytkownika) zastępowanie building=construction przy imporcie z EGiB na nową wartość - tak, by nie trzeba było tego klikać ręcznie, jeżeli wcześniej ktoś importował ten budynek (lub całe budowane osiedle) np. z BDOT.

Jeżeli byś zdecydował się na taką poprawkę, to również ma sens automatyczne usuwanie klucza construction=* w takim wypadku.

Jestem też ciekaw, co o tym sądzą pozostali mapujący.

Mam dodane “w planach” od dłuższego czasu, ale jest z tym trochę więcej problemów, więc póki co się za to jeszcze nie zabierałem :wink:

1 Like

Pozwolę sobie na przeklejenie mojej wypowiedzi z Discorda dla potomnych.

Ktoś dodając liczbę kondygnacji w SC też może się pomylić w wyniku zwykłego błędu lub niewiedzy jak w OSM liczy się kondygnacje. Problem może mocniej występować przy bardziej fikuśnych konstrukcjach. Pl:Key:building:levels - OpenStreetMap Wiki

Ta wtyczka i tak już odwala kawał roboty a import danych na serwer dał jej potężnego kopa w używalności. W dyskusji na forum PlBuildings – wtyczka do importowania budynków w JOSMie - #4 by czebureks poruszono też zagadnienie automatycznego zastępowania building=construction Widziałem parę budynków przeważnie wieczorem lub w nocy i będąc na miejscu ciężko określić czy on jest construction czy już gotowy nie mówiąc o tym że często patrzy się tylko na orto a to bardzo kusi klepnąć głupotę. Może być i dzień ale odległość, dostępność czy inne przeszkody utrudniają weryfikację. Podobnie z adresami. Te nowsze są dość wiarygodne w niektórych miejscach. Są jednak miejsca bardzo skomplikowane.

Przeglądałem ostatnio czyjąś edycję i podkusiło mnie zadzwonić do pewnej firmy. Po rozmowie okazało się że adres budynku w OSM już nieaktualny (prawdopodobnie kiedyś był). Adres w naniesionym węźle restauracji na budynek inny ale też zły. Strona firmy posiada stary adres czyli dane na stronie www czy fejsie nie są wyznacznikiem poprawności adresu. Podkład punktów adresowych wskazywał poprawny adres ale na granicy działki i w pobliżu jeszcze był punkt adresowy z importu. Ten importowany punkt adresowy akurat jest w miarę poprawny poza dokładnością lokalizacji


ale widziałem inne takie adresy importu tej samej osoby i w wielu miejscach są błędne lub błędnie zastosowane do jakiegoś budynku. Korzystanie z wszelkich widoków z ulicy tez nie jest 100% a przy adresach (numerach adresowych) bywa że i tak nie widać tabliczki lub jest nieaktualna.
W skrócie. Zbyt duża automatyzacja ułatwia bezwiedne klikanie jak leci bo fajnie idzie. Można by niby zostawić użytkownikowi wybór ustawień ale pewne ustawienia powinny się zawsze resetować przy ponownym uruchomieniu bo czasami ktoś ma faktycznie dobrą weryfikację, informacje ale przy kolejnych większych hurtowych o szerszym spektrum działaniach klepnie się co popadnie. Gdy zrobi się parę budynków (często porozrzucanych, dróg to tracimy czujność i zaczynamy klepać rutynowo. (edytowane)

W niektórych miejscach podkładem ulic można się podetrzeć i pokaleczyć.

1 Like