Poland/teryt2osm

From OpenStreetMap Wiki
Jump to navigation Jump to search

Opis

teryt2osm to narzędzie mające na celu powiązanie danych z TERYT i z OSM.

Skrypt jeszcze nie jest ukończony ale już potrafi przeprowadzić analizę danych i powiązać co nieco. W szczególności może wskazać miejscowości w OSM które, z powodu zbyt małej ilości danych, nie mogą być dobrze z lokalizowane.

Kod skryptów (Python) jest udostępniony, na licencji GPL na Google code.

Sposób użycia

Pobranie kodu

Aktualne wersje skryptów należy pobrać z repozytorium SVN:

 svn checkout http://teryt2osm.googlecode.com/svn/trunk/ teryt2osm

Nic nie trzeba kompilować. Do działania skryptów potrzebny będzie tylko Python. Najlepiej w wersji 2.6 (ta została użyta do przygotowania teryt2osm).

Pobranie plików z danymi

Najpierw trzeba pobrać dane rejestru TERTY z GUS. Odpowiednie pliki dostępne są pod adresem: http://www.stat.gov.pl/broker/access/prefile/listPreFiles.jspa Należy ściągnąć: TERC.zip, SIMC.zip i WMRODZ.zip i rozpakować je do podkatalogu "data".

Następnie należy pobrać dane OSM dla obszaru polski. Załatwiał to skrypt "download_osm", ale Osmxapi zostało wyłączone po zmianie API. Na szczęście na razie wystarczą nam dane sprzed zmianą, można je pobrać tu: http://www.jajcus.net/teryt2osm/raw_data.osm

Skrypt "download_osm" i tak się przyda — ściągnie on aktualną granicę kraju.

Filtrowanie wejściowych danych OSM

Kolejnym krokiem jest uruchomienie skryptu filter_osm.py. Wybierze on z pliku data/raw_data.osm miejscowości z terenu Polski i pobierze najnowszą wersję ich danych z serwera OSM. Trwa to dość długo, więc można sobie zrobić herbatkę, czy coś.

Jeśli ktoś plik OSM (API 0.6) z _aktualnymi_ danymi miejscowości na terenie Polski uzyskał w inny sposób może go zapisać od razu w data/data.osm i pominąć użycie filter_osm.py

Analiza i konsolidacja danych

Właściwą robotę załatwia skrypt combine.py. Wczytuje dane z GUS i z OSM i kojarzy ze sobą dane miejscowości z obu źródeł. Generuje przy tym masę komunikatów i plików OSM z informacjami co znalazł, albo czego nie znalazł (katalog reports). Ostatecznym wynikiem są pliki osmChange z proponowanymi zmianami w katalogu output/


Wyniki ostatniego przebiegu

Wyniki skryptów uruchomionych przeze mnie umieszczam pod adresem: http://www.jajcus.net/teryt2osm

Raporty

„Raporty” to informacje uzyskane podczas ładowania i dopasowywania danych. Zawierają pliki z komunikatami i pliki OSM z miejscowościami odpowiadającymi danym komunikatom. Gdy to możliwe, dostępne są te pliki i mapy podzielone na województwa.

Uwaga: Plików OSM z tych raportów nie należy importować do OpenStreetMap. Można je sobie załadować do JOSM, żeby obejrzeć

Co z tym robić

Pierwsze, co warto zrobić, to sprawdzić dopasowane miejscowości dla każdego województwa (reports/$wojewodztwo/match.osm). Będzie można wyłapać oczywiste błędy: miejscowości poza obrysem województwa. Błędy te można łatwo poprawić dopisując odpowiednim miejscowościom w OSM is_in:province=*. Przy okazji mapki te pokazują mniej-więcej gdzie leżą granice województwa.

Można obejrzeć inne pliki i np. dopisywać is_in:province=* i is_in:county=* miejscowościom których nie udało się skryptowi jednoznacznie dopasować (reports/ambigous.*). Niestety tego jest w tej chwili trochę za dużo, żeby wszystko ręcznie uzupełnić. Może uda się automatem trochę więcej tego podopasowywać (na podstawie położenia względem już dopasowanych miejscowości).

Uzupełnione dane

Zmiany danych OSM wygenerowane przez teryt2osm są zapisywane w katalogu output/ w postaci plików osmChange. Mogą być one wysłane na serwer OSM przy użyciu skryptu upload.py.

Na razie może niech tylko ja robię importy, jak coś się zepsuje będzie na mnie. Jajcuś 19:29, 24 April 2009 (UTC)