You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2016-02-28 07:48:37

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Renderowanie - prośba o pomoc

Witam wszystkich serdecznie,
Od pewnego czasu pracuję nad mapą szlaków turystycznych. Używam w tym celu Tilemilla z bazą postgis. Wszystko działa w miarę poprawnie jednak nie mogę poradzić sobie z jedną rzeczą i czuję, że jest to nie do przeskoczenia w Tilemillu. Chodzi mianowicie o renderowanie szlaków, które są odsunięte od drogi. W przypadku jednego czy dwóch szlaków na jednej ścieżce jest jeszcze w miarę ok natomiast przy trzech i więcej zaczyna to beznadziejnie wyglądać...
Oto przykład:

http://pomorskieszlaki.pl/#16/53.7066/1 … piesze-ddr

Chodzi konkretnie o to miejsce gdzie 5 szlaków skręca z południa na zachód.
Tworzą się artefakty, kropki nachodzą na siebie i bardzo kiepsko to wygląda.

Cenię sobie Tilemilla jednak nie posiada on takiej opcji, którą znalazłem. Chodzi mi o funkcję "parallel curve'. Polega ona na tym, że linie odsunięte od drogi nie tworzą takich jakby pętli na zagięciach się linii.

Widać to np. na poniższym rysunku.

http://projects.haskell.org/diagrams/do … 6c7ecc.png

Linie odsunięte (niebieska) zachodzą na siebie a mi chodzi o to aby w miejscu ich przecięcia połączyły się i nie tworzyły przedłużeń.
Nie bardzo wiem, gdzie tego szukać, może ktoś z was, z większą wiedzą jest w stanie mi coś doradzić?
Tu jeszcze inny przykłąd offsetu

http://cs.smith.edu/~orourke/MathOverfl … Offset.jpg

Jak widać w tej pętelce po lewej, wypełnienie jest wygenerowane poprawnie i nie próbuje się na siłę połączyć z oryginalną linią i nie tworzy przecięć i przedłużeń.

Z góry serdecznie dziękuję za wypowiedzi i jakąkolwiek pomoc.
Pozdrawiam! smile

Offline

#2 2016-02-28 17:33:06

balrog-kun
Member
From: Warsaw, Poland
Registered: 2008-08-10
Posts: 1,365
Website

Re: Renderowanie - prośba o pomoc

Nie korzystalem z tilemilla, ale jesli mozesz w nim zmienic postac zapytania sqlowego, to w tym zapytaniu mozesz polaczyc te segmenty drog za pomoca ST_Union i GROUP BY.  Wyraznie z jakiegos powodu postgis albo tilemill podzielil linie na jak najmniejsze segmenty i od kazdej tworzy oddzielny rownolegly segment.

Offline

#3 2016-02-28 19:01:17

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

balrog-kun dziękuję za odpowiedź. Dzieli je na mniejsze fragmenty ze względu na konwersję relacji na drogi. Robię to za pomocą skryptu. Dzięki temu jeśli na danej drodze występuje np. 5 szlaków to do każdego osobno dodawana jest kolejna cyferka - dodatkowy tag. Dzięki temu w tilemillu mogę później ustawić inną odległość offsetu dla każdej cyferki.

Offline

#4 2016-02-28 19:36:38

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Właśnie się zastanawiam, czy mogę w tilemillu zastosować tą funkcję:

http://postgis.net/docs/ST_OffsetCurve.html

Obecnie mam zwykłe zapytanie

( SELECT *
    FROM planet_osm_line
    WHERE route IN ('bicycle')
) AS data

Offline

#5 2016-02-28 22:52:31

balrog-kun
Member
From: Warsaw, Poland
Registered: 2008-08-10
Posts: 1,365
Website

Re: Renderowanie - prośba o pomoc

Sproboj pozniej je polaczyc, czy to w skrypcie czy w zapytaniu.  Przy okazji to samo robi skrypt osmapy, https://github.com/balrog-kun/OSMapa-To … _simple.py, moze sie przyda.

ST_OffsetCurve prawdopodbnie da taki sam wynik dla pojedynczych prostych segmentow.

Last edited by balrog-kun (2016-02-28 22:55:00)

Offline

