Jak zrobić lepsze śledzenie ostatnich zmian

Sporym problemem na OSM jest brak dobrego sposobu na śledzenie zmian.

  • zakładka historia na stronie głównej jest wprost beznadziejna dzięki osobom w jednej edycji zmieniających dane w Gdańsku i Sydney
  • http://owl.apis.dev.openstreetmap.org/ było udane ale z uwagi na brak kasy/chęci na lepszy serwer obecnie nie nadaje się do czegokolwiek ( https://github.com/ppawel/openstreetmap-website/issues/35 ). Brak też możliwości filtrowania edycji (np. kogoś interesują tylko zmiany granic administracyjnych)
  • OSMZmiany - lepiej sobie radzi z wykrywaniem zmian ale każdą trzeba analizować osobno, nie obsługuje też zmian w większej skali czasowej
  • inne znane mi metody umożliwiają analizę edycji, ale nie ich wykrycie

Mój pomysł to wstępny prototyp ale działa.

Potrzeba metody do generowania mapy obserwowanego terenu, która uwzględnia dane które chce się obserwować, najprościej jest zrobić w Maperitive (moja, dane rowerowe: https://github.com/mkoniecz/bicycle_map_of_Krakow )

Samo przeglądanie zmian wygląda tak:

  1. Wygenerowanie obrazka z aktualnych danych (przykład: https://github.com/mkoniecz/bicycle_map_of_Krakow/blob/ac111cc258f2fa650fe7d23c21a9d2e734efba85/Maperitive/Scripts/debug_image.mscript )
  2. Wygenerowanie później obrazka z aktualnych danych, do porównania ze starym
  3. Automatyczne porównanie nowej i starej mapy, znalezienie miejsc gdzie nie są identyczne, podzielenie miejsc na osobne obszary (prosty i powolny ale działający algorytm w https://github.com/mkoniecz/bicycle_map_of_Krakow/blob/ac111cc258f2fa650fe7d23c21a9d2e734efba85/diff/diff.py )
  4. Przejrzenie zmian Mój program produkuje dla każdego obszaru:
  • jak było
  • jak jest
  • gdzie są różnice
  1. Usunięcie starej mapy, pozostawienie nowej do porównania z nowymi danymi ( https://github.com/mkoniecz/bicycle_map_of_Krakow/blob/ac111cc258f2fa650fe7d23c21a9d2e734efba85/diff/accept.rb )

Mój prototyp na razie nie nadaje się do łatwego wykorzystania (samo zainstalowanie Pythona na Windowsie jest dość kłopotliwe) ale pomysł wydaje mi się być ciekawy i godny przystosowania do wykorzystania przez typowego edytora OSM.

Luźna myśl: teoretycznie (w praktyce różnie może się okazać, a nie mam w tej chwili jak sprawdzić) nie łatwiej byłoby porównywać dwa SVG wykonane przez Maperitive? Na szybko nawet znalazłem narzędzie, któe może się przydać do tego: https://github.com/jrsmith3/diffsvg

edycja: A jeśli koniecznie musisz lub chcesz operować na rastrach, to rsvg przerobi diffowego i źródłowe SVG na PNG.

Do śledzenia zmian całościowo na danym terenie jeszcze to jest fajne: http://forum.openstreetmap.org/viewtopic.php?id=26533