You are not logged in.

#1 2021-10-21 12:20:44

bartess
Member
Registered: 2013-12-06
Posts: 46

Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Jak w temacie.
Rozwijając temat - dlaczego nie da się rysować kółek, łuków krzywych, tylko jakiejś mniej lub bardziej kanciasty szereg połączonych odcinków? Przecież świat to nie Minecraft wink.
Rysowanie i odzworowanie łuków, jak np. w Corel Draw, to chyba nie jakiś mega problem. Spotkałem się z tym nawet w darmowym programie do tworzenia map dla biegów na orientację Openorienteering Mapper i działa to tam całkiem dobrze.

Zamiast robić okrąg składający się np. z 20 punktów, by nie wyglądał jak koło z samochodu Flintstonów, łatwiej chyba by było opisać taki okrąg poprzez podanie 3 parametrów: koordynat jego środka i średnicy. Opisanie wzorem łuku też nie powinno być problemem, a pewnie też ładniej by to wyglądało.

W czym więc tkwi problem?
Wiem, wiem, pierwotnie tak się rysowało, ale idąc z duchem czasu i możliwościami sprzętu chyba dałoby się dołożyć krzywe bez większej dramaturgii(?)

Offline

#2 2021-10-21 12:33:12

Mateusz Konieczny
Member
Registered: 2013-09-22
Posts: 2,353

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

bez większej dramaturgii(?)

To nie takie proste.

Trzeba by dorobić wsparcie w wszystkich edytorach i wszystkim co importuje dane (chociaż jakiś krok pośredni)

Dorobienie osobnego typu dla obszarów byłoby prostsze a i tak jest to na tyle trudne że nikt nad tym nie pracuje

Offline

#3 2021-10-21 13:00:26

RicoElectrico
Moderator
From: Trójmiasto
Registered: 2012-07-01
Posts: 1,777

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Łamane to najmniejszy wspólny mianownik systemów GIS. Nie tylko OSM nie używa łuków, nie używają go też nasze rządowe mapy jak BDOT.

Ale masz rację w takim sensie, że samo rysowanie łuków mogłoby być ułatwione w edytorach.

Offline

#4 2021-10-21 13:13:08

kocio
Administrator
From: Warszawa
Registered: 2013-09-04
Posts: 3,482
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

W JOSM można zrobić kółko osobną funkcją, a łuk to pewnie przez rozcięcie go.

Offline

#5 2021-10-21 13:24:15

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

kocio wrote:

W JOSM można zrobić kółko osobną funkcją, a łuk to pewnie przez rozcięcie go.

Dałoby się, ale w wijącego  się strumienia już nie zrobisz.

Offline

#6 2021-10-21 13:26:05

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

RicoElectrico wrote:

Ale masz rację w takim sensie, że samo rysowanie łuków mogłoby być ułatwione w edytorach.

Skoro nie można tego wprowadzić jako elementu mapy, to na pewno wygodniejsze by było, gdyby w edytorze, w momencie tworzenia nowej linii/figury były dostępne narzędzia obsługujące krzywe. Po zakończeniu tworzenia obiektu byłby on szatkowany na odcinki, by było to zgodne z obsługiwanym formatem.
Ewentualnie taki obiekt miałby zapisany jakiś tag, parametr czy cuś, co pozwoliłoby takim edytorom rozpoznać, że to je krzywa i po ponownym otwarciu do edycji odpowiednio to zinterpretować.
Chyba nie powinno z tym być problemu, skoro w OSM są zaszyte dane o kształcie dachu czy materiale:
roof:colour=green
roof:material=metal
roof:shape=gabled
Gdyby ktoś przeedytował taki pokrzywiony obiekt w edytorze nieobsługującym tych krzywych, to takie dane (te o krzywych) musiałyby być kasowane, bo przestałyby odpowiadać zmianom dokonanym na nie-krzywych.

Offline

#7 2021-10-21 20:26:27

Marek_P
Member
From: Wrocław
Registered: 2018-06-13
Posts: 36
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Praca na wielokątach jest dużo prostsza (czytaj szybsza) niż na takich z łukami. Zważ, że każdy taki łuk trzeba by przeliczyć przy wszelkich pomiarach długości, pola itp. Nakładając na to, że w takim przypadku zaczynają  się pojawiać liczby niewymierne, z pi na czele, to nagle może się okazać, że z tych samych danych dostajesz różne wyniki i wszystkie są prawidłowe.

Mówiąc krótko – wielokąty może nie są tak eleganckie, ale dużo szybsze w obsłudze i jednoznaczne.

Offline

#8 2021-10-21 21:48:57

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Marek_P wrote:

Praca na wielokątach jest dużo prostsza (czytaj szybsza) niż na takich z łukami. Zważ, że każdy taki łuk trzeba by przeliczyć (...)