#6 2016-02-29 15:37:53

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Jestem zielony z postgisa, nie mam pojęcia jak napisać takie zapytanie. Zastanawiam się czy to co proponujesz czyli użycie ST_Union połączy tylko te linie, które się stykają? Są miejsca gdzie szlaki mają dziurę i nie chciałbym w tych miejscach połączeń w linii prostej. Czy ktoś z was jest w stanie pomóc mi skonstruować takie zapytanie? smile

Offline

#7 2016-02-29 22:21:41

balrog-kun
Member
From: Warsaw, Poland
Registered: 2008-08-10
Posts: 1,365
Website

Re: Renderowanie - prośba o pomoc

Nie zmieni geometrii tylko rodzaj objektu np. na LINESTRING jesli uda sie wszystko polaczyc w jedna linie, albo MULTILINESTRING.  ST_Collect moze byc w tym przypadku lepsze, sproboj czegos w stylu:

(SELECT ST_LineMerge(ST_Collect(way)) AS way, route, colour, itd
  FROM planet_osm_line
  WHERE route IN ('bicycle')
  GROUP BY route, colour, itd
) AS data

Gdzie "itd" to pozostale tagi ktorych uzywasz.

Offline

#8 2016-03-02 13:35:21

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Dzięki balrog-kun to mi sporo wyjaśniło. Udało mi się stworzyć takie zapytanie i faktycznie działa. Szlaki wyglądają dużo lepiej, bo odcinki o tych samych tagach zostały połączone i zachowują ciągłość. Jedyny problem jaki jeszcze mam to jeśli na jednej drodze występuję więcej niż jeden szlak. Korzystam ze skrypu Popeja (awk), który przypisuje kolejną cyferkę do danego szlaku w przypadku gdy na jedej drodze jest więcej szlaków. Działa to w ten sposób: pierwszy szlak nie dostaje cyferki, drugi dostaje cyfrę 2 i kolejno dalej. Dzięki temu można skonfigurować offset dla każdego kolejnego szlaku. Problem w tym, że pierwszy szlak nie dostaje cyfry więc te odcinki ulegają złączeniu nawet jeśli są odcinki gdzie występuję więcej niż jeden szlak. Wtedy występuje taka sytuacja :

http://pomorskieszlaki.pl/#16/54.2288/1 … m-rowerowe

Ten fioletowy odcinek powinien być przerzucony na drogą stronę (północną).

Zastanawiam się czy w postgisie jest opcja wychwycenia odcinków o takiej samej geometri i na tej podstawie przyporządkowanie jakiegoś atrybutu?

Offline

#9 2016-03-03 22:28:36

balrog-kun
Member
From: Warsaw, Poland
Registered: 2008-08-10
Posts: 1,365
Website

Re: Renderowanie - prośba o pomoc

Mozna oczywiscie zrobic GROUP BY way, ale nadal nie widze sensu dzielenia drog na odcinki, lepiej grupowac po ID drogi tak jak to robi skrypt ktory linkowalem.  Wtedy w stylu nie musisz juz nic robic, skrypt zalatwia wszystko w czasie importu.

Offline

#10 2016-03-11 13:13:16

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Ok, zrobiłem coś podobnego w postgisie smile udało mi się ładnie pogrupować po ID. Postgis jest świetny, udało mi się też policzyć odległości szlaków (na razie rowerowych). Z dumą prezentuję swoje wypociny smile

http://pomorskieszlaki.pl/#8/54.122/17.309/osm-rowerowe

Można kliknąć na szlak i pojawia się info. Mapa obejmuje na razie dwa województwa.

Offline

#11 2016-03-11 13:19:48

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

Re: Renderowanie - prośba o pomoc

Nikt w kraju poza pomorskim nie potrzebuje czegoś podobnego? Szkoda się pewnie ograniczać z takim fajnym narzędziem.

Offline

#12 2016-03-11 13:46:56

marek kleciak
Member
Registered: 2010-10-11
Posts: 8,439

Re: Renderowanie - prośba o pomoc

Dobra robota, Wojtas82,
dziękuję i pozdrawiam!

Marek

Offline

