Przydatne narzędzia software do sklejania i kalibracji map, zdjęć

Witam,

Ostatnio zgłębiałem temat w poszukiwaniu jakiś narzędzi pomocnych przy sklejaniu i kalibracji rastrów Binga ze śladami GPS.
Może komuś się przydadzą te informacje :slight_smile:

GiMeSpace Desktop Extender
Świetny do tworzenia dużych wirtualnych pulpitów i rozszerzania okien przeglądarek do niestandardowych wymiarów typu 32000 x 32000 pikseli.

Mozilla Firefox + wtyczka ScreenGrab
do zrzucania dużych porcji ekranowych z wewnętrznego okna przeglądarki do pliku PNG lub JPG (przewertowałem kilka i screengrab jest niemal perfekcyjny) malutka wtyczka i robi to co trzeba. Firefox w wersji oficjalnej jest tylko 32-bitowy więc jesteśmy ograniczeni do obrazów o pojemności ok. 2 GB, Nie próbowałem nieoficjalnej 64-bit istnieje takowa ale nie wiem skąd wtedy do niej taką wtyczkę 64-bitową do robienia zrzutów ekranowych.

Przetestowałem IE, Opera, Chrome i chyba tylko Firefox daje radę :wink: być może za mało jeszcze przetestowałem.
Tak czy owak kombinacja GiMeSpace + Firefox + ScreenGrab działa całkiem całkiem.

Wskazany Win7, pod WinXP :roll_eyes: prawdopodobnie zabraknie nam zasobów systemowych :smiley: niestety nie sprawdzałem w praktyce jak działa to pod WinXP.

PTGui
Rewelacyjny do sklejania obrazów w całość i tworzenia panoram.
Chyba najlepszy w swojej kategorii. Mnogość opcji i konwersja odwzorowań.
Przed rozpoczęciem pracy polecam w ustawieniach zwiększyć ilość punktów kontrolnych do 100 a podczas ładowania obrazów wybrać długość ogniskowych Normal i 50 mm. Przy sklejaniu prostokątnych obrazów wybieramy podstawową projekcję prostokątną rectangle, przy sklejaniu rastrów z odwzorowań Merkartora Transverse Mercator. Również nawet przede wszystkim może służyć do sklejania obrazów zrobionych aparatem cyfrowym a program automatycznie dostraja użyte ogniskowe na zdjęciach i łączy obrazy w całość itd. itd.
Oczywiście ważne aby obrazy były nakładane na siebie z odpowiednio dużą zakładką.

Quantum GIS i wbudowane narzędzie Georeferencer - oprogramowanie bezpłatne
Super do kalibracji i dopasowywania obrazów rastrowych do siatki odwzorowań, śladów GPS i tworzenia GeoTIFF-ów.
Spory kombajn gis-owy a za pomocą zaszytych narzędzi gdal_translate i gdalwarp uzyskujemy bardzo wysoką jakość przekształceń jak w komercyjnych narzędziach. Narzędzia Georeferencer z biblioteką GDAL pozwalają na bardzo dokładne zestrojenie obrazu rastrowego ze śladem GPS w zadanym odwzorowaniu.

W Quantum GIS polecam taki sposób pracy:

  1. na początek we właściwościach projektu wybieramy układ współrzędnych na jakim będziemy pracować czyli EPSG:3857 (Merkator podstawowe odwzorowanie stosowane przez OpenStreetMap i JOSM) i zaznaczamy opcje “Reprojekcja w locie” aby pobierane współrzędne z obszaru mapy były w tym samym odwzorowaniu w jakim nastąpi kalibracja naszego rastra czyli EPSG:3857 - WGS84 Pseudo Mercator
  2. wczytujemy za pomocą narzędzi Raster → GPS ślady gps danego obszaru pobrane z JOSM i wcześniej wyeksportowane do pliku GPX,
  3. uruchamiamy narzędzie do kalibracji Georeferencer i wczytujemy raster najlepiej w formacie TIFF (działa najszybciej i chyba najpewniej z BMP są jakieś problemy ze współrzędnymi obrazu)
  4. ustawiamy okna tak aby widzieć np. podkład rastrowy po lewej i mapę ze śladami gps w głównym oknie po prawej
  5. dodajemy punkty kontrolne identyfikując je na rastrze i z obszaru mapy. W praktyce dobrze jest wybierać punkty wynikające z przecięcia dokładnych śladów gps lub na prostych gdzie pozycja jest najdokładniejsza, w żadnym wypadku po ostrym łuku, zakrzywieniach, w lesie, wąwozie wszędzie tam gdzie spada dokładność albo powstają odchylenia podczas rejestracji śladów.
  6. uruchamiamy kalibrację podając parametry transformacji
    Rodzaj transformacji - Funkcja sklejana TPS
    Metoda resamplingu - Sześcienna
    Zaznaczamy “Wczytaj po zakończeniu” jeżeli chcemy aby obraz był automatycznie podpięty jaka warstwa w Quantum GIS, uwaga wynikowa warstwa dodawana jest jako pierwsza i zasłoni ślady gps aby zobaczyć na niej ślady gps wystarczy zamienić kolejność warstw.