Wbrew pozorom grafika wektorowa nie opiera się na jakichś mega skomplikowanych obliczeniach, z którymi nie poradzi sobie obecny hardware. Odwzorowywana jest w niezbyt skomplikowany sposób. Skoro radzi sobie z budynkami 3D, to z łukami i krzywymi tym bardziej. Znasz format SVG?
Wejdź sobie na stronę, z menu wybierz Viev \ Source..., kilka linijek kodu zastąp poniższym kodem i kliknij Apply Changes.

Nic skomplikowanego.


<svg width="800" height="600" xmlns="http://www.w3.org/2000/svg">
 <g id="Layer_1">
  <title>Layer 1</title>
  <ellipse ry="53" rx="110" id="svg_3" cy="113" cx="636" stroke="#000" fill="#fff"/>
  <path fill="#fff" stroke="#000" opacity="NaN" d="m349,153c0,0 26,-23 52,0c26,23 94,38 75,106c-19,68 -5,139 -101,111c-96,-28 -289,-172 -158,-21c131,151 181,199 89,190c-92,-9 -130,-40 -134,-127c-4,-87 -95,-212 -8,-161c87,51 123,77 140,34c17,-43 -69,-117 -69,-117c0,0 -44,-42 10,-28c54,14 104,13 104,13z" id="svg_1"/>
  <path id="svg_2" d="m558.19992,397.69795l53.47562,0l16.52438,-60.3508l16.52439,60.3508l53.47562,0l-43.26261,37.29842l16.52523,60.3508l-43.26263,-37.29943l-43.26262,37.29943l16.52524,-60.3508l-43.26262,-37.29842z" stroke="#000" fill="#B8D078"/>
 </g>

</svg>

Last edited by bartess (2021-10-21 21:50:51)

Offline

#9 2021-10-22 02:40:07

kocio
Administrator
From: Warszawa
Registered: 2013-09-04
Posts: 3,482
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:
kocio wrote:

W JOSM można zrobić kółko osobną funkcją, a łuk to pewnie przez rozcięcie go.

Dałoby się, ale w wijącego  się strumienia już nie zrobisz.

No pewnie, ale wijący się strumień nie jest jednak regularny, a nie każdy zaokrąglony kształt nawet jak jest opisany jakimś prostym wzorem, to od razu koło (np. funkcja kwadratowa). Myślałem głównie o budynkach w tym kontekście.

Offline

#10 2021-10-22 05:51:19

Marek_P
Member
From: Wrocław
Registered: 2018-06-13
Posts: 36
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

Wbrew pozorom grafika wektorowa nie opiera się na jakichś mega skomplikowanych obliczeniach, z którymi nie poradzi sobie obecny hardware. Odwzorowywana jest w niezbyt skomplikowany sposób. Skoro radzi sobie z budynkami 3D, to z łukami i krzywymi tym bardziej. Znasz format SVG?
Wejdź sobie na stronę, z menu wybierz Viev \ Source..., kilka linijek kodu zastąp poniższym kodem i kliknij Apply Changes.

Nic skomplikowanego.

Oczywiście, samo wykreślenie tego nie jest problemem, czego dowodem są właśnie programy i formaty czysto graficzne.
Ja, wyhodowany jeszcze pod koniec czasów kartografii tradycyjnej (ręcznej), też długo nie mogłem się pogodzić z takim podejściem. Niemniej jednak w GIS się krzywych nie stosuje, a przestrzenne bazy danych, takie jak Postgres, czy MariaDB też ich nie obsługują. Jakiś istotny powód tego musi być.

Offline

#11 2021-10-22 07:24:08

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

kocio wrote:

No pewnie, ale wijący się strumień nie jest jednak regularny, a nie każdy zaokrąglony kształt nawet jak jest opisany jakimś prostym wzorem, to od razu koło (np. funkcja kwadratowa). Myślałem głównie o budynkach w tym kontekście.

Rzuć okiem na przykład svg, jaki wrzuciłem? Tam nie ma żadnych wzorów kwadratowych, czy wyższych stopni. Czy jest to łuk, czy wężyk, jak ~, to jest to do narysowania 2 punktami i informacją o zakrzywieniu łuku/wężyka. Bardziej skomplikowana krzywa jest podzielona na punkty dzielące ją na łuki/wężyki, jak w zdaniu wcześniej.

Marek_P wrote:

Oczywiście, samo wykreślenie tego nie jest problemem, czego dowodem są właśnie programy i formaty czysto graficzne.
Ja, wyhodowany jeszcze pod koniec czasów kartografii tradycyjnej (ręcznej), też długo nie mogłem się pogodzić z takim podejściem. Niemniej jednak w GIS się krzywych nie stosuje, a przestrzenne bazy danych, takie jak Postgres, czy MariaDB też ich nie obsługują.

