Import danych z http://ump.waw.pl/

Nie zrozum mnie ?le, te s?ówko “bezmy?lne” ma kluczowe znaczenie :slight_smile: Chodzi o to, ?e cz?sto dane i tak trzeba poprawia?.
Tak w ogóle, to wypowied? by?a podszyta zazdro?ci? (syndrom NIH, wspomniany tu wcze?niej), bo ludzie z UMP odwalili kawa? ?wietnej roboty. Jestem pod wra?eniem tego, jak wygl?da ich mapa.

Sprawdz?, gdy przesi?d? si? na “stacj? robocz?” (hehe), czyli jutro.

Apropos wygl?du UMP i tych folderów, które tam si? znajduj?.. Mo?e warto je jako? pouk?ada?? Nie jeste?my przecie? zmuszeni do kopiowania struktury bez zmian. Mo?na by?oby np. zrobi? folder, w którym oddzielnie by?yby pa?stwa, oddzielnie województwa/miasta, oddzielnie to, co nie wpad?o do miast, jako symlinki, albo chocia? plik tekstowy mówi?cy, co gdzie jest.
Sam nie mam poj?cia, od czego zacz??, ?eby znale?? wszystko w okolicy oprócz dróg w mie?cie, które ju? zaimportowa?em.
My?l?, ?e przyda si? to wszystkim.

@balrog-kun]Na granicach obszarow w UMP (ktore sa podzielone tak jak katalogi w drzewie UMP) beda niepolaczone ze soba niektore drogi i ksztalty (bedzie w nich cieniutka przerwa).
1)Czemu beda niepolaczone drogi jak ,odpalam skrypt na wszytskich danych?

Jak zapuszczam skrypt na danych z Zdrodlach z uMP to przy kielcach jeleniejgorze krakowie nowymsaczu opolu skrypt sie sypie ? wie ktos dlaczego?

I ile orietacyjnie trwa zrobienie calosci ->poland-ump.osm?

Skrypt ich nie dzieli - te dane same w sobie s? tak zapisane. Nie ma w nich zawartych informacji, co jest po??czone z czym (dobrze mówi??).

Balrog-kun:
?ci?gn??em, jest ok. repo.or.cz dalej nie dzia?a, a znalaz?em niepoprawiony b??d. Przes?a? patcha, czy mo?e oficjalne repozytorium ump2osm przechodzi do openstreetmap.pl :)?

OO Mozesz opisac co naprawiles? moze teraz skrypt nie bedzie sypal bledow

Zmieniłem to:

class Mylist(object):
    k = {}
    v = [] #

na to:

class Mylist(object):
    def __init__(self):
        self.k = {}
        self.v = [] #

Nie sądzę, że to zmienia cokolwiek w praktyce, ale jeśli tak, to chyba będzie to prędkość. Jakie to są błędy?

Sypie takie błedy:]Loading C:\cvs\UMP-Kielce\src\JEDRZEJOW.ulice.txt
Traceback (most recent call last):
File “C:\cvs\txt2osm.py”, line 1166, in
parse_txt(infile)
File “C:\cvs\txt2osm.py”, line 1085, in parse_txt
convert_tag(way, key, polyline[key], feat)
File “C:\cvs\txt2osm.py”, line 802, in convert_tag
raise ParsingError(“Unknown key " + key + " in polyline / polygon”)
main.ParsingError: Unknown key ForceClass in polyline / polygon

Odzi, masz chyba inn? wersj?, ni? ta, któr? ja wzi??em z repozytorium. Pewnie nie chcesz si? bawi? z gitem, wi?c wrzuci?em na http://pinalambla.net/txt2osm.py . Nie mam poj?cia, czy to pomo?e.

Mam wersje z OpenStreetMap/ump … ktos mi wyjasni co to git:D

Zapytaj Wikipedi? o git i system kontroli wersji. Wol? nie wprowadza? w b??d wyja?niaj?c nieprawid?owo :stuck_out_tongue: Wa?ne jest to, ?e najnowsz? wersj? ump2osm mo?na zawsze ?ci?gn?? przez git, wcze?niej w tym w?tku jest podane polecenie, które to za?atwia.

