OSMonitor (raporty z danych OSM)

Od jakiegoś czasu myślałem nad tym, ale dzisiaj po prostu siadłem i zacząłem robić konkrety - myślę, że te raporty się przydadzą szczególnie, gdy już skończy się nawałnica związana z licencją.

Generalnie idea jest prosta - weź dane z OSM, weź dane “rzeczywiste” i porównaj. Np. weź listę relacji dla dróg ekspresowych i porównaj z listą z Wikipedii - czy są wszystkie drogi, czy zgadza się mniej więcej długość itd. To samo można zrobić dla podziału administracyjnego (województwa, powiaty - czy są poligonami itd) i pewnie wielu innych obiektów.

Planuję te raporty sobie rozwijać i informować o istotnych nowościach, stąd osobny wątek.

Pierwszy raport, wersja pre-alfa:

https://wiki.openstreetmap.org/wiki/User:Ppawel/RaportDrogi

Najważniejsze TODO:

  • dodać sprawdzanie ciągłości drogi (tzn. czy nie ma “strzępów”) - po przejściu botów dużo dróg pozostaje nieciągłych…
  • dodać sprawdzanie długości (mniej więcej) drogi (źródło: Wikipedia?)
  • dodać drogi wojewódzkie
  • dodać sprawdzanie konwencji nazewniczych i ostrzeganie o niezgodnościach z konwencjami (np. konwencja “Droga krajowa nr X”)
  • dodać sprawdzanie konwencji identyfikatorów (tag “ref” - np. “S1” vs “S 1”, drogi krajowe w ogóle nie mają identyfikatorów teraz)
  • zrobić z tego ładną aplikację webową - na razie odpalam raporty lokalnie i przeklejam output na wiki
  • …?

Sugestie / przemyślenia mile widziane.

Proponuję tutaj przenieść dyskusję o automacie, żeby nie offtopic-ować w innych wątkach. Odpowiedzi na pytania:

Rzeczywiście, do poprawki, dzięki.

Jeśli masz na myśli kolejność dróg w relacji to tak - drogi nie muszą być “po kolei” żeby działało sprawdzanie ciągłości (o tym niżej). Jeśli masz coś innego na myśli to wyjaśnij proszę.

W tym kierunku mam zamiar rozwijać ten pomysł - mnie osobiście interesują np. trasy rowerowe, ale nie widzę problemu żeby linie komunikacyjne podczepić. Chwila czasu musi upłynąć, żeby to ogarnąć, wrzucić źródła na Github, być może zorganizować hosting żeby wystawić na web, ale myślę, że powoli się to rozhuśta. Dzięki za pomysł.

Dzisiaj prawdopodobnie wrzucę raporty o ciągłości dróg.

Mam na myśli łatwość edycji, oczywiście dla ciągłości nie ma to zbytniego znaczenia jeśli drogi są pomieszane (ostatni odcinek na przykład gdzieś w środku).
Ale dla edytowania jest jednak łatwiej, jeśli są one ułożone w relacji jedna za drugą - tak, jakby się podróżowało.

Zdecydowanie chyba jest to przydatne również w komunikacji miejskiej, o na przykład jak tutaj :
http://www.overpass-api.de/api/sketch-line?network=ZKM+Gdynia&ref=R

Wrzuciłem nową wersję raportu dróg - jest już sprawdzanie ciągłości dróg w relacji, wyszedł np. taki potworek:

http://www.openstreetmap.org/?lat=51.04403&lon=16.98554&zoom=16&layers=M&relation=114014

Uwaga: dane, na których odpalam raporty są z 16-go, więc jeszcze sprzed wizyty botów u nas…

A czy w przypadku autostrad to zawsze nie będziemy mieli nieciągłości, bo są dwa pasy ruchu i oba są dodane w relacji, a nie da się ich połączyć w ciągłą linię?

Właśnie się zastanawiam jak obsłużyć takie przypadki. Ten sam problem jest gdy np. relacja dla drogi krajowej ma w sobie kawałek autostrady - wtedy się rozdwaja.

A od tego nie jest rola backward i forward?

A DW może też…

No prawie każda droga może się rozdwajac (np wpada na rondo).
Problem jest wtedy gdy końców które nie pokrywają się z innym końcem jest więcej niż dwa do czterech (w zależności ile końców kończy się jednokierunko). lub gdy owe końce są z dala od oczekiwanych rzeczywistych końców drogi :slight_smile:
( Chyba że ja kompletnie nie rozumiem o czym piszecie? :slight_smile: )