Tylko co tu trzeba specjalnego w bazie danych? Zamiast rysowania łuku, który żeby ładnie wyglądał, trzeba zapisać jako zbiór 55 punktów (sprawdziłem łuk jednej drogi w okolicy), wystarczyłoby tyle: <path id="svg_1" d="m320,130c150,2 107,84 70,124"/>. Proste, prawda?
Baza danych nie ma tu znaczenia, niczego specjalnego do obsługi tego nie trzeba, wszak te dane to zwykłe liczby. Informacje o 3D budynków są zapisywane, a interpretery nie mają problemów z ich wyświetlaniem.

Marek_P wrote:

Jakiś istotny powód tego musi być.

Otóż to. Po prostu dociekliwy jestem smile. Na tym chyba można by zakończyć dyskusję.
Miłego dnia smile.

Offline

#12 2021-10-22 09:37:31

Marek_P
Member
From: Wrocław
Registered: 2018-06-13
Posts: 36
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Jedno mi jeszcze do głowy przyszło – wyszukiwanie przestrzenne w zadanym obszarze. Przy wielokątach baza analizuje punkty znajdujące się w zadanym terenie, a przy krzywych musiałaby całą bazę orać, czy przypadkiem coś z punktami kontrolnymi spoza niego się nie wygnie w interesujący nas zasięg.
Spróbuję się jednak wywiedzieć od fachowców, czy poza względami historycznymi coś więcej na przeszkodzie stoi. Temat ciekawy smile

Offline

#13 2021-10-22 10:55:11

RicoElectrico
Moderator
From: Trójmiasto
Registered: 2012-07-01
Posts: 1,777

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Dodatkowo - operacje na geometrii (testowanie relacji przestrzennych jak przecinanie, zawieranie, stykanie; generowanie unii i różnicy; przycinanie geometrii) są wystarczająco trudne już na łamanych - z powodu przypadków brzegowych. To wbrew pozorom robota na doktorat smile i większość używa gotowych bibliotek jak GEOS.

Offline

#14 2021-10-22 11:51:27

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Marek_P wrote:

baza analizuje

tak dla ścisłości - baza niczego nie analizuje, jest tylko magazynem danych :-).

Marek_P wrote:

czy przypadkiem coś z punktami kontrolnymi spoza niego się nie wygnie w interesujący nas zasięg.

no ale teraz obiekty 3D zawierają informacje o np. okręgach.
Select mógłby wyciągać z bazy dane np. z jakimś tam marginesem.
Poza tym mnie bardziej chodzi o przechowywanie danych o krzywych przydatnych(ułatwiających) w edycji, jako dodatkowe tagi, a same krzywe podczas zapisu zmian dokonywanych, w edytorze obsługującym krzywe, zamieniane by były na ciąg odcinków połączonych punktami, tak, by było to zgodne ze starszymi wersjami (Tak jak OSM nie wyświetla domów 3D, tylko robi to np. https://demo.f4map.com/

Marek_P wrote:

Spróbuję się jednak wywiedzieć od fachowców, czy poza względami historycznymi coś więcej na przeszkodzie stoi. Temat ciekawy smile

Byłoby super! Też dla mnie jest to ciekawe zagadnienie, dlatego tak go drążę, poziom czepialstwa = 0, ciekawość = 10 big_smile.

RicoElectrico wrote:

(...)i większość używa gotowych bibliotek jak GEOS.

i pewnie 90% użytkowników to wystarcza i jest zadowolona, dopóki nie przylezie taki jak ja i zacznie drążyć big_smile.

Last edited by bartess (2021-10-22 11:53:54)

Offline

#15 2021-10-22 22:23:44

rmikke
Moderator
From: Warszawa
Registered: 2014-11-14
Posts: 1,864
Website

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

Moim zdaniem występujące w naturze krzywe na tyle mają w nosie prostotę geometryczną, że przy rysowaniu mapy łukami albo będzie tak jak w terenie, albo szybciej niż narysować łamaną. Bo żeby się dobrze dopasować do tego, co w terenie trzeba będzie zrobić tyle łuków, że już szybciej będzie tę łamaną punkt po punkcie wyklikać.

Offline

#16 2021-10-22 22:41:38

Rogoyski
Member
Registered: 2014-12-15
Posts: 267

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

tak dla ścisłości - baza niczego nie analizuje, jest tylko magazynem danych :-).

Bazy normalnie umożliwiają wykonywanie zapytań do danych, a więc akurat całkiem legalne wydaje mi się stwierdzenie, że analizują dane, by zwrócić oczekiwane wyniki.

bartess wrote:

Tylko co tu trzeba specjalnego w bazie danych? Zamiast rysowania łuku, który żeby ładnie wyglądał, trzeba zapisać jako zbiór 55 punktów (sprawdziłem łuk jednej drogi w okolicy), wystarczyłoby tyle: <path id="svg_1" d="m320,130c150,2 107,84 70,124"/>. Proste, prawda?

