Jak przypisać do miejscowości kilka obiektów na raz

Z UMP

Spis treści

Wstęp

Zadaniem opisanych poniżej czynności jest uproszczenie i przyspieszenie procesu przypisania obiektów (ulic lub punktów POI) do miejscowości. Wykorzystywane są do tego narzędzia, dostępne w UMP oraz funkcje programu MapEdit.

Potrzebne narzędzia

Niestety klikane skrypty do montowania i demontowania w windowsie nie są w stanie nam pomóc, dlatego trzeba będzie się zaopatrzyć w perla i korzystać z perlowego skryptu mont-demont-multi2.pl (użytkownicy linuksa czy innych uniksów mogą pominąć tę część). Aby zainstalować perla na windowsie musimy ściągnąć pakiet instalacyjny. Do wykorzystania mamy dwie tzw. dystrybucje perla: perl truskawkowy ([1]), albo aktywny ([2]). Po pobraniu pakietu instalacyjnego i zainstalowaniu na windowsie, można zabrać się za grupową zmianę przypisań do miast.

Montowanie i przypisanie do miast

Montowanie źródeł przy pomocy mont-demont-multi2.pl różni się odrobinę od standardowej metody stosowanej przez większość widnowsiarzy: klikania. Niestety trzeba będzie odrobinę popisać w konsoli, co w systemie ze stajni MS nie należy niestety do przyjemności. Oto co należy zrobić kolejno (użytkownicy uniksów proszę przejść od razu do punktu 4).

1) Otwieramy konsolę:

menu start->uruchom->cmd

2) Przechodzimy do katalogu w którym znajdują się źródła

cd c:\sciezka\do\zrodel

3) Ustawiamy zmienną wskazującą położenie źródeł:

set cvs=c:\sciezka\do\zrodel

4) Montujemy źródła z opcją --citydx, która tworząc odpowiedni indeks dla mapedita, umożliwy grupową zmianą przypisania do miast:

perl ..\narzedzia\mont-demont-multi2.pl --mont --cities --extratypes --cityidx UMP-Obszar

Pod uniksem piszemy po prostu "make mont", co montuje źródła ze wszystkimi wspomnianymi opcjami. Po zamontowaniu źródeł otwieramy utworzony plik 'wynik.mp' w mapedicie, powiększamy interesujący nas obszar, po czym włączamy tryb podświetlania adresu:

View->Highlight Addresses

oraz wyłączamy podświetlanie klas dróg:

View->Highlight Road Classes

W Mapedit++ jest jeszcze prościej -- na Toolbarze mamy do tego specjalną ikonkę -- 4 na lewo od ikonki "G": Możemy wybrać pomiędzy "Type driven" (zwykłe wyświetlanie), "Road Classes", a "Addresses".

Grafika:mapedit-kolory.gif

W tym momencie naszym oczom powinny się ukazać drogi i punkty poi podświetlone różnymi kolorami, przy czym drogi należące do tej samej miejscowości powinny mieć ten sam kolor. Dla punktów kolory mogą być różne, bo w ich przypadku brany jest pod uwagę cały adres (jednakowy kolor powinny mieć punkty z tej samej ulicy). Domyślnie zarówno punkty, jak i drogi które nie są przypisane do żadnej miejscowości są koloru czerwonego i bardzo łatwo je wyłapać w gąszczu innych barw.

Aby zmienić przypisanie do miejscowości dla kilku obiektów naraz, należy przejść do trybu wyboru obiektów (Tools->Select objects, albo skrót s na klawiaturze), trzymając wciśnięty klawisz ctrl zaznaczyć więcej niż jeden obiekt naraz, po czym kliknąć prawym klawiszem na jednym z zaznaczonych obiektów i wybrać Modify->Postal address->city. Po kliknięciu na city naszym oczom ukaże się lista wszystkich dostępnych miejscowości. Wybieramy interesującą nas mieścinę, klikamy OK i gotowe. Drogi i punkty na ekranie powinny zmienić teraz swój kolor, co oznacza że zostały przypisane do nowego miejsca. Dla punktów poi możemy w ten sam sposób zmienić nie tylko miasto ale i ulicę.

W przypadku gdy szukanej przez nas miejscowości nie ma jeszcze na liście, trzeba ją do niej dodać. W mapedicie klikamy tools->edit postal address items, a następnie gdy otworzy nam się okno dialogowe klikamy Add, wpisujemy nazwę miejscowości i klikamy OK.

Po zakończeniu edycji i zapisaniu zmian należy odmontować źródła poleceniem :

perl ..\narzedzia\mont-demont-multi2.pl --demont --cities --extratypes --cityidx UMP-Obszar

(Pod uniksem: "make demont")

Uwaga! Przy odmontowaniu opcja --cityidx jest niezbędna, inaczej dostaniemy ogromną ilość plików.

Po odmontowaniu źródeł sprawdzamy czy w plikach diff wszystko jest zgodnie z naszą intencją, nakładamy łatki i wysyłamy zmiany na serwer.

Zmiany dla pojedynczych obiektów

Jeśli w jakimś miejscu trzeba zmienić wpis dla max. 1-2 obiektów, to zamiast wybierać te obiekty i klikać Modify->Postal Address, wygodniej jest zrobić dwuklik na obiekcie (otworzy się okienko Properties obiektu), następnie klikamy na zakładkę Address, i w końcu na trójkącik rozwijający listę miast po prawej stronie od pola City), a ta lista nie będzie zawierała wszystkich miast, a jedynie kilka -- takie jak w obiektach znalezionych w najbliższej okolicy. Więc w 99% przypadków wystarczy wówczas kliknąć na pierwsze miasto z listy, bo to będzie to właściwe.

Zakończenie

Na zakończenie warto wspomnieć o tym, że opcja --cityidx ma w skrypcie mont-demont-multi2.pl priorytet nad wpisem Miasto=. W przypadku gdy zamontujemy źródła z tym parametrem, należy zmieniać przypisania do miast tylko i wyłącznie poprzez mechanizm opisany powyżej. Nowym obiektom można wprawdzie dodawać także wpisy Miasto= i to zadziała, ale w wypadku konfliktu (tzn. gdy wartość wpisu Miasto= jest niezgodna z CityIdx= wybranym "graficznie"), brana jest pod uwagę wartość z Mapedita, a nie z Miasto=.

I jeszcze druga rzecz. Zamiast mozolnie montować źródła w konsoli można kliknąć na mont-demont.perl.bat (dostępny w każdym UMP-cośtam), który montuje źródła domyślnie z opcją --cityidx. Po zamknięciu mapedita rozmontowanie następuje również z tą opcją i tak jak w przypadku ręcznej roboty, dostajemy pliki diff. Ja tej opcji montowania nie zalecam bo po pierwsze u mnie nie działa to klikanie, a po drugie konsola jest zamykana natychmiast po odmontowaniu i nie mam możliwości zobaczenia co się zmieniło. Ale jeśli u kogoś to działa i inne rzeczy mu nie przeszkadzają, może sobie klikać do woli.

No i wreszcie trzecia przydatna informacja. Konsola windowsowa (cmd) obsługuje (kulawo bo kulawo, ale jednak zawsze) historię poleceń. Aby nie wpisywać z każdym razem: perl ..\narzedzia\.... wystarczy wcisnąć strzałkę w górę. Automatycznie pojawi się ostatnie polecenie (jeśli wciśniemy dwukrotnie to zostanie przywołane przedostatnie itd). Można go wyedytować (np. zmienić --mont na --demont) i dopiero wtedy wcisnąć enter. Strzałka w dół przechodzi do następnego polecenia w historii. W ten sposób można sobie chociaż odrobinę uprzyjemnić pracę z konsolą.

PW

Warto dodać że mont-demont.bat -idx oferuje podobne możliwości.