Uff, wrzuciłem kolejną wersję raportu. Ulepszyłem algorytm wyliczania spójności relacji (a mówili, że teoria grafów na studiach do niczego się nie przyda :P), wyświetlana jest też liczba składowych.

Dane są z wczoraj rano, widać już, że praca wre, bo np. DK83 w moich danych ma 11 składowych a na dzień dzisiejszy jest już spójna - wyjdzie pewnie w jutrzejszym raporcie. Przydałoby się zrobić uzupełnianie bazy diffami, ale niestety musi to poczekać aż będę miał czas…

Kolejny duży problem to co zrobić z drogami dwujezdniowymi, dla których jezdnie się nie stykają - wtedy algorytm uzna relację za niespójną. Była ciekawa dyskusja na IRC-u i Dotevo zaproponował, żeby każdą nitkę/jezdnię dodawać do relacji z odpowiednimi rolami (positive/negative) żeby móc rozróżnić jezdnie. To chyba zasługuje na osobny wątek - jeśli się zdecydujemy na taką konwencję (a jest ona stosowana np. w Niemczech) to można by dodać sprawdzanie do raportów czy są takie role.

DK16, drobe poprawki za moment i też będzie gotowa - nie da się szybciej automata puszczać Pawle ? :wink:
Nic tak nie motywuje do pracy jak oglądanie efektów :smiley:
Obiecałeś też githuba… Chętnie przyjrzałbym się.

Choć jeszcze DK16 czeka przejście bota na wschodzie, ale nic to !

Dokładnie to miałem na myśli rolę forward/backward :slight_smile: lecz w niektórych przypadkach nić może być wpólna dla dwóch kierunków i wtedy dodajemy bez roli

Owszem, to jest jeden z głównych zamysłów tych raportów - żeby jakieśtam kolory czerwone zmieniały się w zielone, procentów przybywało (albo ubywało - zależy :slight_smile: ).

Będzie na Github, ale na razie jest to na wariackich papierach + mam na głowie przeprowadzkę a od wtorku siedzę przy kompie nad OSM :slight_smile: Postaram się ASAP.

Pawle, oto tekst Waszej rozmowy:

Pawle,
pozwolilem sobie wpisac pare angielskich zwrotów w opisis stronki.
Koledzy zza miedzy mówieli ze jst pomocna, ale w zab nie rozumieja co tam jest napisane.

Zas Simon ze skrucha przyznal ze byl zmeczony i zdenerwowany, dlatego tez tak odpisal…

Pawle, jak czesto mozesz aktualizowac zmiany na stronce? Dalo by sie zautomatu zeby do wtorku aktualizowac to co pare godzin?

Ma w weekend coś zrobić, może już dziś wieczorem, tak mi napisał.
(nie będzie go do wieczora, dlatego ja odpowiadam :wink: )

Dzięki wszystkim za zainteresowanie raportami… właśnie wróciłem do domu i siadam do dalszej pracy. Co do częstszej aktualizacji - problem w tym, że zrzuty danych są publikowane codziennie rano. Można oczywiscie aktualizować różnicowo (nawet są diffy “minutowe”), będę to dziś testował, ale z tego co słyszałem to bot redakcyjny generuje tyle zmian, że ludziom bazy nie nadążają się aktualizować. Ja na razie to wszystko “hostuję” u siebie na laptopie, nie mam nawet do tego dysku SSD, więc łatwo będzie mnie zarżnąć nadmierną ilością danych. Sprawdzę i dam znać co z tego wyszło.

W tej chwili przygotowuję nowa wersję robota - będzie on aktualizował strony napisane “ręcznie”, np. http://wiki.openstreetmap.org/wiki/WikiProject_Poland/Sie%C4%87_drogowa/Drogi_krajowe (oczywiście zrobię kopię tej strony, żeby nie działać na żywym organiźmie) - w ten sposób robot będzie współautorem stron i nie będzie zamazywał pracy innych - można dodawać wtedy tłumaczenia, uwagi itd. a robot będzie dodawał informacje generowane przez siebie w odpowiednich miejscach.

Hm, a jak rozwiązujesz taką sprawę :
http://pl.wikipedia.org/wiki/Droga_krajowa_nr_91_%28Polska%29
?
http://www.openstreetmap.org/?relation=130522

Niestety tak jak się obawiałem, import różnic trwa wieki (jeszcze się nie skończyło na moim laptopie…) - po prostu jest za dużo zmian spowodowanych przez redaction bota… Jedynym sensownym rozwiązaniem na razie jest import “od zera” codziennie rano.

Będzie możliwość powiedzenia botowi ile relacja ma fragmentów dla danej drogi.