Bookmarki

Z UMP

na razie bardzo roboczo - cytaty z tego co napisałem gdzie indziej, żeby nie zgubić.

Spis treści

Co to są bookmarki

Od jakiegoś czasu Mapedit i Mapedit++ ma możliwość dołączania/edycji bookmarków, czyli po naszemu "zakładek", ale to trochę niefortunne tłumaczenie - są one rodzajem POI, ale trochę innym niż "normalne". Definiowane są linijkami typu:

;@BM,comment,newpoi,0,0.000000,19.693170,52.551930,0,25,25,0,"",0,0,0,EndLevel="+3",comment="Placowka",
  

umieszczonymi na końcu pliku mapy, czyli podobnie jak opisy załączników. Bookmarkom można definiować różne typy, a stosownie do typu – także różne pola do edycji. Np. standardowe typy bookmarków pozwalają zaznaczać sobie na mapie znaki ostrzegawcze i radary z ograniczeniem prędkości (osobne pole na wartość) i inne rzeczy. Dzięki przeróbkom ME++ Tomka Babczyńskiego w bookmarkach można także definiować EndLevel respektowany przez MapEdita. Bookmarki widoczne są w warstwie POI (czyli można włączyć/wyłączyć ich widoczność wraz z innymi POI), ale być może już niedługo będą w osobnej warstwie włączane/wyłączane niezależnie od POI.

Tyle tytułem wstępu i objaśnienia co to :) Ważniejsze jest, do czego mogą się przydać.

W uniksowych Makefile różnego rodzaju testy (szukanie ślepych, testy numeracji, itp.) generują wyniki do pliku wynik-x.wpt. Plik taki można wczytać do mapedita, ale można też po jego wygenerowaniu napisać "make bm", co przerobi plik WPT na format bookmarków (w pliku bm.tmp), a następnie ponownie zmontować mapę ("make mont"), aby te bookmarki do niej dołączyć. W ten sposób mamy na mapie zaznaczone miejsca błędów, a podczas edycji mapy i usuwania kolejnych błędów, bookmarki także można sukcesywnie kasować, aby nie wracać do miejsc już poprawionych (chyba że w kolejnej iteracji znów zostaną znalezione tam błędy).

Inne zastosowania poniżej:

Zastosowania

Od jakiegoś czasu eksperymentuję z nimi i przydatne są szczególnie do:

1. Zaznaczania wszelkiego rodzaju błędów.

2. Edycji/poprawiania ślepych i przecięć przez stawianie bojek

3. Weryfikacji POI z zewnętrznych źródeł.

4. Wizualizacji zakazów w postaci znaków zakazu

Poniżej szczegółowy opis poszczególnych zastosowań:

1. Zaznaczanie wszelkiego rodzaju błędów

Nasze "standardowe" skrypty testujące mapy walą błędami do pliku wynik-x.wpt, który sobie można wczytać podczas edycji mapy, dzięki czemu widzimy na mapie chorągiewki w miejscach, gdzie trzeba coś poprawić.