Ja się juz poddaje skrypt użylem od rhn http://pinalambla.net/txt2osm.py
Sciagnalem zrodla z @ump , zrobilem patcha -p 1 < ump.diff z (http://www.openstreetmap.pl/ump/ump.diff)
odpalilem sudo ./txt2osm.py.1 UMP-/src/.txt i ciagle błedy… Chyba nie da sie zrobic jednej paczki poland-ump.osm

Poprawilem pare nowych bledow ktore sie pojawily w ich CVSie i dodalem te nowe tagi ktore ostatnio zaczeli uzywac (ForceClass etc), teraz juz nie powinno sie sypac az zrobia nowe zmiany. Committowalem tez poprawke rhn (zbenchmarkowalem to zeby zobaczyc czy nie dziala wolniej, i dziala dokladnie tak samo).

Polecam sciagac tylko pliki z repozytorium, nie ze statycznych kopii, czyli ump.diff z http://repo.or.cz/w/ump2osm.git?a=blob_plain;f=ump.diff;hb=HEAD i txt2osm.py z http://repo.or.cz/w/ump2osm.git?a=blob_plain;f=txt2osm.py;hb=HEAD

EDIT: Aha, ump.diff tym razem zrobilem z cvs’a, nie z gita, wiec trzeba nakladac z patch -p0 zamiast -p1

(na wyjezdzie)

Tak apropos - to: http://pinalambla.net/txt2osm.py nie b?dzie cz?sto uaktualniane, jestem na to zbyt leniwy :slight_smile: Jedynie dzi? wieczorem.
Co do polecenia - niby wszystko ok, ale nie u?ywaj do tego “sudo”. Ten skrypt nie potrzebuje mie? kontroli nad ca?ym komputerem, wi?c najbezpieczniej mu jej nie dawa?.
Nie rób jednej paczki :slight_smile: Je?li chcesz te dane przes?a?, spakuj je. Spróbuj operowa? na pliku z rzekami albo z lasami - z JOSMem nie da si? pracowa? :confused: Do tego stopnia, ?e zaraz dodam do txt2osm funkcjonalno?? obcinania kszta?tów le??cych poza wybranym obszarem.

Niewykonalne… Wygl?da na to, ?e kto? blokuje mi tam dost?p - na razie zapytam ISP, czy to nie oni. Je?li nie, to my?l?, ?e warto zmieni? lokacj? repozytorium.

Kto? jeszcze ma ??cza dzier?awione z telekomunikacji?

PS. Co jest w tym diffie?

EDIT: Pozmienia?em kod (relacje) na taki, który b?dzie troch? lepiej wy?apywa? b??dy.
Wprowadzi?em te? b??dy dodaj?c obcinanie do zadanego kwadratu (relacje nie dzia?aj? jak trzeba). Zostawia troch? ?mieci - trzeba by by?o pó? programu zmienia?, ?eby dzia?a?o tak, jak si? tego oczekuje, wi?c jest wykomentowany. Dost?pny tam, gdzie zawsze.
UWAGA: bazowa?em na troszk? starej wersji, nadal nie mam dost?pu do repozytorium.

Poprawki do danych z CVSa. Np. zamiast dodawac do skryptu rozumienie tagu Lable2 (Label2 napisane z bledem) i wszystkich innych mozliwych kombinacji, lepiej poprawic to w danych wejsciowych.

Jakiego typu bledy?

Po co jest to obcinanie? Wydaje mi sie ze nie ma sensu dzielic importu na zbyt male kawalki. Branie mniejszego obszaru niz potrzeba tylko generuje dodatkowa prace.

Starajmy sie tez nie importowac pojedynczych miejscowosci w srodku pustki bo to tylko utrudnia zycie osobom ktore chca potem zaimportowac reszte regionu – musza dodatkowo szukac co juz jest, laczyc ulice z tymi juz zaimportowanymi. Lepiej spedzic tydzien nad jednym plikiem i wgrac w calosci na koniec.

Zrob git-pull zeby zupdateowac z repozytorium na openstreetmap.pl (to jest symlink do mojego lokalnego repo wiec powinien byc zwykle aktualny).

B??dy przy pisaniu programu - ?atwiej zobaczy?, sk?d bior? si? jakie tagi i jaka jest struktura relacji - przynajmniej jak dla mnie. Spójrz na kod - diff powinien pokaza? zmiany. Zacommitujesz to, co uwa?asz za s?uszne :slight_smile:

Nie mog? si? z tym zgodzi?. Importowanie 37 MB pliku ZNACZNIE spowalnia prac? JOSM. Nie mam mo?liwo?ci przejrzenia i sprawdzenia wszystkich rzek czy lasów (np. pod k?tem zachodzenia na siebie, czy na drogi), które mog? si? znajdowa? czasem ponad 100 km ode mnie. W tym przypadku wol? wyci?? to, czego nie dotkn? i zaimportowa?, co mog?. W JOSM wycinanie trwa?o 2h, przy ??czeniu warstw da?em za wygran? po godzinie.
Poza tym s?dz?, ?e lepiej, ?eby ka?dy takie czynno?ci robi? w swoim znznym pobli?u, ni? importowa? o wiele za du?o. Nie zapominajmy, ?e te dane si? zmieniaj? i zmiany te? trzeba co jaki? czas przegl?da?.
Przy ulicach to ju? nie jest takie wa?ne, ale nadal w?tpi?, ?e kto? zna cho?by z grubsza wszystko w promieniu 100 km.

Zreszt? ten kod jest wykomentowany, wi?c nie trzeba go u?ywa? :slight_smile:

Je?li co? b?dzie nie tak, to na pewno to zrobi?; póki co ten kod to jak dla mnie straszny ba?agan i nie chc? go tyka? :stuck_out_tongue:

UPDATE:

Z tego wynika, ?e w daj?cej si? przewidzie? przysz?o?ci u?ytkownicy ??cz TP nie b?d? mogli korzysta? z repo.or.cz. Ponawiam wi?c pro?b? o przeniesienie oficjalnego repozytorium git (a przynajmniej zrobienie ma?ego proxy tylko na pliki w http://repo.or.cz/w/ na adresie powiedzmy openstreetmap.pl/ump2osm)… Uwa?am, ?e nie ma sensu zadowala? si? pó??rodkami.

Jednak mozliwisci mojej maszynki 4gb ramu i 64 bity nie daly rady aby przekorwentowac zrodla ump do jednego pliku :frowning:

  1. Na 64 bitach mozemy zaadresowac wiecej ramu ale, sam kod zajmuje tez wiecej ramu po adresuje wszytsko po 64 bitach a nie na 32!!! kurde
  2. skrypt txt2osm zapisuje wynik pod sam koniec, moim zdaniem jest to marnotrawienie ramu!! bo jak rozumiem to np UMP-Wroclaw sie przetworzy i jest dalej trzymany w pamieci aby znac odstatnie id noda i way tak?












3)Jak rozumiem to plik osm skalada sie z 2 tagow node i way , w pojenosci najpierw node pozniej way(gdzie way wskazuje na id node?)
4)Rowniez rozumiem ze UMP-Warszawa i UMP-Torun sa od swoich id nie zalezne.? tak