#13 2016-03-11 14:06:34

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Cała Polska jest do zrobienia, na mojej obecnej maszynie wyrenderowanie 3 warstw (rowerki, piesze i ddry) 2 województwa, zajmuje jakieś pół godziny. Cała Polska to pewnie z 2 godziny. Jestem amatorem i niestety lepiej tego zrobić nie umiem. Cieszę się, że w ogóle działa w miarę sprawnie. Druga sprawa to przebiegi szlaków. Mozolnie robiłem woj. Pomorskie i sprawdzałem szlak po szlaku. I jakoś to tam wygląda. Czasem są takie kwiatki, że ręce opadają. Mam wrażenie, że nowicjusze jak edytują to nie zwracają uwagi na relacje i potem się robi syf. Ba, nawet sam się złapałem na takich akcjach jak zaczynałem. Druga kwestia to dodawanie tras rowerowych, które nie istnieją w terenie bo takie też się trafiają. Z bomby powinny mieć state=proposed. Nie usuwam takich tras bo mogą być przydatne dla innych. Dziękuję za dobre słowo.

Offline

#14 2016-03-12 21:50:02

adas
Member
From: Bydgoszcz/Tarnowskie Góry
Registered: 2014-10-09
Posts: 120
Website

Re: Renderowanie - prośba o pomoc

http://pomorskieszlaki.pl/#17/54.69471/18.68076/osm-ddr - tutaj nie oznacza drogi rowerowej w stronę Helu.

Offline

#15 2016-03-12 22:47:22

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Dzięki za info. Wyłapanie wszystkich kombinacji rowerowych to niezła rzeźba. Dodam niebawem i dam znać. Jak już wszystko dopracuję to zrobię chyba całą PL bo zaczyna to jakoś wyglądać. Będę wdzięczny za inne nie wyświetlające się kombinacje.

Offline

#16 2016-03-14 13:49:13

przemas75
Member
Registered: 2012-05-27
Posts: 680

Re: Renderowanie - prośba o pomoc

Droga rowerowa, to jaki znak? Bo według mnie, za dużo jest tego na mapie. Rozumiem, że dajesz to wtedy gdy jest path,segregated=yes.
Ale ja renderowałbym to jako ciąg p-r.

Droga rowerowa jedynie tu na przykład https://tinyurl.com/h4snhkw (dałem specjalnie blisko Ciebie big_smile ).
Zwłaszcza w kontekście ostatniego wyroku z Sopotu.

Czy zupełnie coś innego miałeś na myśli?

Offline

#17 2016-03-14 17:37:51

rowers2
Member
Registered: 2015-09-25
Posts: 583

Re: Renderowanie - prośba o pomoc

przemas75 wrote:

Droga rowerowa, to jaki znak? Bo według mnie, za dużo jest tego na mapie. Rozumiem, że dajesz to wtedy gdy jest path,segregated=yes.
Ale ja renderowałbym to jako ciąg p-r.

Chciałbyś renderować drogi dla rowerów jako ciągi pieszo-rowerowe? A to dlaczego? W Polsce ludzie nie jeżdżący rowerami nie rozumieją różnic między różnymi drogami rowerowymi. Nawet ci co mają prawo jazdy  mają z tym problem, co skutkuje dużą śmiertelnością oraz wyzwiskami na drodze gdy kierowca nie tykający roweru zabiera się za edukowanie. Drogi dla rowerów oznacza się znakiem C13 i C13/C16 z kreską pionową.Ciąg pieszo-rowerowy to nazwa nie występująca w prawie drogowym jak np. ustawie PORD. To nazwa techniczna używana w przepisach budowlanych np dotyczących budowy dróg, która oznaczała to samo co "droga dla rowerów i pieszych" przez co zatarto różnicę między dwoma rodzajami ddrip co doprowadziło do wielu patologii w zakresie oznakowania poziomego czy wyroków sądów. Nawet nowelizacja PoRD z ok 2010 była tak interpretowana aby nagiąć ją do dawnego sprzecznego interpretowania co to jest ddrip, a co to ddr. W efekcie trzeba było poprawić rozporządzenie o znakach aby raz na zawsze ustalić, że ddrip czyli c p-r,  to tylko nieseparowana ścieżka biegnąca po chodniku (C13/C16 z kreska poziomą) czyli wrócono do interpretacji sprzed 2003 r która była intuicyjna. Od tego czasu stało się powszechniejsze używanie określenia cp-r jako zamiennika dla nieseparowanej ddrip.Wcześniej nazywano drogi gdzie rowerzysta musiał ustępować pieszym śmieszkami, a teraz tę rolę przejął cp-r.