Jak wyżej: jeśli bazę danych rozumiesz jako plik, który tylko przechowuje dane, a to właśnie wynika trochę z Twoich wypowiedzi, to może i tak. W praktyce jednak w bazach danych chodzi o coś więcej, np. o umożliwienie analizy i przetwarzania tych danych. W przypadku danych geograficznych kluczowe są operacje przestrzenne, o których pisali Marek i Rico. Obsługa krzywych znacząco zwiększa złożoność oprogramowania i zmniejsza jego wydajność, a w wielu przypadkach okazuje się, że nie daje istotnych korzyści - liczą się przede wszystkim wnioski z analizy i okazuje się, że aproksymacja kształtów za pomocą łamanych jest zupełnie wystarczająca. Niektóre narzędzia zdają się - po pobieżnym sprawdzeniu - wspierać krzywe: PostGIS łuki, ArcGIS nawet krzywe Beziera. Ale akurat od OSM trudno by tego oczekiwać, skoro wiele bardziej podstawowych spraw w modelu danych ma rozwiązane inaczej niż 90% zbliżonych baz big_smile

bartess wrote:

no ale teraz obiekty 3D zawierają informacje o np. okręgach.

Gdzie zawierają? Jeśli mówisz o kształtach dachów, to przecież w OSM zapisana jest tylko nazwa tego kształtu (możliwe, że nie rozumiem wywodu).

Offline

#17 2021-10-23 01:12:42

maro21
Member
From: Wrocław
Registered: 2018-03-06
Posts: 872

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

opisać taki okrąg poprzez podanie 3 parametrów: koordynat jego środka i średnicy

Może edytory tak robią, ale dane w bazie OSM to lista punktów. A te punkty (krzywe) łączą się z innymi punktami i liniami, więc tak się nie da. Jak połączysz krzywą opisaną w podany przez ciebie sposób z inną krzywą w danym punkcie?

bartess wrote:

Zamiast robić okrąg składający się np. z 20 punktów

Dwudziestokąt foremny to dobre przybliżenie okręgu w życiu codziennym, na mapie nie zobaczysz różnicy.

bartess wrote:

Informacje o 3D budynków są zapisywane, a interpretery nie mają problemów z ich wyświetlaniem

Renderery 3D różnie interpretują kształty dachów. A punkt na mapie ma konkretne współrzędne.

Offline

#18 2021-10-23 19:10:31

cytryn
Member
Registered: 2021-08-08
Posts: 74

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

Skoro nie można tego wprowadzić jako elementu mapy, to na pewno wygodniejsze by było, gdyby w edytorze, w momencie tworzenia nowej linii/figury były dostępne narzędzia obsługujące krzywe. Po zakończeniu tworzenia obiektu byłby on szatkowany na odcinki, by było to zgodne z obsługiwanym formatem.

Zdaje się, że tego Ci trzeba: wink
https://wiki.openstreetmap.org/wiki/JOS … awing-tool
https://wiki.openstreetmap.org/wiki/JOS … ns/Splinex

Offline

#19 2021-10-24 09:24:38

bartess
Member
Registered: 2013-12-06
Posts: 46

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

maro21 wrote:
bartess wrote:

opisać taki okrąg poprzez podanie 3 parametrów: koordynat jego środka i średnicy

Może edytory tak robią, ale dane w bazie OSM to lista punktów.

No i wszystko jasne. Dziękuję.

Fajne! tylko jak je doinstalować? Bo pod F12 na liście ich nie mam.

Dziękuję Kolegom za wyrozumiałość dla upierdliwca i cierpliwość w tłumaczeniu smile.

Last edited by bartess (2021-10-24 09:39:15)

Offline

#20 2021-10-24 13:37:18

maro21
Member
From: Wrocław
Registered: 2018-03-06
Posts: 872

Re: Głupie pytanie: Dlaczego OSM nie rysuje łuków?

bartess wrote:

dla upierdliwca i cierpliwość w tłumaczeniu

Nie ma głupich pytań, mogłoby być więcej takich dyskusji.

Umożliwienie zapisywania łuków wg podanego przez ciebie schematu (<path id="svg_1" d="m320,130c150,2 107,84 70,124"/>) wymagałoby zmiany modelu danych OSM, czyli przeprowadzenia rewolucji. Aż takiej dokładności jak w grafikach wektorowych nie potrzeba, bo mapa też jest tylko uproszczeniem rzeczywistości, a nie modelem 1:x. Poza tym takie gładkie łuki byłoby widać tylko na bardzo wysokich zoomach, jeśli w ogóle ktoś widziałby różnicę. Dla zwiększenia dokładności krzywych, można po prostu narysować więcej punktów.

Offline

Board footer

Powered by FluxBB