5)Planuje napsisac proga ktory bedzie mergowal Miasta ktore bede zapisane do plikow (Warszawa.osm , Torum.osm …).
pozniej bedzie okreslal ostatnie id node i way (dla warszawy) , ostatnie id node i way dla Torunia
Przyklad Wawka id dla node 4000 ,id way 6000
Torun id dla node 2000 ,id way 3000

i wykona merga plikow
Według reguły:
|
… | Warszawa
|

|
… | Torun
|


<way id=‘4001+2000>’ |
… | Way Warszawa
<way id='4001+2000+2000> |

<way id='4002+2000+2000>

<way id='4002+2000+2000+1000> |way torun?
Ma to szanse zadzialac?

Nie jest tak latwo, format dla garmina (ten ktory uzywaja w UMP) jest dosyc prymitywny i nasz programik txt2ump probuje wielu rzeczy sie domyslac, laczyc ze soba obiekty w jedna calosc, nawet jesli sa zapisane w roznych plikach wejsciowych itd.

Oprocz nodes i ways masz jeszcze relacje, ktorych czlonkami moga byc nodes i ways. Dopiero jak ways i relations zostana przetworzone to wtedy mozesz wywalic z pamieci nodes.

Oczywiscie mozna wymyslic najrozniejsze sztuczki zeby zmniejszyc zuzycie pamieci, zwykle kosztem wydajnosci, ale chyba szkoda czasu na zastanawianie sie.

Wyjasnij do czego Ci ten plik ze wszystkimi danymi, napewno mozna to latwiej zrobic.

Ja uruchamiam txt2osm na 64 bitach i potrzebowalbym okolo 5-6GB ramu (tak jak juz mowilem wczesciej) zeby zaladowac wszystko, wiec z 4GB mozesz nie probowac. Na 32-bitach roznica jest nie taka duza (moja szkola ma komputer z 52GB ramu ale 32-bitowy i tez nie poszlo na nim - trzeba by zamiast struktur pythona uzywac pliku na jakims ramdysku - wtedy mozna by bylo spokojnie zaadresowac cale 50GB)

Spojrz sobie na skrypt osm-merge, mozesz w ten sam sposob zmergowac wszystkie pliki .osm z openstreetmap.pl/ump/ ale na ich granicach drogi nie zostana polaczone. (ten skrypt robi dokladnie to co opisales powyzej)

Jaki? czas temu wspomina?em, ?e podziel? si? swoim programem do konwersji UMP->OSM. Niestety nie mam jako? motywacji by uporz?dkowa? kod. Je?li jednak kto? chce, oto mój pakiet, który u?ywam do konwersji do pseudo OSM na potrzeby mapy ump-www:

http://marcom.homeip.net/ump-www/ump2osm.pack.tar.gz

Jak wspomina?em, konwerter oparty jest o http://code.google.com/p/mp2osm/ . Niestety regu?y konwersji bazuj? na typach, a przyda?yby si? bardziej rozbudowane warunki (np po wszystkich tagach). W zwi?zku z tym cz??? rzeczy obchodz? przy pomocy skryptów pomocniczych.
Poza tym aby multipolygony dzia?a?y musz? porz?dkowa? kierunkowo??, aby wewn?trzne pier?cienie by?y skierowane przeciwnie do zewn?trznych.
Ró?ne kodowania konwertuj? do kompromisowego cp1250 (tylko jedna literka chyba czeska jest tracona).
W pliku readme.txt jest kilka uwag, które powinny u?atwi? okre?lenie co do czego s?u?y.

Niestety oprogramowanie to nie zawiera wielu funkcjonalno?ci opisywanego przez was skryptu, g?ównie dlatego, ?e nie jest mi to bardzo potrzebne dla wizualizacji. Z relacji u?ywam jedynie multipolygon i to te? niezbyt w?a?ciwie: pierwszy ci?g danych jako outer, reszta inner nie zale?nie od stanu faktycznego, bo mapnik i tak sam sobie to wyrysowuje poprawnie, je?li kierunkowo?? jest poprawna.

Przy pomocy tego zestawu 2-3 razy w tygodniu konwertuj? ca?e UMP do jednego pliku “OSM”. Najwi?kszy problem stanowi netgen, gdy? wymaga prawie 1.5 GB ramu. Sam konwerter uda?o mi si? zoptymalizowa?, ?e wystarcza ok 700MB do przetworzenia 350MB pliku mp w 1.1GB plik OSM, co zajmuje ok 10 minut na 3-letnim laptopie. Ca?a operacja razem z cvs update, netgen, wojek, preprocessing i konwersj? zajmuje mi <30minut na laptopie z 2GB RAM i jednordzeniowym AMD 2.2GHz.

Szkoda ?e edytory OSM s? jakie? takie przymulaste i nie potrafi? rysowa?/zarz?dza? danymi w sposób hierarchiczny (im dalej tym mniej obiektów wy?wietla?). GPSMapedit pozwala na normaln? prac? nawet z kilkoma obszarami UMP na raz (np UMP-Warszawa + UMP-Plock + UMP-Wloclawek + …), natomiast próba otworzenia samej np UMP-Warszawa w JOSM ko?czy si? d?uuugimi oczekiwaniami na reakcj? po ka?dym klikni?ciu.

Przyk?adowy wynik dzia?ania opisywanego oprogramowania (gdyby nie uda?o si? czego? uruchomi? :wink: ):
http://mapa.ump.waw.pl/ump-www/ump-warszawa.osm.bz2

Pozdrawiam,
Marcin Rudowski

Plik mi jest potrzebny do wyswietlenia mapy w mapniku!!
Prubowalem juz innych kompilatorow Jython z GCollection , PYPY tez z graberem i nie osmiecaja duzo pamieci wiec prog jest wmiare optymalnie napisany, moze gdyby to bylo Kochane “C” to zajetosc byla by mniejsza:)

Ma ktos mozliwosc zamulić ten skrypt ?

Super. Efekt wizualny jest bardzo ladny.

Moje pierwsze rozwiazanie bylo takie samo (pierwszy outer i kolejne ksztalty jako inner), potem zauwazylem ze zewnetrzny pierscien ma zwykle najwiecej wezlow wiec ten ktory ma najwiecej wezlow ustawiam jako outer a reszte jako inner i w przecinym kierunku (outer odwrotnie do ruchu wskazowek zegara i inner zgodnie z nim), statystycznie lepiej sie sprawdza.

Obydwa podejscia na przyklad nie wyrenderuja sie poprawnie kiedy obiekt ma dwa rozlaczne kawalki z dwoma dziurami, wiec dodaje tag fixme.

Mialem ambicje konwertowac obiekty z tylko jednym ciagiem wezlow ktory opisuje zarowno zewnetrzny ksztalt i dziury, ale to sie robi potwornie skomplikowana geometria.

To w sumie uzyj programu mar_rud’a.

Do wyswietlenia tez nie potrzebujesz zeby drogi na granicach mialy polaczone wezly wiec mozesz zmergowac ze soba pliki tak jak osm-merge to robi. (wlasnie zapuscilem go, skrypt pod http://www.openstreetmap.pl/ump/mergeall.sh a wynik pod http://www.openstreetmap.pl/ump/ump-world.osm.bz2))