Droga rowerowa jedynie tu na przykład https://tinyurl.com/h4snhkw (dałem specjalnie blisko Ciebie big_smile ).
Zwłaszcza w kontekście ostatniego wyroku z Sopotu.

Czy zupełnie coś innego miałeś na myśli?

Akurat nie wiem co to za wyrok, ale wiem, że przez lata sądy wydawały złe wyroki, bo w podobnych sprawach w każdym województwie były inne orzeczenia.Takie polskie prawo, że nie występuje tu precedens, a gdy powiesz w sądzie, że stosowałeś  się do wcześniej publikowanego orzeczenia to sędzia Ci odpowie, że każda sprawa jest inna i ważne co on orzeka w sprawie Twojej winy.
Z pewnością droga dla rowerów to nie tylko taka jak wskazujesz na google i na dodatek używasz określenia poza prawnego, bo drogą rowerową jest wszytko co przeznacza się dla rowerów, ale nie wszystko jest  "drogą dla rowerów".
Wiem o pracach nad ustawą  aby zmienić nazewnictwo ścieżek aby właśnie drogi rowerowe nie myliły się z drogami dla rowerów.Sądzę jednak, że po wydaniu rozporządzenia o znakach już taka potrzeba doprecyzowania nazewnictwa nie jest taka konieczna.
Może należałoby zrezygnować z zamiennego stosowania cp-r i ddrip, bo to konserwacja dawnego bałaganu..

Trochę poza tematem to nie rozumiem dlaczego tak wielu maperów wprowadza chaos i do chodników dodaje tagi bicycle=yes i nie chodzi tu o błędne tagowanie ddrip ale o jakąś manię, co utrudnia renderom  wyłapanie typowych sytuacji gdzie pod znakiem C16 jest tabliczka T22 (Droga dla pieszych+Nie dotyczy rowerów).
Ten problem też rozwiązuje rozporządzenie o C13/C16, bo chodziło o nieobowiązkową jazdę po chodniku, więc teraz znaki C16+T22 tracą sens. Może zostawią te C16+T22 tam gdzie nie można postawić C13/C16 z powodu zbyt wąskiego chodnika.

Offline

#18 2016-03-14 18:09:25

przemas75
Member
Registered: 2012-05-27
Posts: 680

Re: Renderowanie - prośba o pomoc

< w tym miejscu była długa odpowiedź na moralizatorską przemowę benka-vel-rowers, ale to nie miejsce aby o tym dyskutować >

Przypomnę jedynie Wojtkowi moją sugestię, aby rozróżnić może wszystkie 3 drogi rowerowe jakie u nas istnieją - albo nawet cztery (ten ostatni przykład benka c16+t22).

Offline

#19 2016-03-15 09:16:48

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

Moje założenie było takie aby uprościć to sprawy rowerowe jak najbardziej.
Oczywiście mógłbym zrobić render z dziesięcioma albo nawet więcej kombinacjami ale wprowadzi ona tylko chaos dla potencjalnego odbiorcy mapy. Miało być uproszczone. Kierowałem się taką zasadą. Jeśli jest ddr separowana z chodnikiem to jest oznaczona jako ddr, jeśli jest sama ddr, to tak samo, jeśli ciąg pieszo-rowerowy lub chodnik z dopuszczeniem rowerów to kreska kropka, pasy rowerowe i kontraruch też osobno (jak w legendzie). Dla mnie te 4 kombinacje najczęściej występują w terenie, po za tym nie chcę robić 2-stronicowej legendy smile Trafiłem ostatnio na jakiś talk o ddrach i kombinacjach i powiem szczerze, że jest tego za dużo. Ja to w miarę ogarniam już i wy pewnie też ale przyjdzie świeżak i może zrobić meksyk na mapie na zupełnej nieświadomce. Pokój smile

EDIT: Tak w ogóle to chciałem to zrobić jako mapę wektorową ale mapbox jest jakiś dziwny... Przeniosłem dane i styl do mapboxa ale utknąłem w momencie eksportu...I jak to potem wyświetlić w Leaflecie (nie chcę korzystać z serwera mapboxa bo mam swój )?

Last edited by wojtas82 (2016-03-15 10:16:37)

Offline

#20 2016-03-15 19:06:16

rmikke
Moderator
From: Warszawa
Registered: 2014-11-14
Posts: 2,032
Website

