You are not logged in.
- Topics: Active | Unanswered
Announcement
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! ![]()
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? ![]()
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
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
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
).
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
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
).
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
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 ![]()
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
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
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. ![]()
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
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ł
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 ![]()
EDIT: Tak szczerze mówiąc, widzę teraz wyższość map robionych "ręcznie" od takich generowanych z surowych danych ![]()
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
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.
Ale mówimy o pasach dla rowerów. W jezdni.
Offline