JOSM - różne sprawy, porady

Sporo niewiadomych w JOSM więc należałoby wydzielić wątek do porad.

Podtytuł: Zdublowane obiekty
Często mi się wiesza JOSM.
JOSM tworzy zawsze kopie bezpieczeństwa co 120-150 s (można zmienić), toteż w 95% daje się przywrócić stracone dane przy nowym otwarciu.
Ja dodatkowo zwiększyłem o jedną kopię bezpieczeństwa toteż po wznowieniu JOSM przywraca mi 3 warstwy danych.
Teraz pytanie jak te warstwy łączyć?
Często bowiem widzę, że po awariach mam wysłane zdublowne, a nawet 3-4 razy powielone te same obiekty i potem żmudna dłubanina aby to wykasować.
Nie doszedłem kiedy tworzą się duble.
Zauważyłem że nie wolno przerywać wysyłki, bo potem np. są konflikty.

Można połączyć warstwy, albo wyrzucić starsze, jeśli najnowsza warstwa się otwiera.
Wczoraj jednak najświeższa warstwa miała mniej danych niż starsze, więc już nie będę tak machinalnie kasował starych warstw.
Łączenie warstw może choć rzadko skończyć się konfliktami.

Pytanie brzmi czy łącząc warstwy mnożymy byty obiektów choć mają takie same geopołożenie?
Czy nie łącząc ale nie odznaczając starszych warstw przed wysłaniem one wysyłają się jedna po drugiej czyli obiekty się powielają?

Zabierasz się do problemu ze złej strony. JOSM nie ma prawa wieszać się często. Postaraj się w najbliższym czasie uruchamiać go z wiersza poleceń (uruchamiasz wiersz poleceń (to czarne okienko), zmieniasz ścieżkę na katalog zawierający plik josm-tested.jar (komendą cd), a potem już tylko java -jar josm-tested.jar). Jak się josm wywali, to przeglądasz to czarne okienko tekstowe co mu się stało, że się wywalił (i szukasz w google dziwnej linijki lub pytasz tutaj). Można też spróbować uruchomić josm poleceniem java -jar josm-tested.jar > log.txt, ale nie jestem 100% pewien, czy to działa pod windowsem - jeśli tak, to wszystkie komunikaty josma z czarnego okienka powinny być w pliku log.txt - łatwiej jest wtedy je przeglądać). Mi osobiście nigdy josm się nie wywalił.

