kilka pytań na temat importów adresów i obrysów

Bo po roku - już nie są aktualne. Może ktoś zmienił nazwę na adresie, może ktoś coś usunął przez przypadek. Dopiero porównanie ze źródłem - pozwoli takie coś wychwycić. Patrzenie tylko na to, co się zmieniło w źródle, nigdy tego nie wyłapie.

Aby zrobić to wszystko dobrze, potrzebna jest jeszcze jedna baza z adresami po drodze: z jednej strony porównuje, co zmieniło się w źródle, z drugiej strony jest w stanie porównać, co zmieniło się w tym czasie w OSM. Jakaś suma tych dwóch zbiorów daje adresy, którym w ogóle warto się przyglądać (zakładając, że w kopii stanu OSM trzymamy już przejrzane po ostatnim imporcie/aktualizacji adresy).

Takie podejście wykluczam, bo znacząco utrudnia forkowanie projektu OSM. Moim zdaniem - wszystkie takie rzeczy powinniśmy umieć ogarnąć w ramach jednej bazy. Bo adresy to tylko jeden szczególny przypadek. Jest mnóstwo otwartych danych, z których moglibyśmy korzystać, ale dopóki nie nauczymy się sensownie korzystać z takich danych, to będziemy polegać na tytanicznej pracy społeczności, która może być czuć się zdemotywowana tym, że powtarza pracę, która już została wykonana.

Chodzi właśnie o to, by pracy NIE powtarzać:

  1. Konstruujemy Z jako zbiór tych adresów, które zmieniły się w źródle
  2. Konstruujemy O jako zbiór tych adresów, które zmieniły się w OSM

Wyrzucamy z Z to, co już w OSM jest na właściwym miejscu (w odległości mniejszej, niż zadana). Wyrzucamy z O to, co zgadza się ze źródłem. Reszta to rzeczy nowe, które są tylko w źródle lub tylko w OSM - można tu być może zastosować jeszcze jakieś reguły specyficzne dla sprawdzania poprawności danych adresowych, ale zasadniczo większość tego trzeba zweryfikować ręcznie. Po ręcznej weryfikacji uaktualniamy kopię bazy adresów OSM.

Zamiast kopii adresów z OSM wystarczy zapewne pamiętać (dla każdej gminy osobno) datę (zakończenia) ostatniej aktualizacji adresów i na tej podstawie wyciągać z OSM zbiór O.

Da się zrobić, ale trzeba wprowadzić koncepcję importu jako nazwanego zbioru nierenderowanych danych i wrzucać dane z importu jako taki import, do osobnych obiektów. I potem te obiekty porównywać ze źródłem przy kolejnym imporcie z niego.

Nie mowie, ze patrzenie na to, co sie zmienilo w zrodle ma wychwytywac bledy. Wlasnie nie, powinno sluzyc tylko aktualizacjom. Natomiast kwestie bledow mapowiczow, przynajmniej tych wylapywalnych, nie widze dlaczego nie mialby ich wylapac mechamizm typu mrowki.

Wylapywanie bledow w obydwu bazach przez porownywanie ich, gdzie tylko jedna jest edytowalna raczej napewno poprowadzi do przyjecia tej drugiej za wazniejsza w ramach “czyszczenia okolicy”.

To, ze dane sa dostepne nie oznacza od razu, ze powinnismy z nich korzystac. Pierwszym i najwazniejszym zrodlem jest praca spolecznosci. Mozliwosc forkowania czy posiadanie dokladnych danych w miejscach gdzie nie ma wystarczajacej liczby mapowiczow maja o wiele mniejszy priorytet w tym projekcie. Jesli chcemy mirrorowac inne bazy danych to na prawde w ktoryms momencie trzeba pomyslec o robieniu tego poza edytowalna baza OSM. Wiem, ze sie powtarzam, ale to sa zalozenia OSM. Mozna sie z nimi nie zgadzac ale nie mozna narzucac wlasnych.

Moim zdaniem, projekt powoli dojrzewa do zastanowienia się nad tymi założeniami. Poza tym powtórzę jeszcze raz - nie chodzi mi o mirrorowanie, a nadbudowywanie zmian, nad zestawami danych otrzymanymi z zewnątrz.

Jakby wyrzucić wszystkie zaimportowane adresy - to jakby wyglądała mapa Polski? Czy byłaby użyteczna dla użytkowników takiego Yanosika? Albo kogoś innego? A czy nie jest tak, że w 90% dane pochodzą z importów? To prawie jak mirror. Nie żyjmy złudzeniem, że jesteśmy zgodni z tym założeniem.

Baza danych OSM rośnie dużo szybciej, niż liczba aktywnych mapowiczów, a chodzi nie tylko o to, by te dane wprowadzić, ale też o zadbanie, by były aktualne.

Chyba trochę przesadzacie z tym jak skomplikowane byłoby aktualizowanie. Co jest złego z takim podejściem:

  1. Bierzemy żródłowe dane sprzed lat i nowe. Wywalamy z nich identyczne adresy (tj. punkty adresowe, które nie zmieniły swojego położenia).
  2. Adresy, których wcześniej nie było i nie ma takich na mapie dodajemy do OSM.
  3. Zmodyfikowane adresy:
    • jeśli od ostaniego importu nie były modyfikowane przez użytkowników, dodajemy na nowo.
    • jeśli było modyfikowane przez użytkowników, zostawiamy na mapie tak jak były.

Rozwiązanie nie jest idealne, ale w prosty sposób pozwala utrzymywać w miarę aktualne adresy.

Trudno mi się z Tobą zgodzić, bo napisałem skrypt do aktualizacji adresów oraz wykonałem już trochę aktualizacji. Natomiast skrypt nie opiera się na różnicach, między tym co było kiedyś (w OSM, w źródle danych), a tym co jest teraz, bo po prostu nie ma dostępu do takich danych. I moim zdaniem - założenie że dostęp do takich danych będzie też jest zbyt silne, chyba że dane źródłowe znalazły by się w bazie OSM, jak proponuje @rmikke.