Algorytm prośba o małą pomoc

O narzędziach do tworzenia własnych map, takich jak MapEdit czy cGPSmapper, a także o serwisach udostępniania, wymiany i przetwarzania danych geograficznych takich jak MapCenter, OpenStreetMap czy SDD (SRTM). Ogólnie, o wszystkim co związane z radością UMPowania.

Moderatorzy: Artur, Alf/red/, Spider

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Pn, 16 sty 2012 17:31

Wiadomo ze całej pracy nie zrobicie bo ja ją robie, ten pseudokod to tak z 15%pracy bym powiedział. I dlatego prosze o te 15% pomocy. Reszte ostro robie i pisze, a nie umiem programowac i szukam pomocy po_prostu.
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Pn, 16 sty 2012 17:53

A więc konkretne pytanie po kolei bede pytał: W jaki sposób znaleźć rzeki i drogi?
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez popej » Pn, 16 sty 2012 20:16

Tu masz całość inforamcji o UMP: http://ump.fuw.edu.pl/wiki/Strona_g%C5%82%C3%B3wna
W tym np. opis obiektów: http://ump.fuw.edu.pl/wiki/Co-czym
I sposób pobierania danych: http://ump.fuw.edu.pl/wiki/Pakiet_edycyjny
Tutaj masz podręcznik cgpsmappra zawierający opis formatu danych stosowany przez UMP: http://cgpsmapper.com/manual.htm

Robisz listę obiektów, które Cię interesują, ściągasz dane i selekcjonujesz wg wybranych typów.
popej
Montana 700, 3540T, PL Topo, OSM, CNE; PocoX3Pro, OsmAnd+
Avatar użytkownika
popej
Garniak
 
Posty: 6878
Dołączył(a): Wt, 10 kwi 2007 23:22
Lokalizacja: Gdańsk

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Wt, 17 sty 2012 0:29

Ok, wielkie dzieki, próbuje to teraz opracować jakoś, a wiesz może jak usunąć drogi i rzeki najniższej kategorii? I jak pogrupować drogi o podobnych typach i nadać im jden wspólny typ?
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez popej » Wt, 17 sty 2012 11:20

dla każdej drogi wykonaj:
- jeżeli droga ma kategorię mniejszy niż minimalna kategoria dla skali to usuń drogę
- jeżeli droga ma typ taki siaki lub owaki to ustaw typ taki

itp.
popej
Montana 700, 3540T, PL Topo, OSM, CNE; PocoX3Pro, OsmAnd+
Avatar użytkownika
popej
Garniak
 
Posty: 6878
Dołączył(a): Wt, 10 kwi 2007 23:22
Lokalizacja: Gdańsk

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Wt, 17 sty 2012 12:40

Super dzięki za kolejne wskazówki drogi kolego. A kolejne pytanko, w jaki sposób znaleźć wszystkie kawałki rzeki i jak posklejać je w jeden lub kilka wielokątów?
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez Alf/red/ » Wt, 17 sty 2012 15:23

Dla każdego pierwszego i ostatniego punktu rzeki (linii typu rzeka jest kilka) szukaj punktu położonego w tych samych współrzędnych, no może w promieniu (może być kwadratowo) 0.001 stopnia = około 100 metrów. Jeśli znajdziesz, i on będzie końcowym dla innego odcinka, to to są kolejne odcinki tej samej rzeki -> można sklejać w odpowiedniej kolejności (uwaga: czasem kolejność punktów rzeki jest "pod prąd"). Jeżeli będzie jakimś "środkowym", to masz ostatni odcinek dopływu tej drugiej rzeki. Do tego dołóż kilka przypadków szczególnych, np. rzeka rozpływa się na dwa koryta, a potem spływa, albo dwie rzeki łączą się w trzecią (unikalne, ale teoretycznie możliwe), albo rzeka do której wpada nie ma narysowanego w tym miejscu punktu - ale nie wiem, czy kwestie dopływów też chcesz jakoś obsługiwać.
I powtarzam, rzeki są rysowane liniami łamanymi, a nie wielokątami.

Jak nie umiesz programować, to po co brałeś taki temat?
Alf/red/ + jutrzejsze UMP-pcPL + nüvi 360/CNE2008 + nüvi 765/CNE2010 + Vista HCx.
Obrazek
Avatar użytkownika
Alf/red/
Radny
 
Posty: 1096
Dołączył(a): Pt, 16 mar 2007 10:27
Lokalizacja: Szczęśliwice

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Wt, 17 sty 2012 17:23

Nie miałem wyjścia taki temat został bo tak sie ułożyło mi akurat i teraz musze z tym sie zmierzyć. Dzieki za podpowiedz, kurcze tylko jak to w pseudokodzie napisac? Jak mozesz napisz mi chociaż do tej czesci rzek pseudokod, co? Prosze i dziekuje!
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Śr, 18 sty 2012 12:26