Jeśli mamy wygenerowany wynik-x.wpt z błędami można go przerobić na bookmarki pisząc "make bm", a potem "make mont", żeby bookmarki się wkleiły do mapy. Zalety? - różne błędy wskazywane są w różny sposób (np. czerwone kółko na przecięcia, zielone na ślepe, pomarańczowe na niestyki/niedociągnięcia, niebieski kwadracik na niewpasowane restrykcje, jeszcze inne na błędy numeracji, ślepe jednokierunkowe, niestyki punktów granicznych, itp. itd. Dodatkowo - bookmarki dają się edytować/kasować pojedynczo, więc gdy poprawimy jakiś błąd, można skasować bookmarka i zająć się kolejnym. W przypadku chorągiewek z pliku WPT można co najwyżej włączyć/wyłączyć wszystkie naraz, albo wygenerować je od nowa w kolejnej iteracji, co nie jest zbyt wygodne.

2. Stawianie bojek w miejscach przecięć lub ślepych

Prawy guzik myszy na bookmarku daje nam m.in. opcję "Convert to point", co w przypadku błędów typu nieoznakowane przecięcia lub ślepe daje rewelacyjne narzędzie do generowania bojek. Po kolei: "make mont dead" zmontuje mapę i wygeneruje nam niestyki i ślepe do pliku "wynik-x.wpt", "make bm" przerobi znalezione punkty na bookmarki, "make mont" – ponownie zmontuje mapę wraz z dopiero co wygenerowanymi bookmarkami. Następnie oglądamy mapeditem co gdzie jest nie tak i w razie potrzeby zaznaczamy pojedynczego bookmarka albo kilka naraz (np. kilka ślepych końców) i za pomocą "Convert to point..." zamieniamy je w zielone bojki (albo czerwone – na przecięciach autostrady z wiaduktem). Potem szukamy następnych (przerobione już nie kłują w oczy, bo boookmarki w ich miejscu zniknęły – jeśli w okolicy nie widać żadnych, to zmieniamy widoczny poziom na 2 lub 3 i oddalamy widok mapy szukając kolejnych), na koniec zapisujemy mapę, "make demont" i mamy wszystkie bojki w pliku _nowosci.pnt, skąd wystarczy już tylko przenieść je do właściwego pliku POI-OBSZAR-routing.pnt albo POI-OBSZAR.debug.pnt

Przykładowo – zaznaczamy kilka zielonych bookmarków wskazujących niezamaskowane ślepe końce ulic i naciskamy na jednym z nich prawy guzik myszy:

Grafika:Bookmarks5.png

Po wybraniu opcji "Convert to point..." wybieramy czerwoną lub wielokolorową bojkę. Analogicznie, cztery czerwone kółka bookmarków po prawej stronie to wiadukt autostrady nad torami i prowadzącymi wzdłuż torów drogami, więc znów – zaznaczamy wszystkie cztery, prawy klik i konwersja na POI – tym razem zielone bojki oznaczające wiadukt.

Grafika:Bookmarks4.png

Polecam tę metodę zamiast żmudnego stawiania bojek w miejscach chorągiewek jedna po drugiej.

Korzystając z menu "View / Show Layers Tree" możemy sobie jeszcze bardziej uprościć pracę – po wstępnym sprawdzeniu, że wszystkie bookmarki z widocznego obszaru należy przerobić na bojki ("wszystkie" – rzędu kilkunastu, max. 20-30), wyłączamy widoczność warstw "Polylines" i "Polygons", dzięki czemu zostają tylko POI, w tym bookmarki. Naciskając lewy guzik myszy w jednym miejscu, a puszczając w innym, zaznaczamy wszystkie bookmarki z wyznaczonego tak prostokąta. Kolejne możemy dodać wciskając klawisz Shift i zaznaczając kolejny prostokąt. Przerabiamy zaznaczone bookmarki na bojki, po czym ponownie włączamy widoczność wszystkich warstw.

3. Weryfikacja POI wg zewnętrznych źródeł.

Np. dostajemy listę "wszystkich" bankomatów jakiegoś banku, albo wszystkich stacji benzynowych danej sieci, wszystkich kościołów w okolicy, itp. itd. Część z nich już mamy w UMPie, części nie, a te, które już mamy czasem wymagają uzupełnienia danych adresowych. Znów - najlepiej jest wygenerować bookmarki w miejscu tych nowych POI z zewnętrznego źródła, wczytać do edycji stare i nowe, po czym sukcesywnie weryfikować nowe POI (oznaczone bookmarkami), kasując bookmarki tam, gdzie uporządkowaliśmy dane (kasując jednocześnie stary ALBO nowy punkt), a zostawiając bookmarki tam, gdzie jeszcze coś musimy sprawdzić.

Przykład jak to wygląda, poniżej:

Grafika:Bookmarks1.png

Różne typy bookmarków pokazywane są za pomocą różnych ikon, wyświetlanie na poziomie 3 pozwala je łatwo zlokalizować (bo znikają inne elementy mapy), a po zbliżeniu na konkretne bookmarki możemy je edytować lub przerabiać na POI. A tutaj po zbliżeniu i przejściu na poziom 0:

Grafika:Bookmarks2.png

Zaznaczony niebieskim kółkiem POI jest nowy, z zewnętrznego pliku (podobnie jak drugi zaraz obok), a zielonym - stary. Bookmarki wskazują miejsce nowych POI (na obrazku powyżej zostały nieco przesunięte (ręcznie), żeby się dało odczytać ich opis, bo oryginalnie były 3 w jednym miejscu). W tym konkretnym przypadku stary POI jest w dobrym miejscu, więc albo trzeba skasować nowe POI i bookmarki, albo przesunąć nowe POI w stare miejsce, wykorzystując to, że nowe POI mają uzupełnione dane adresowe (po czym też skasować bookmarki, bo miejsce nie wymaga więcej uwagi).

4. Wizualizacja zakazów w postaci znaków zakazu

Po zmontowaniu mapy i wykonaniu make znaki wszystkie obecne w niej zakazy (restrykcje robione liniami typu 0x19) z pomocą programu netgen są przerabiane na znaki zakazu, które są doklejane do mapy i pozwalaj ą zobaczyć, czy zakazy zrobione przez nas są interpretowane przez netgana/kompilator zgodnie z naszymi zamierzeniami. W ten sposób zrobione bookmarki są tylko wizualizacją -- edytowanie ich na mapie nie ma sensu, jeśli coś jest nie tak, trzeba poprawić zakaz definiowany linią 0x19.

Grafika:Bookmarks-znaki.png

Być może zastosowań będzie więcej – mi się na razie sprawdzają w tych kilku. Wszystkim chętnym polecam spróbowanie i podzielenie się uwagami, ew. dalszą dyskusję na liście ump-devel.

Co jest potrzebne do edycji bookmarków?

Skrypty obsługujące bookmarki na razie są w wersji eksperymentalno-roboczej, głównie pod uniksa (w awk-u) i zintegrowane z Makefile, ale w miarę potrzeb można je będzie zmodyfikować i poprawić.

Więcej na temat edycji POI z bookmarkami napisałem w komentarzu do FS#6698

Pakiet UMP-owy do bookmarków (ikonki i różne typy) można ściągnąć z załącznika do FS#6493

Mapedit++ z edycją bookmarków do ściągnięcia jak zwykle ze strony Wojtka Penara (mapedit++1.0.61.394tb_0otm.zip, a już niedługo mapedit++1.0.61.422tb_0otm.zip)

---

TS, 26.08.2010