Jeśli musisz odzyskać dane po wywaleniu i użyć do tego kilku kopii, to połącz warstwy. W trakcie wysyłania josm zwraca ostrzeżenie o błędach. Nie ignoruj go, tylko daj anuluj i przejrzyj okienko “wyniki sprawdzania” - powinno już się samo otworzyć. Będzie tam m.in. lista zdublowanych obiektów, można je z niej dość łatwo wybierać, oglądać i usuwać. Warto też przejrzeć pozostałe błędy, gdyż większość z nich sami zrobiliśmy i rzeczywiście są błędami (inaczej jest, jeśli ręcznie przeprowadzimy sprawdzenie danych - wtedy josm sprawdza całą warstwę, a nie tylko to, co było edytowane). Należy przejrzeć również ostrzeżenia (np. budynek - niezamknięta droga, etc.) - niektóre z nich rzeczywiście należy poprawić, innych poprawić nie umiemy (brak nazwy dla ulicy, dla której nazwy nie ma lub jej nie znamy), inne są dla nas niezrozumiałe, lub uznajemy je za niepotrzebne (ostatnio josm płacze o ustawianie wersji dla tagowania relacji transportu - ja to ignoruję). Gdyby wszyscy to robili, to OSM Inspector (http://tools.geofabrik.de/osmi/) byłby właściwie niepotrzebny.

Ponieważ jest to “poradnik”, to dopiszę jeszcze jedną radę: zamiast używać klawisza “q” po narysowaniu budynku, lepiej jest użyć “a” po narysowaniu pierwszej “ściany”, przy czym najlepiej jest zaczynać od najdłuższej “ściany” budynku. W trakcie rysowania “a” włącza i wyłącza przyciąganie do kątów oraz “prowadnice” - można tak łatwiej rysować budynki o trochę bardziej skomplikowanych kształtach.

Jednak informacji o wieszaniu się JOSMa jest w necie pełno a i na naszym forum były porady jak problem zmniejszyć.
Mam tylko 1 GB RAMu, a JOSM źle zarządza pamięcią.
Wystarczy odpalić kilka WMSów, ściągnąć większy obszar z danymi lub zrobić changeseta na kilka tysięcy nodów i zaczyna się mulenie, szczególnie jeśli kilka tych okoliczności jest spełnionych.

Zatem jeśli wyśle i sprawdzę, że są duble, czy sprawdzę przed wysłaniem to i tak ta sama dłubanina w panelu sprawdzania błędów?
Liczyłem na na odpowiedź, że w trakcie łączenie kilku warstw JOSM sam usuwa duble.
Można by wysłać najpierw najstarszą warstwę a potem użyć np funkcji Aktualizuj dla nowszej warstwy, która zdaje się duble usuwa?
To zdaje się działa choć bywają konflikty i trzeba by się nauczyć jak je rozwiązywać.
Trochę wydaje się głupawy JOSM skoro wystarczy zwykle przepychać nowszą wersję no ale może te konflikty to to co JOSM stracił bezpowrotnie z najnowszej warstwy na skutek zwiecha, np. nody ręcznie wykasowane.
Wydawałoby się, że nod o tej samej pozycji lub zmienionej, jeśli ma świeższy czas to powinien zastąpić stary bez konfliktu.
Cuda się jednak dzieją, bo nod z nowszej warstwy nie ma jeszcze zwykle ID więc JOSM nie ma co porównywać.

Dużo tych dubli kasuję po innych więc problem jet częsty nie tylko u mnie.
Może to nie dzieje się przy zwiechu.
Kiedyś było tak że jak się wysłało do API dane i nakazało JOSMowi się uruchomić ponownie to on ściągał ten sam obszar ale jeszcze bez niedawno wysłanych danych.
Gdy się zorientowałem w brakach i dociągałem, to bywało że dopiero 3 dociągnięcie obszaru ściągało ostatnio dodane dane.
Może ten byk API ma wpływ na duble w momencie gdy otwieramy lokalnie zapisanego changeseta?
Jak dotąd nie udało mi się stwierdzić kiedy się one tworzą.
Jakim cudem są 4 obiekty skoro ja mam maksymalnie 3 warstwy?
Chyba zacznę eksperymenty z ręcznym wyłączaniem JOSMa z utratą danych na niewielkiej ilości danych i będę szukał momentów tworzenia się dubli.
Skoro są wysyłane 3 niepołączone warstwy to dlaczego są tylko 2 obiekty?

A w praktyce jeśli JOSM zwalnia to się wysyła dane zanim się zwiesi, więc to nie pora na grzebaniu przed wysyłką aby sprawdzić czy obiekty są powielone.

Widzę dla Ciebie dwa wyjścia:

  1. Droższe - dokupić ramu. Tak ze 40 giga. To nie żart. Sprawdź sobie ile Twój “doskonały” system już teraz zarezerwował na “plik wymiany”.
  2. Tańsze - zmienić system operacyjny na linux i dać mu tak ze 2 giga swapu. Możesz spróbować ściągając jakąś dystrybucję live z javą ale bez wodotrysków. Być może puppy linux wystarczy, tylko pewnie trzeba będzie doinstalować javę. I oczywiście dociągnąć josma.

I czytaj ze zrozumieniem - jeśli JOSM się wiesza, to ma do tego jakiś powód. Zamiast leczyć objawy lepiej jest wyeliminować przyczyny. W najgorszym razie będziesz musiał zgłosić błąd josma i poczekać na jego naprawienie. To co chcesz robić teraz jest totalnie bez sensu. A może wystarczy, jeśli będziesz wysyłał zmiany co kilkadziesiąt minut, wyłączał josma i włączał od nowa?

Sam sobie odpowiedziałeś. Każdy DBMS rozpoznaje obiekty po kluczu głównym, a nim jest ID.

Jeszcze tylko pytanie - gdy pobierasz ręcznie jakiś obszar mapy, to masz zaznaczone “Pobierz jako nową warstwę”? Jeśli tak, to odznacz i normalnie wyłącz josma (żeby to na pewno zapamiętał), zobaczymy, co będzie dalej… :P.

Jak nie podasz wprost rozmiaru pamięci dla javy, to pewnie JOSM dostaje niewiele, np. 256MB. Zamiast kombinować z systemami czy sprzętem, ja bym zaczął od opcji -Xmx, np. spróbuj wywołać JOSM z linii komend w taki sposób:

java -Xmx500m -jar josm-tested.jar

I ewentualnie zwiększać wielkość, np spróbować -Xmx800m. Możesz zrobić plik *.bat z powyższym tekstem i uruchamiać go przez kliknięcie. Oczywiście plik josm-tested.jar powinien siedzieć obok.

Użycie pamięci przez JOSM możesz sprawdzić przez menu Pomoc → Pokaż raport konfiguracji.

Można powiedzieć, że dość intensywnie korzystam z JOSM i nie zawiesił mi się ani razu (Win 7/8).

Co zaś do 1GB RAM, działanie jest proste > kierunek sklep.

Ok ruszyło z pliku bat
Memory Usage: 81 MB / 483 MB (37 MB allocated, but free)
Ale co zrobić aby uruchamiała się najnowsza wersja, a nie 6502, bo wtyczki nie działają?

Otwiera się prawidłowo ze ścieżki
C:\WINDOWS\system32\javaws.exe -localfile -J-Djnlp.application.href=JOSM “C:\Documents and Settings\Zibi\Ustawienia lokalne\Dane aplikacji\Sun\Java\Deployment\cache\6.0\21\73111055-6704fd0e”

Aktualną wersję josm-tested.jar można ściągnąć stąd:
https://josm.openstreetmap.de/

Być może konfiguracja jest niezależna od wersji jnlp i trzeba osobno zainstalować wtyczki? Nie wiem, nigdy nie używałem wersji jnlp.

Dzięki. Bałem się kombinować, by nie stracić WMS-ów i ustawień wtyczek.
Rzeczywiście wystarczyło podmienić tylko josm-tested.jar i wywaliło tylko stary walidador.
Na razie parę godzin chodził nawet na changesetach 6000 nodów i nie było zwiechów ani zwolnień.
Jakieś zwolnienia były, bo teraz dyski trochę dłużej mielą na skutek przesuwania danych między pamięcią wirtualną, ale nie ma to związku z zapychaniem się JOSMa.
Tenże niebezpiecznie zaczął używać do 480MB ale skoro wcześniej zwieszał się przy 340 MB choć miał zadeklarowane 256MB to choć ustawiłem teraz 500 MB w Xmx liczę, że jest jeszcze spory zapas. Jeśli będzie zużywał więcej pamięci to za twoją radą zwiększę ponad 500 MB.
Zatem ten wątek zapewne przyda się wielu, bo JOSM się wielu zwieszał, a ostatnio przybyło nam WMS-ów co ma znaczny wpływ na zużycie pamięci, więc problem mógł narastać.
Na koniec pytanie , bo koledzy przyznawali się że chodzę na laptopach gdzie nie mają nawet 0,5-1 GB RAMu , czy komputer pójdzie jeśli Xmx nada większą wartość niż pojemność RAMu, lub zarezerwuje większą jego część?

opcja Xmx ustawia ile java może wziąć maksymalnie z dostępnej pamięci. Komputer pójdzie. Jeśli pamięć się naprawdę skończy, to JOSM nie dostanie więcej, choćby chciał i ustawienie -Xmx mu na to pozwalało. ALE: jeśli jednak jakikolwiek program weźmie tej pamięci zbyt dużo (na tyle dużo, że większość operacji będzie wymagała częstego użycia pamięci swap (w windows - pliku wymiany?)), to zwyczajnie nie da się pracować (można wtedy obejrzeć np. w jakiej kolejności odświeża się okno programu - belka, potem przyciski po kolei… a może jednak inaczej… :D. Pod windows istnieje duże niebezpieczeństwo takiej sytuacji, bo o ile nic się w tej kwestii nie zmieniło, to domyślnie to system decyduje o wielkości pamięci swap zwiększając ją w razie potrzeby - również ponad miarę.

Pod Windows ustawia się rozmiar pliku swap dla każdej partycji osobno. Jest też opcja, żeby to pozostawić do dyspozycji systemu, co nie jest takie złe, bo raz powiększony swap już nie maleje.

Z drugiej strony pamięć jest relatywnie tania. W przypadku starszych komputerów warto zajrzeć na Allegro.

Instalacja skryptu QA Tool w JOSM
http://wiki.openstreetmap.org/wiki/Pl:Quality_Assurance_Tools_script/Installation

Czasami (w tym dzisiaj, z godzinę temu), wyskakuje mi poniższy komunikat przy próbie pobrania lub wysłania danych w JOSM.


Failed to open a connection to the remote server 'https://api.openstreetmap.org/api/0.6/map?bbox=(współrzędne)'.
Host name 'api.openstreetmap.org' could not be resolved. Please check the API URL in your preferences
and your internet connection.

Po kilku/kilkunastu próbach zazwyczaj w końcu się udaje, ale to jest irytujące. Miewacie czasem taki problem? Bo może to jest jakiś problem z DNSami po stronie mojego dostawcy internetu czy coś, ale z drugiej strony nie zauważyłem, żeby w tym czasie ogólnie nawalał dostęp do stron www.

to zmień sobie serwery dns na 8.8.8.8 i zapasowy 8.8.4.4 czyli DNS google i zobacz czy sytuacja się powtarza

Gdzie właściwie miałbym te zmiany wprowadzić?

W ustawienia sieciowych komputera. W przypadku Windows będą to ustawienia karty sieciowej.

Ok czaję. Poczekam do następnego razu gdy będzie grymasić i zmienię te ustawienia.

Dzięki!

Jak zwiększyć liczbę ostatnio uzywanych tagów w JOSM? Chodzi mi o listę pokazującą się gdy wciskamy alt+a, ukazuje się wtedy nam lista kilku ostatnio używanych tagów, jak zwiększyć tę listę do powiedzmy 10 pozycji?

Prawdopodobnie odpowiada za to zmienna:

properties.recenty-added-tags

(w ustawieniach zaawansowanych JOSM)

Lub prawym przyciskiem myszy na liście i pojawi się stosowne menu.