Kurcze panowie nie zrobie tego:( nie potrafie skleić tego aby coś sensownego powstało, nie umiem się skupić nawet, jak co chwile synek 9miesieczny wzywa mnie itp. Może ktoś zrobi dobry uczynek i pomoże mi? Chociaż taki kod piąte przez dziesiąte aby było widać ze to jakiś algorytm jest, bede wdzieczny naprawde, a jak coś to ostatecznie moge zapłacić komuś, da rade mi pomóc jakoś? Chce napisać to, obronić się i znaleźć godną pracę aby utrzymać rodzinę.

[EDIT]Skup się, ten błąd ze "znaleść" poprawiam trzeci raz, przecież "znaleziony, a nie znalesiony... Alf
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez Alf/red/ » Śr, 18 sty 2012 16:00

Przykładowo:
Kod: Zaznacz cały
dla każdej linii typu rzeka
* weź współrzędne pierwszego punktu
* przejrzyj wszystkie punkty innych rzek czy są takie same (porównując xx.yyy,zz.www)
** jeśli znajdziesz jako pierwszy lub ostatni ale raz, to to są kolejne odcinki tej samej rzeki, można współrzędne ustawić w odpowiedniej kolejności zależnie które punkty się pokrywają)
** jeśli znajdziesz dwa, to to jest rozwidlenie lub się rzeki spływają (i akcja zależnie co chcesz z tym zrobić - pewnie nic, bo sklejasz tylko kolejne elementy z prostego odcinka)


Czy nie to pisałem wcześniej?
Kiepsko to widzę...
Alf/red/ + jutrzejsze UMP-pcPL + nüvi 360/CNE2008 + nüvi 765/CNE2010 + Vista HCx.
Obrazek
Avatar użytkownika
Alf/red/
Radny
 
Posty: 1096
Dołączył(a): Pt, 16 mar 2007 10:27
Lokalizacja: Szczęśliwice

Re: Algorytm prośba o małą pomoc

Postprzez popej » Śr, 18 sty 2012 16:17

Jeżeli dostałeś taki temat ze wskazaniem na UMP, to istnieje duże prawdopodobieństwo, że Twój promotor śledzi ten wątek. Może coś Ci napisze?
popej
Montana 700, 3540T, PL Topo, OSM, CNE; PocoX3Pro, OsmAnd+
Avatar użytkownika
popej
Garniak
 
Posty: 6878
Dołączył(a): Wt, 10 kwi 2007 23:22
Lokalizacja: Gdańsk

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Śr, 18 sty 2012 17:34

Dzięki za wskazówkę, wskazówki mi są potrzebne i duzo mi dają. A taka sprawa w jaki sposób łączymy odcinki dróg ze wspólnym węzłem i identycznym typem drogi? Jak to przedstawić?
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Cz, 19 sty 2012 10:59

Ktoś może jeszcze mi coś podpowie odnośnie mojego algorytmu? Może ktoś by mi podpowiedział, albo narysował graf jak ma wyglądać to tego algorytmu?
Dzieki koledzy.
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Re: Algorytm prośba o małą pomoc

Postprzez Alf/red/ » Cz, 19 sty 2012 12:00

arek_wroc napisał(a):w jaki sposób łączymy odcinki dróg ze wspólnym węzłem i identycznym typem drogi?

Na przykład tak
Kod: Zaznacz cały
- wejście: już znalazłeś dwa odcinki ze wspólnym węzłem (końcowym) i identycznym typem
- sprawdzasz, czy wspólny punkt jest w pierwszym odcinku ostatni, a w drugim pierwszy
-- jeśli nie, zamieniasz je miejscami ;-0 (nazwami) i wracasz do sprawdzania - albo zamieniasz tylko ich określenie /pierwszy/drugi
-- jeśli nadal nie, odwracasz kolejność punktów w tym, który tymczasem uznałeś za 'pierwszy'
* to sprawdzenie można ustawić inaczej: sprawdzasz które punkty "pierwszy-ostatni" się pokrywają, i zależnie od tego nazywasz je sobie "pierwszy-drugi" i robisz odwracanie kolejności punktów nazwanego jako pierwszy
- kasujesz (pomijasz) w jednym z nich jedno z powtarzających się wystąpień tej współrzędnej wspólnej
- łączysz ciągi współrzędnych "jeden+drugi"
- wyjście: jeden odcinek połączony
Alf/red/ + jutrzejsze UMP-pcPL + nüvi 360/CNE2008 + nüvi 765/CNE2010 + Vista HCx.
Obrazek
Avatar użytkownika
Alf/red/
Radny
 
Posty: 1096
Dołączył(a): Pt, 16 mar 2007 10:27
Lokalizacja: Szczęśliwice

Re: Algorytm prośba o małą pomoc

Postprzez arek_wroc » Cz, 26 sty 2012 17:55

Czesc koledzy.
Posiedziałem trochę na ta moją pracą na tym algorytmem i jednak znów proszę was o pomoc, mam problemy z posklejaniem tego za pomocą pseudokodu, jak możecie pomócie mi, chociaż częsciowo, będę wdzieczny.
Pokaże Wam poniżej to co mam, prosze o pomoc.
To moja czesc pracy:

W taki sposób tworze algorytm:

- usuwamy drogi i rzeki najniższej kategorii,
if warunek then
ciąg instrukcji:
for rodzaj drogi na mapie
{
for odpowiedni dla konkretnej drogi odpowiedni punkt drogi na mapie
{
if usuwamy drogi najniższej kategorii
jeżeli droga ma kategorię mniejszą niż minimalna kategoria dla skali to usuń drogę
then zostają nam drogi, które będziemy rozpatrywać
else wynik nas zadawala
W taki sam sposób robimy takie czynności:
- usuwamy ronda i łączymy drogi prowadzące do ronda,
- usuwamy rampy,
- usuwamy krótkie odcinki dróg i łączymy węzły tych odcinków,
Teraz używamy algorytmu grupowania gdyż:
- grupujemy drogi o podobnych typach i nadajemy im jeden wspólny typ
if
jeżeli droga ma typ drogi ekspresowej to ustawiamy taki typ drogi
Następnie po uzyskaniu grupowania robimy kolejny krok:
- łączymy odcinki ze wspólnym węzłem i identycznym typem drogi.
A więc na wejściu mamy tak:
po znalezieniu dwóch odcinków ze wspólnym węzłem (końcowym) i identycznym typem sprawdzamy:
- czy wspólny punkt jest w pierwszym odcinku ostatni, a w drugim odcinku czy jest pierwszy
- jeśli nie, zamieniamy je miejscami (nazwami) i wracamy do sprawdzania - albo zamieniamy tylko ich określenie /pierwszy/drugi
- jeśli nadal nie, odwracamy kolejność punktów w tym, który tymczasem uznamy za „pierwszy”.
Możemy to sprawdzanie zrobić jeszcze tak:
- sprawdzamy, które punkty "pierwszy-ostatni" się pokrywają, i zależnie od tego nazywamy je sobie "pierwszy-drugi" i robimy odwracanie kolejności punktów nazwanego jako pierwszy
- kasujemy (pomijamy) w jednym z nich jedno z powtarzających się wystąpień tej współrzędnej wspólnej
- łączymy ciągi współrzędnych "jeden+drugi".
Powstaje nam wyjście - jeden odcinek połączony.
Tak robimy dla kolejnych odcinków dróg, aż uzyskamy zamierzony cel.

Poniżej widzimy zalecaną „gradacje” typów, poziomów i symboli dla dróg:
TYPE 0x01
12345 4 ~[0x2b]a4 # autostrada
TYPE 0x02
23456 4 ~[0x2c]s7 # droga szybkiego ruchu/krajowe >=2 pasy w 1 stronę
TYPE 0x03
34567 3 ~[0x2c]12 # krajowe 1- i 2-cyfrowe
45678 3 ~[0x2d]345 # niektóre ważniejsze 3-cyfrowe
TYPE 0x04
56789 2 ~[0x2d]345 # większość 3-cyfrowych
TYPE 0x05
67890 2 # lokalne, bez numerów
TYPE 0x06
78999 1 # osiedlowe w miastach, zupełnie boczne we wsiach itp.

Rozwiązanie dla każdej linii typu rzeka:
- bierzemy współrzędne pierwszego punktu,
- przeglądamy wszystkie punkty innych rzek czy są takie same (porównując xx.yy,zz.ww),
- jeśli znajdziemy jako pierwszy lub ostatni punkt, ale raz, to są to kolejne odcinki tej samej rzeki (można współrzędne ustawić w odpowiedniej kolejności zależnie które punkty się pokrywają),
- jeżeli znajdziemy dwa punkty, to jest to rozwidlenie rzek lub rzeki spływają się (wtedy pozostawiamy to bez zmian).
Można to opisać tak:
dla każdego pierwszego i ostatniego punktu rzeki (linii typu rzeka jest kilka) szukamy punktu położonego w tych samych współrzędnych, w promieniu (może być kwadratowo) 0.001 stopnia = około 100 metrów. Jeśli znajdziemy, i on będzie końcowym dla innego odcinka, to są to kolejne odcinki tej samej rzeki. Można sklejać w odpowiedniej kolejności (ale musimy pamiętać czasem kolejność punktów rzeki jest "pod prąd"). Jeżeli będzie jakimś "środkowym", to mamy ostatni odcinek dopływu tej drugiej rzeki. Do tego możemy dołożyć kilka przypadków szczególnych, np. rzeka rozpływa się na dwa koryta, a potem spływa, albo dwie rzeki łączą się w trzecią (unikalne, ale teoretycznie możliwe), albo rzeka do której wpada nie ma narysowanego w tym miejscu punktu. Rzeki są rysowane liniami łamanymi.

Z góry dziekuje wam jeszcze raz.
arek_wroc
Początkujący
 
Posty: 21
Dołączył(a): Wt, 03 sty 2012 19:42

Poprzednia stronaNastępna strona

Powrót do Tworzenie map

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości