Popatrzyłem kod źródłowy Spline-drawing-tool – to jakiś koszmar, zdaje mi się, że będzie łatwiej napisać nowy plugin, niż zrobić z tego coś naprawdę korzystnego. Mogę sam zrobić możliwość edytowania linii, ale trzeba mi będzie przepisać prawie wszystko. Realizację pierwszej sugestii z wiki (please change Cursor when spline-mode is activated) już wysłałem na github.
Uwaga, ostatnia wersja building_tools - 31095 - przy włączonej opcji ‘Use address nodes under buildings’ zjada adresy - nie pojawiają się one na obrysie.
Ma znaczne odróżnienie od oryginalnej wtyczki: punkty kontrolowe ustawiają się za pomocą click+drag myszą. Jeśli po prostu kliknąć to zjawi się prosta linia, nie krzywa. Potem linię można edytować z pełnoprawnym undo-redo. Za pomocą Ctrl można przesuwać punkty kontrolowe niezależnie jeden od drugiego. Double click – zakończyć. W nastawieniach można ukazać rozdielność.
TODO:
Zamknięte krzywe
Możliwość usunięcia punktów
Angle snapping
Adaptive subdivision (różna ilość punktów zależnie od krzywizny)
Modeful drawing – zrobić dwa różne tryby dla rysowania i edytowania. Teraz jest tylko Potlach-like interfejs.
Możliwość ustawiać punkty kontrolowe bez click+drag
Trochę nie w temacie, ale słowo plugin i JOSM się zgadza. Czasami lubię sprawdzić, czy mamy POI, którego adres jest na stronie internetowej. Wyrzeźbiłem prostą wtyczkę do Chroma, która odpytuje Nominatima dla zaznaczonej frazy i opala w JOSMie pierwszy wynik. Być może komuś się jeszcze przyda. Jeśli ktoś ma pomysły, czy coś można poprawić to jestem otwarty na propozycje
Może się komuś przyda mimo że podobna funkcjonalność już istnieje we wtyczce bulding_tools. Stworzyłem skrypt który scala adresy. Wystarczy zaznaczyć obrysy np wyszukując w JOSM type:way modified. Do uruchomienia wymaga wtyczki scripting. Można go dostosować do własnych potrzeb i dodatkowych tagów które mogę znajdować się w adresach.
Wtyczka zaznaczająca najszybszą drogę pomiędzy zaznaczonymi punktami (w razie potrzeby drogi są przecinane), wagi można zmieniać w ustawieniach. Przydatne przy tworzeniu różnych relacji. http://vps134914.ovh.net/wyszuk/easy-routes.jar
Proszę o uwagi.
Może jednak lepiej otwierać w OSM, zwykle chce się tylko sprawdzić, a jak ktoś chce coś tam zmienić, to sobie otworzy ulubiony edytor ze strony OSM.
A otwierając od razu w JOSM mocno ograniczasz funkcjonalność wtyczki…
Trochę jestem w kropce, bo wcale nie chcę być królikiem doświadczalnym i wolę używać stabilnej wersji JOSM.
A tu plugin building_tools wymaga nowszej (stabilna: 8491, wymagana: 8549).
Nawet gdybyście mnie zapewnili, że wymagana wersja jest całkiem stabilna, to nie wiem, skąd ją wziąć…
Jak to skąd: https://josm.openstreetmap.de/
Podpowiedź: Latest development version (8601, josm-latest.jar), Ubuntu package repository and other download options. (stosunkowo małym drukiem ).
Hmm, dokopałem się do katalogu z wersjami i tam po 8547 jest 8558. Wymagana minimalna wersja 8549 nie istnieje.
Wiem, czepiam się, będzie działać z każdą nowszą, ale w ogóle pomysł, żeby jakiekolwiek pluginy (poza oficjalnie eksperymentalnymi) wymagały wersji JOSM nowszej, niż tested, wydaje mi się ryzykowny.
Napiszę dokładniej: na głównej stronie JOSM (cytowanej w moim poprzednim poście) masz ostatnią szarą ramkę - josm-latest.jar można kliknąć i zapisać. Jeśli z jakichś powodów nadal nie możesz znaleźć, to wyszukaj na stronie słowo “latest”.
W katalogu z wersjami są tylko wersje, które były publikowane. Publikacja następuje raz dziennie, więc nie każda wersja, która powstała w repozytorium znajdzie się w tym katalogu.
Co do tego, że może się tak zdarzać, że w repozytorium pluginów jest wersja plugin’a, która wymaga wersji nowszej niż tested - to jest naturalne, gdy wprowadzane są zmiany w JOSM-ie, które nie są kompatybilne wstecz i trzeba poprawić plugin. Problem wydaje się na tyle mały, że nie warto chyba przygotowywać armaty by go rozwiązywać.
Z tym się nie zgodzę. Jeśli zmiana w JOSM niekompatybilna wstecz jest jeszcze wyłącznie w wersji testowej, to zabieranie z repozytorium wcześniejszej wersji plugina, działającej w wersji stabilnej, jest przedwczesne.
I problem nie jest mały - chyba, że CHCEMY, żeby JOSM był “nur für ninja”…
Problem jest w mojej opinii dotyka małej liczby użytkowników, bo tylko tych, którzy tego plugina jeszcze nie ściągneli. Ale jeżeli uważasz, patche zawsze mile widzane.
Czyli wszystkich, którzy spróbują zainstalować stabilną wersję i dociągnąć pluginy.
Oraz używających wersji webowej chyba?
Musiałbym się w końcy tej Javy nauczyć…
Ale nie chodzi o jakiś patch do pluginu, tylko o system, dobierający wersję pluginu do wersji JOSM, który by trzymał w repozytorium wcześniejsze wersje pluginów, jeśli tylko są oparte na innej wersji JOSM, niż nowsze ich wersje, a przy ładowaniu pluginów do JOSM - dobierał najnowszą wersję działającą z używaną przez użytkownika wersją JOSM.
Oraz akurat w pluginie , który chcą ściągnąć dokonano zmiany, która wymaga wersji JOSM-latest. A to, moim zdaniem, tak często się nie zdarza
Wszystkie *jary z pluginami są trzymane w SVN-ie, może nie jest to poindeksowane wersją JOSM-a, ale wiele zachodu nie potrzeba, by po WebDAV-ie wyciągnąć starszą wersję plugina. No i nie chodzi tu o patch do pluginu, tylko o patch do JOSM-a, by takie rzeczy obsługiwał. Natomiast wydaje mi się, że to, że nie zostało to jeszcze zrobione wynika z tego, że problem jest dość znikomy w porównaniu do pracy, która jest do wykonania.
Tyle, że o ile jeszcze “SVN” jestem w stanie rozszyfrować, to już przetłumaczenie całości powyższego na “gdzie kliknąć, zeby znaleźć starszą wersję plugina” troszkę mnie przerasta…
By wyciągnąć starszą wersję, musisz użyć klienta SVN, np. typu Tortoise SVN (http://tortoisesvn.net/), albo z linii komend w Linuxie. Możesz sprawdzić listę zmian na pliku i po prostu wyciągnąć starszą wersję.
Zauważyłem nieoczekiwany efekt dodawania addr:postcode do węzłów miejscowości.
Funkcja “Merge address points” z building_tools traktuje taki węzeł jako adresowy i przy przenoszeniu masowo adresów na budynki (np. poprzez Ctrl-A + Merge adress points), gdy pod węzłem miejscowości pechowo jest budynek, następuje przeniesienie węzła na budynek.