Wstępnie możemy podać min. czyli 3 punkty do transformacji aby obraz był wpasowany i umiejscowiony zgrubnie do śladów po czym mając już widok rastra i nałożone na nim ślady gps w widoku bardzo dokładnie zestrajać punkty. Jednoczesny widok warstw rastra i na nim śladów gps ułatwia wtedy pracę.

Na koniec otrzymany raster GeoTIFF konwertujemy do bitmapy BMP i importujemy za pomocą wtyczki PicLayer w JOSM, po czym ręczne osadzamy raster na mapie. Niestety JOSM nie obsługuje bezpośrednio GeoTIFF-ów, wtyczka importimage wg. mnie nie działa jak powinna i na dodatek powoduje zawieszanie się i problemy ze stabilnym działaniem aplikacji JOSM.

GeoServer
wirtualny serwer mapowy do składowania podkładów rastrowych i generowania w locie kafelków WMS np. lokalnie w komputerze pozwalający zaoszczędzić nieco pamięć RAM w aplikacji JOSM.

GPSBabel
do przeróbki śladów GPS, polecam z użyciem wiersza poleceń są tam niektóre opcje zupełnie niedostępne z poziomu samej aplikacji.
Przykładem może być naprawa “uszkodzonych” śladów GPS bez znaczników czasu, z którymi mogą mieć problem aplikacje gis-owe.

gpsbabel -w -r -t -i gpx -f “ślad.gpx” -x track,faketime=f20100705200000+2 -x track,pack,sdistance=0.5k -o gpx -F “ślad_popr.gpx”

Takie polecenie spowoduje, że ślad zostanie podzielony na fragmenty w przypadku wykrycia 500m przerw w rejestracji śladów, oraz zostanie zanimizowany czasowo, (brak informacji o prędkości i czasie). Tak utworzone ślady nie spowodują wyświetlania niepotrzebnych prostych linii, łączących poprzedni ślad gps z następnym w jednym ciągu rejestracji lub w wyniku przerwanej rejestracji bądź utraty sygnału gps. Innymi słowy dzieli ślad na odcinki.

Do pracy GPSBabel z wiersza poleceń wystarczy przenieść 2 pliki libexpat.dll i gpsbabel.exe i utworzyć sobie dodatkowy plik wsadowy naprawa.bat najlepiej w tym samym katalogu co ślady gpx.

Gdy trzeba przerobić tysiące śladów gps wystarczy odpowiednia konstrukcja pliku wsadowego np. konwersja.bat
ECHO OFF
CLS
FOR %%F IN (“*.gpx”) DO (
gpsbabel -w -r -t -i gpx -f “%%F” -x track,faketime=f20100705200000+2 -x track,pack,sdistance=0.5k -o gpx -F “%%~nF_popr.gpx”
)
PAUSE

Powyższa pętla FOR wyszukuje wszystkie plik z rozszerzeniem gpx po czym poddaje każdy obróbce poleceniem gpsbabel z parametrami anonimizacji czasu i dzielenia śladów na odcinki.

Na koniec:
No i po co te wszystkie narzędzia :slight_smile:
A na przykład dla tych co nie lubią ciągle przesuwać obrazów rastrowych Binga by dopasowywać się do śladów GPS, a 3-punktowa przybliżona afiniczna kalibracja rastrów za pomocą PicLayer w JOSM nie uwzględnia konwersji pomiędzy odwzorowaniami jak również brak jest prawdziwego wsparcia dla GeoTIFF-ów w JOSM.

Mały hint dla aplikacji JOSM, w przypadku komunikatu “out of memory … 256MB” polecam przydzielić więcej pamięci dla aplikacji Java wystarczy dodać do skrótu wywołania aplikacji parametr (…) javaws.exe -J-Xmx1500M (…) i mamy przydzielone ~1.5 GB pamięci RAM.