Re: Renderowanie - prośba o pomoc

przemas75 wrote:

Droga rowerowa, to jaki znak? Bo według mnie, za dużo jest tego na mapie. Rozumiem, że dajesz to wtedy gdy jest path,segregated=yes.
Ale ja renderowałbym to jako ciąg p-r.

Od 8 października ub.r. ciąg p-r z rozdzielonym ruchem to z definicji chodnik i droga dla rowerów, biegnące obok siebie.
Czyli jako ciąg p-r powinniśmy oznaczać tylko takie ze wspólną powierzchnią, bez podzału na część rowerową i pieszą.

Offline

#21 2016-03-15 19:13:21

rmikke
Moderator
From: Warszawa
Registered: 2014-11-14
Posts: 2,032
Website

Re: Renderowanie - prośba o pomoc

wojtas82 wrote:

Jeśli jest ddr separowana z chodnikiem to jest oznaczona jako ddr, jeśli jest sama ddr, to tak samo, jeśli ciąg pieszo-rowerowy lub chodnik z dopuszczeniem rowerów to kreska kropka, pasy rowerowe i kontraruch też osobno (jak w legendzie).

To jest, moim zdaniem, dobre przybliżenie, brakowało mi tylko informacji, po której stronie jest pas dla rowerów, OIDP.

Last edited by rmikke (2016-03-15 19:13:45)

Offline

#22 2016-03-15 20:29:35

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

No ok ale chyba nie ma możliwości wskazania po której stronie jest ddr a po której chodnik w przypadku jednej linii? Chyba, że zastosować coś w stylu cycleway:left footway:right chociaż to może być problematyczne. smile

Offline

#23 2016-03-15 20:47:38

przemas75
Member
Registered: 2012-05-27
Posts: 680

Re: Renderowanie - prośba o pomoc

Ok, w sumie może lepiej jak jest uproszczone. Moim celem było właściwie wyłuskanie dróg wyłącznie ze znakiem C-13.
Ale w kontekście co wcześniej pisałeś, żeby nie mieszać - to może lepiej, że wszystkie drogi do jednego wora wrzucone są.

Taka jeszcze szybka propozycja, może drogom innym niż te o których piszę wyżej, dać o ton lub dwa inny niebieski? Dosłownie taka kropla białego rozjaśnienia smile Bardziej obrazowo: highway=cycleway większy priorytet mają w renderowaniu (mocniejszy kolor).

Offline

#24 2016-03-15 21:56:40

wojtas82
Member
Registered: 2014-09-20
Posts: 214

Re: Renderowanie - prośba o pomoc

To jest do zrobienia ale w legendzie nie będę o tym wspominał smile Chcę zebrać do kupy wszystkie istniejące kombinacje i je jakoś sensownie ułożyć tak aby nic nie przeoczyć. Za drogi rowerowe zamierzam się wziąć jak dopieszczę warstwy szlaków. Obecnie mam dwie osobne warstwy: pieszą i rowerową (szlaki) z tym, że przy wyświetlaniu obu na raz czasami się na siebie nakładają... Z kolei po utworzeniu wspólnej warstwy zbyt często występuje przerzucanie szlaków z jednej strony drogi na drugą i to mi się też nie podoba... Największym problemem jest tutaj właśnie ten offset. Kiepsko wyglądają miejsca gdzie np idą 4 szlaki rowerowe i jeden odchodzi na skrzyżowaniu. Tworzą się takie przecięcia i mapa staje się nieczytelna. No ale trzeba kombinować...Może coś sensownego się urodzi smile
EDIT: Tak szczerze mówiąc, widzę teraz wyższość map robionych "ręcznie" od takich generowanych z surowych danych smile

Last edited by wojtas82 (2016-03-15 21:58:28)

Offline

#25 2016-03-15 23:51:04

rmikke
Moderator
From: Warszawa
Registered: 2014-11-14
Posts: 2,032
Website

Re: Renderowanie - prośba o pomoc

wojtas82 wrote:

No ok ale chyba nie ma możliwości wskazania po której stronie jest ddr a po której chodnik w przypadku jednej linii? Chyba, że zastosować coś w stylu cycleway:left footway:right chociaż to może być problematyczne. smile

Ale mówimy o pasach dla rowerów. W jezdni.

Offline

Board footer

Powered by FluxBB