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

Z UMP

Wersja z dnia 19:59, 31 mar 2015; ArtiiP (Dyskusja | wkład)
(różn) ← Poprzednia wersja | Aktualna wersja (różn) | Następna wersja → (różn)

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 lub jego graficznego odpowiednika mdm-gui.pl. Teraz nowe ME2 pozwala zmieniać dowolne ekstrasy dla zaznaczonych obiektów. Po zaznaczeniu kilku obiektów tego samego typu (poi/droga) drugi klawisz myszy Modify> Extras > Add... lub Edit...

Zmiana miast bywa jednak wygodniejsza przy użyciu dedykowanych do tego funkcji dostępnych w edytorze, ale silnie zależy od przygotowanego pliku edycyjnego. I tu przydaje się perl czy też mont-demont -idx.

Jak zainstalować i skonfigurować perla w windowsie możesz przeczytać tutaj. Pod uniksem standardowa metoda montowania wykorzystuje perlowy mont-demont-multi2.pl, więc jest OK.

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 (chociaż od czasu pojawienia się graficznej nakładki na mont-demont-multi2.pl - mdm-gui.pl, już nie). 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 oraz mdm-gui.pl mogą 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

4.1) Jeśli używamy mont-demont-multi2.pl, to dodajemy opcję --citydx, która tworząc odpowiedni indeks dla mapedita, umożliwi grupową zmianą przypisania do miast:

wersja windowsowa wygląda tak:

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

a linuksowa tak:

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

a jeśli używasz Makefile, to po prostu tak: (jak edytować w linuksie poczytaj sobie tutaj):

make mont

4.2) W przypadku użycia mdm-gui.pl (jak go używać poczytaj tutaj) zarówno w windowsie jak i linuksie źródła należy zmontować z zaznaczoną opcją: Obsługa indeksu miast.

Po zmontowaniu ź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ę -- czwarta 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. Jeśli czerwony nam nie odpowiada (bo okolice akurat zostały pokolorowane na podobny kolor), to możemy to zmienić w preferencjach ogólnych Mapedita++.

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 lub shift 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ące nas miasto, 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. Miasto trafi na koniec listy i tam należy go szukać, dopiero po ponownym uruchomieniu mapedita lista zostanie posortowana alfabetycznie. W przypadku pojedynczego obiektu możemy też po prostu dopisać w zakładce Extras wpis "Miasto=JakieśNowe". Przy kolejnym zmontowaniu plików źródłowych wpis ten zostanie uwzględniony i mowe miasto pojawi się na liście dostępnych miast.

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

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

(Pod uniksem: "make demont" lub "make clean demont", żeby wcześniej pozbyć się ewentualnych śmieci z poprzedniego cyklu pracy)

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

Po rozmontowaniu ź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 kliknąć na zakładkę Address, i w końcu na trójkącik rozwijający listę miast po prawej stronie pola City). Lista ta nie będzie zawierała wszystkich miast, a jedynie kilka -- takie jak w obiektach znalezionych w najbliższej okolicy. W 99% przypadków wystarczy wówczas kliknąć na pierwsze miasto z listy, bo to będzie to właściwe. Dwuklikanie na kolejnych obiektach otwiera okno Properties na takiej samej zakładce jak poprzednio, więc cała czynność staje się jeszcze prostsza. Co więcej - mamy także do dyspozycji guzik Last, który ustawia takie samo miasto jak ostatnio.

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=. Dzięki temu właśnie możliwe jest hurtowe zmienianie przypisań w mapedicie.

I jeszcze druga rzecz. W systemie Windows 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 (czyli kto?) 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. Polecaną za to rzeczą jest korzystanie z graficznej nakładki montującej mdm-gui.pl (w katalogu narzedzia). Opis jak z tego skorzystać tutaj.

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 nacisnąć strzałkę w górę. Automatycznie pojawi się ostatnie polecenie (jeśli naciśniemy dwukrotnie, to zostanie przywołane przedostatnie itd). Można je wyedytować (np. zmienić --mont na --demont) i dopiero wtedy nacisnąć 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.