Pozdrawiam,
Włodek

Mógł byś zrobić wideo i pokazać to na przykładzie?

Czy w podobny sposób można osadzać w wygodniejszy sposób plany budowlane?

Ja jeszcze bym polecil aplikacje webowe do sklejania / rektyfikacji map i zdjec – mozna potem url tego co sie do nich wgralo wkleic do JOSMa zeby pokazal jako tlo.

Do map – podobne do QuantumGIS georeferencer:
http://mapwarper.net/
oraz
http://warper.geothings.net/

Do zdjec lotniczych (ta aplikacje pokazywalem na spotkaniu w Lodzi):
http://mapknitter.org/

Panowie,
najlepiej zrobic z tego wiki po polsku, co jakis czas pojawiaja sie tego typu pytania a w morzu watow na Forum to potem ucieka.

Do zrobienia lokalnego TMS dla zaoszczędzenia pamięci można posłużyć się narzędziem MapTiler - http://www.maptiler.org/ , dużo prostsze niż postawienie całego GeoServera dla WMS (a i dodać należy, że sam geoserver zużywa pamięci całkiem sporo).

MapTiler faktycznie ciekawy, próbowałem co nieco z tym, tylko chyba na czymś poległem ale powalczę jeszcze :). W chwili obecnej pogram jest jeszcze w wersji rozwojowej beta a niedługo będzie wersja stabilna. Z pewnością mniej komplikacji w MapTiler niż z GeoServerem, a z drugiej strony GeoServer i jego okienkowe GUI całkiem fajnie się obsługuje, posiada też kilka innych ciekawych opcji jak GeoWebCache.

Do kafelkowania rastrów można spróbować wykorzystać oryginalne biblioteki GDAL jak gdaltiles są wersje 64-bitowe i działają w trybie wieloprocesorowym.

Jak najbardziej jeżeli masz jakieś współrzędne na planie (jakieś punkty zaczepienia do osnowy czy zdefiniowany układ współrzędnych tego planu) to nie ma problemu z wpasowaniem. W wolnej chwilce spróbuję przygotować jakieś tutorial video z Georeferencer jak to wygląda w praktyce bo narzędzie jest naprawdę warte uwagi, a niektóre możliwości jakie posiada spotyka się w komercyjnych aplikacjach za kilka tys. :slight_smile:

Dokonując kalibracji rastrów w Georeferencer nieraz przenoszę ustawienia skryptu GDAL (jest specjalna ikonka do tworzenia kodu batch), wklejam kod do pliku wsadowego i uruchamiam z wiersza poleceń pod tym samym narzędziem gdalwarp ale już 64-bitowym w trybie wieloprocesorowym. Taki sposób znacząco przyśpiesza obróbkę rastrów. Samo środowisko Quantum GIS jest 32-bitowe aktualnie i niektóre tam narzędzia nie mają jeszcze wsparcia dla platform wieloprocesorowych i 64-bitowego trybu pracy.

Dzięki, ciekawe propozycje warte również dodania do listy.

Odnośnie ScreenGrab, do zrzucania ekranu można wykorzystać zewnętrzne programy np. ScreenShot Captor lepsze rozwiązanie niż ScreenGrab i niezależne od przeglądarki.

Odnośnie PTGui, do łączenia płaskich obrazów, program stosuje projekcję nawet mając prostokątną projekcję ustawioną, obrazy są zniekształcone. W tej dziedzinie nie znalazłem jak dotąd programu automatycznie sklejającego duże prostokątne powierzchnie obrazów.

Pozdr.
Włodek

Lamerskie pytanie: Co jeśli mam JOSM-a zainstalowanego instalatorem Windows i uruchamiam go plikiem josm.exe, jak dodać parametr zwiększający przydzielaną pamięć? Dodawanie do josm.exe oczywiście nie działa.

Nie wiem czy zadziała ale jest szansa. Utwórz plik josm.l4j.ini w katalogu gdzie masz josm.exe. W treści “-Xmx1500M”. Inne parametry - każdy w osobnej linii.

JOSM ma instalator pod Windows? Zawsze po prostu ściągałem plik jar. I można go wywołać z przydziałem pamięci:
java -Xmx1500m -jar josm-tested.jar

Dzięki wielkie, działa :slight_smile: