Jak georeferencjonować mapę lub obraz w QGIS
Published

Aby georeferencjonować mapę lub obraz w QGIS, otwórz Layer > Georeferencer, wczytaj skan przez Open Raster, kliknij co najmniej cztery punkty, które potrafisz zidentyfikować, i wpisz ich rzeczywiste współrzędne, wybierz Polynomial 1 oraz odwzorowany docelowy CRS w Transformation Settings, a następnie naciśnij Start Georeferencing. QGIS zapisuje GeoTIFF i dodaje go do twojego projektu.
Umieszczenie punktów to łatwa część. Część, którą pomija większość poradników, to ocena wyniku, bo liczba, którą pokazuje QGIS, może wynosić zero na mapie przesuniętej o setki metrów. Zgeoreferencjonowałem mapę USGS z 1947 roku przedstawiającą San Francisco i zmierzyłem każdy wynik względem punktów, których dopasowanie nigdy nie widziało. Poniższe liczby pochodzą z tego testu.
Krótka odpowiedź
| Twoje dane wejściowe | Metoda | Czas lub koszt |
|---|---|---|
| Skan ze współrzędnymi nadrukowanymi na nim (siatka geograficzna, znaczniki siatki, wartości w narożnikach) | Metoda 1, wpisz nadrukowane wartości | Bezpłatnie. 8 punktów, a potem 34-sekundowy warp skanu 6,888 x 8,933 px |
| Skan bez współrzędnych albo zdjęcie mapy | Metoda 1, From Map Canvas na podkładzie mapowym | Bezpłatnie. Licz na 10 lub więcej punktów |
| GeoPDF z USGS lub innej agencji | Otwórz go bezpośrednio, jest już umiejscowiony | Bezpłatnie, zero punktów |
| Punkty już odczytane, a chcesz, żeby dopasowanie sprawdził ktoś za ciebie | Metoda 2, agent AI | 1 wiadomość, 99 s w moim teście |
| Szybka nakładka wizualna, bez potrzeby dokładności | Metoda 3, plugin Freehand raster georeferencer | Bezpłatny plugin |
Zanim zaczniesz
Potrzebujesz QGIS 3.26 lub nowszego, w którym Georeferencer znajduje się w menu Layer. Użyłem QGIS 3.44.7. Starsze poradniki odsyłają do Raster > Georeferencer, gdzie narzędzie znajdowało się wcześniej, jako plugin GDAL Georeferencer.
Przeczytaj informacje pozaramkowe mapy, zanim cokolwiek klikniesz. Podają trzy rzeczy, które później wpiszesz: układ współrzędnych nadrukowanych wartości, datum i skalę. Moja próbka to arkusz USGS San Francisco North, CA z 1947 roku, w skali 1:24,000, który każdy może pobrać z topoView. W jego informacji pozaramkowej widnieje "Polyconic projection. 1927 North American datum", a w narożnikach podane są szerokości i długości geograficzne co 7'30". Historyczne mapy USGS są w domenie publicznej.
Aby test był uczciwy, wziąłem własny GeoTIFF USGS tego arkusza i usunąłem z niego georeferencję, więc tym, co wczytałem do QGIS, był zwykły plik JPEG o rozmiarze 9.2 MB i wymiarach 6,888 x 8,933 pikseli. To około 300 dpi, czyli 2.03 m terenu na piksel. Georeferencja USGS została z boku jako klucz odpowiedzi.
Gdzie internet się tu myli
"Im niższe RMSE, tym lepszy wynik." Nie w przypadku thin plate spline. Ta transformacja wygina obraz, aż przejdzie dokładnie przez każdy punkt, więc jej reszty są zawsze zerowe. Celowo wpisałem jedną szerokość geograficzną błędnie, 37°47' zamiast 37°47'30", i uruchomiłem obie transformacje na tych samych ośmiu punktach. Polynomial 1 pokazał RMSE 297 m i umieścił 762 m z tego na błędnym punkcie. Thin plate spline pokazał 0.00 m, a mapa była oddalona nawet o 594 m w punktach, których nie dostała.
"Wprowadź współrzędne w WGS 84." Nadrukowane wartości na starszych mapach amerykańskich to często NAD27 i informacja pozaramkowa to mówi. W San Francisco ta sama szerokość i długość geograficzna w NAD27 i w WGS 84 dzieli 93 m, z czego 92 m w kierunku wschód–zachód. Wpisz je jako EPSG:4326, a cały arkusz wyląduje o przecznicę dalej, z resztami, które wyglądają idealnie, bo wszystkie punkty przesunęły się razem. W oknie dialogowym Enter Map Coordinates ustaw CRS punktów na to, co podaje informacja pozaramkowa: EPSG:4267 dla NAD27.
"Zostaw docelowy CRS w stopniach." Możesz, ale płaskie dopasowanie afiniczne w szerokości i długości geograficznej nie odpowiada temu, jak narysowano mapę w odwzorowaniu. Na tych samych ośmiu punktach Polynomial 1 dał 2.98 m RMSE przy docelowym EPSG:4267 i 0.72 m przy NAD27 / UTM zone 10N (EPSG:26710). Wybierz odwzorowany CRS w datum mapy, a dopasowanie też będzie wyrażone w metrach.
Metoda 1: Georeferencer w QGIS
To wbudowane narzędzie i to, którego warto nauczyć się najpierw. Działa zarówno dla skanów z nadrukowanymi współrzędnymi, jak i bez nich.
Otwórz skan
Layer > Georeferencer, potem File > Open Raster i wybierz obraz. JPEG, PNG i TIFF działają.
Dodaj punkt kontrolny
Kliknij Add GCP Point, przybliż i kliknij miejsce, które potrafisz dokładnie zidentyfikować: narożnik ramki mapy, przecięcie siatki geograficznej, znacznik siatki. Otworzy się okno dialogowe Enter Map Coordinates. Wpisz nadrukowaną współrzędną. Przyjmuje stopnie, minuty i sekundy z odstępami (-122 25 0), stopnie dziesiętne albo metry w odwzorowaniu. Ustaw CRS pod polami na ten, który podaje informacja pozaramkowa.
Albo pobierz współrzędną z kanwy mapy
Gdy skan nie ma współrzędnych, najpierw wczytaj podkład mapowy w głównym oknie QGIS (przewodnik po podkładach mapowych pokazuje kliknięcia), potem naciśnij From Map Canvas i kliknij to samo miejsce na podkładzie. QGIS wypełni współrzędne i CRS za ciebie.
Rozłóż punkty
Umieść po jednym blisko każdego narożnika i kilka w środku. Punkty skupione w jednym obszarze dopasowują ten obszar i pozwalają reszcie arkusza dryfować. Użyłem czterech narożników ramki mapy i czterech przecięć siatki geograficznej wewnątrz niej.

Każdy dodany punkt trafia do pliku .points obok obrazu. Zachowaj go: Georeferencer wczyta go sam przy następnym otwarciu tego samego skanu, a ty możesz poprawić punkt, zamiast zaczynać od nowa.
Wybierz transformację
Settings > Transformation Settings zawiera najważniejszy wybór. Podręcznik QGIS 3.44 wymienia siedem transformacji z takimi minimalnymi liczbami punktów:
| Transformacja | Minimalna liczba punktów | Do czego |
|---|---|---|
| Linear | 2 | Czysty skan, który wymaga tylko przesunięcia i skalowania. Zapisuje world file, bez warp |
| Helmert | 2 | To samo plus obrót |
| Polynomial 1 | 3 | Większość płaskich skanów map drukowanych. Linie proste pozostają proste |
| Projective | 4 | Zdjęcie mapy wykonane pod kątem |
| Polynomial 2 | 6 | Zawinięty lub wygięty arkusz. Zniekształca krawędzie poza twoimi punktami |
| Polynomial 3 | 10 | To samo, mocniej. Rzadko warte zachodu |
| Thin plate spline | 10 według podręcznika | Uszkodzone lub ręcznie rysowane mapy z wieloma punktami. Ukrywa błędy, patrz wyżej |
Moja zasada: zacznij od Polynomial 1. Przechodź na coś bardziej elastycznego tylko wtedy, gdy reszty pokazują wzorzec, na przykład wszystkie punkty po jednej stronie ciągną w tę samą stronę, i nigdy dlatego, że wyższy numer wypadł gorzej.

Dwa ustawienia w tym oknie oszczędzają później kłopotów. Resampling method zmienia wygląd przepróbkowanych pikseli: nearest neighbour zachowuje oryginalne kolory, cubic czyta się lepiej na skanie. A wynik domyślnie nie ma kompresji: mój plik JPEG 9.2 MB stał się GeoTIFF-em 187 MB. Otwórz Raster creation options i wybierz profil kompresji, jeśli plik będzie podróżować.
Odczytaj reszty
Gdy masz więcej punktów, niż wymaga transformacja, QGIS pokazuje resztę każdego punktu w tabeli GCP oraz błąd średni na pasku stanu, oba w pikselach dla skanu bez współrzędnych.

Aby ocenić wartość w pikselach, zamień ją na metry i porównaj z tym, co sama mapa może zaoferować.
- Metry na piksel. Pomnóż mianownik skali przez rozmiar zeskanowanego piksela. Przy 300 dpi jeden piksel to 0.0847 mm, więc na mapie 1:24,000 pokrywa 2.03 m. Moje 0.447 piksela to 0.9 m.
- Co mapa może obiecać. Amerykańskie National Map Accuracy Standards wymagają, aby 90 procent dobrze zdefiniowanych punktów na arkuszu 1:24,000 mieściło się w granicach 1/50 cala, co USGS podaje jako 12.2 m. Bardziej rygorystyczna zasada praktyczna to szerokość narysowanej linii, 0.2 mm na arkuszu, czyli 4.8 m przy 1:24,000.
- Punkty, których dopasowanie nigdy nie widziało. Reszta mówi tylko, że punkty zgadzają się ze sobą. Osiem znaczników siatki geograficznej wzdłuż krawędzi trzymałem poza dopasowaniem i zmierzyłem, gdzie wynik je umieścił: średnio 1.0 m błędu, w najgorszym razie 1.6 m.
Georeferencja dodała więc około metra błędu do mapy, która obiecuje tylko 12 m. Na starym arkuszu ograniczeniem jest prawie zawsze mapa, a nie twoje kliknięcia.
Start Georeferencing zapisał następnie GeoTIFF w 34 sekundy i dodał go do projektu. Na OpenStreetMap ulice z 1947 roku trafiają na dzisiejsze:


Użyj jej, gdy: chcesz wynik, którego możesz bronić, z resztami, plikiem .points i GeoTIFF-em, który odczyta każde GIS.
Pomiń ją, gdy: potrzebujesz tylko zgrubnego tła na kilka minut. Metoda 3 jest do tego szybsza.
Metoda 2: Punkty kontrolne sprawdzone przez agenta AI
Tworzymy AI Agent, bezpłatny plugin do QGIS z panelem czatu, który wykonuje kroki w twoim otwartym projekcie. Ta sekcja dotyczy naszego własnego narzędzia. Ma ono narzędzie do georeferencji, które przyjmuje punkty kontrolne jako pary piksel–współrzędna, dopasowuje jedną z transformacji Georeferencera przez GDAL i zwraca resztę każdego punktu w metrach, ocenianą względem skali mapy.
Potrafi też umiejscowić skan bez żadnych punktów, czytając jego nazwy miejscowe i dopasowując go do map referencyjnych: stara mapa Edynburga w przewodniku po AI Agent trafiła z błędem mediany 5.9 m. To wymaga czytelnych nazw, a bardzo stare arkusze często zawodzą. Dla mapy z nadrukowaną siatką geograficzną punkty są pewniejszą drogą, a ich odczyt jest szybki: obraz bez współrzędnych leży w QGIS z kolumną pikseli jako x i minus wierszem jako y, więc pasek stanu pokazuje piksel pod kursorem. Wczytałem skan, zostawiłem literówkę z powyższego testu w punkcie 8 i wysłałem jedną wiadomość:
Zgeoreferencjonuj layer sf-north-1947-scan. To arkusz USGS San Francisco North z 1947 roku, skala 1:24,000, współrzędne w NAD27. Odczytałem na skanie następujące punkty kontrolne (kolumna piksela, wiersz → szerokość, długość geograficzna): 1. 1022, 792 → 37°52'30"N, 122°30'W (narożnik NW) [...] 8. 4632, 5344 → 37°47'N, 122°25'W. Czy wynik jest wystarczająco dokładny dla mapy 1:24,000?
Uruchomienie zajęło 99 sekund, pokazane w panelu jako 14 akcji. Agent odczytał layer, dopasował osiem punktów w Pythonie, aby je sprawdzić, odkrył, że punkt 8 leżał 925 m od miejsca, w które wskazywał jego wiersz, pominął go i zapisał GeoTIFF z pozostałych siedmiu w NAD27 / UTM zone 10N.
Zapytało raz, przed uruchomieniem własnego sprawdzenia w Pythonie. Jego odpowiedź podała RMSE 0.73 m z maksimum 0.95 m wobec tolerancji 4.8 m i dodała, że mierzy to zgodność między punktami, a nie bezwzględną dokładność mapy.

Sprawdziłem jego GeoTIFF tak samo jak swój, na ośmiu znacznikach na krawędziach, których nigdy nie widział: średnio 1.0 m błędu, w najgorszym razie 1.6 m, tyle samo co Georeferencer. Różnica to literówka. W Georeferencerze musiałbym wypatrzyć ją sam w kolumnie reszt, a przy thin plate spline nie wypatrzyłbym jej wcale.
Zostawiło też punkty jako plik .points obok wyniku, więc to samo dopasowanie otwiera się w Georeferencerze, jeśli chcesz przesunąć punkt ręcznie. Każda wiadomość zostawia punkt kontrolny w panelu, a jedno kliknięcie cofa całe uruchomienie. Bezpłatny plan ma 10 wiadomości miesięcznie, bez klucza API i bez karty.
Użyj jej, gdy: masz punkty i chcesz dopasowanie, sprawdzenie wartości odstających oraz werdykt w jednym kroku, albo georeferencjonujesz arkusze seriami.
Pomiń ją, gdy: mapa nie ma ani czytelnych nazw miejscowych, ani punktów, które możesz odczytać, jak ręcznie rysowany szkic. Ręczne umieszczenie punktów w Metodzie 1 jest wtedy jedyną drogą.
Wypróbuj AI Agent za darmo w QGIS
Metoda 3: Nakładka odręczna z pluginem
Plugin Freehand raster georeferencer, w wersji 0.8.3, gdy czytałem jego dokumentację, pozwala upuścić obraz na mapę i przesuwać, obracać oraz skalować go ręcznie, aż się dopasuje, tak jak w Google Earth. Wynik od razu pokazuje się na wierzchu twoich innych layers, a po zakończeniu plugin eksportuje obraz z plikiem world file.
Jego README jasno mówi o ograniczeniach: tylko transformacje afiniczne, bez rubber sheeting, bez reszt i tylko pliki BMP, JPEG, PNG oraz TIFF. Nie dostajesz żadnej liczby, która mówi, jak bardzo się mylisz.
Użyj jej, gdy: potrzebujesz zgrubnie umiejscowionego zeskanowanego planu, aby obrysować kilka obiektów albo pokazać klientowi, gdzie co było.
Pomiń ją, gdy: ktokolwiek będzie mierzył na wyniku. Użyj Metody 1.
Co zapamiętać
- W QGIS 3.26 i nowszych narzędzie to
Layer > Georeferencer. Zacznij od czterech dobrze rozłożonych punktów, Polynomial 1 i odwzorowanego docelowego CRS w datum mapy. - RMSE równe zero niczego nie dowodzi: thin plate spline zawsze je osiąga, a w moim teście zrobił to na mapie oddalonej o 594 m.
- Przelicz reszty na metry (piksele x rozmiar jednego piksela w terenie) i porównaj je z tym, co obiecuje mapa: 12.2 m dla arkusza USGS 1:24,000.
- Sprawdź wynik na punktach, które zostawiłeś poza dopasowaniem. Moje były średnio 1.0 m błędne na arkuszu San Francisco z 1947 roku.
- Wpisuj punkty w datum, które podaje informacja pozaramkowa. NAD27 leży 93 m od WGS 84 w San Francisco, więc arkusz USGS z 1947 roku przyjmuje EPSG:4267.
Częste pytania
Gdzie jest Georeferencer w QGIS?
W QGIS 3.26 i nowszych znajduje się w Layer > Georeferencer. W starszych wersjach było to Raster > Georeferencer, dostarczane przez plugin GDAL Georeferencer, który trzeba było włączyć w menedżerze pluginów. Jeśli żadne z menu go nie pokazuje, plugin lub profil dostosowania mógł zmienić twoje menu.
Ile punktów kontrolnych potrzebuję?
Minimum to 2 dla Linear i Helmert, 3 dla Polynomial 1, 4 dla Projective, 6 dla Polynomial 2 i 10 dla Polynomial 3, a podręcznik QGIS prosi o 10 lub więcej dla thin plate spline. W praktyce używaj około dwa razy więcej niż minimum, rozłożonych do narożników, i trzymaj kilka dodatkowych jako punkty sprawdzające. Ja użyłem 8 dla Polynomial 1 i jeszcze 8 do sprawdzenia.
Polynomial, Helmert czy thin plate spline: który wybrać?
Helmert dla czystego, płaskiego skanu, który wymaga tylko obrotu i skalowania. Polynomial 1 dla prawie każdej mapy drukowanej, bo pochłania też niewielkie ścięcie ze skanera. Thin plate spline tylko dla uszkodzonej lub ręcznie rysowanej mapy z wieloma dobrymi punktami, a potem sprawdź go na punktach, których nie użyłeś, bo jego reszty są zawsze zerowe.
Co to jest dobre RMSE?
Takie, które jest małe w porównaniu z tym, co mapa może zaoferować. Przelicz je na metry i porównaj z 0.2 mm razy mianownik skali (4.8 m przy 1:24,000) albo z oficjalnym standardem mapy (12.2 m dla arkuszy USGS 1:24,000). Poniżej jednego piksela na czystym skanie to norma. Pojedynczy punkt z resztą znacznie większą od pozostałych to zwykle literówka albo błędne kliknięcie, a nie zła mapa.
Jak zgeoreferencjonować PDF?
Najpierw sprawdź, czy już nim jest. Mapy topograficzne USGS i wiele planów agencji to GeoPDF-y, a QGIS otwiera je na miejscu: PDF San Francisco z 1947 roku wczytał się ze swoimi współrzędnymi i bez punktów kontrolnych, renderowany przez GDAL przy 150 dpi, chyba że ustawisz GDAL_PDF_DPI wyżej. Zwykły PDF nie ma współrzędnych: wyeksportuj stronę do PNG lub TIFF przy 300 dpi, a potem użyj Metody 1.
Jak zgeoreferencjonować mapę bez współrzędnych?
Użyj obiektów, które nie przesunęły się od czasu narysowania mapy, takich jak skrzyżowania dróg, mosty, kościoły i załamania linii brzegowej, i odczytaj ich współrzędne za pomocą From Map Canvas na podkładzie mapowym albo na twojej narodowej ortofotomapie. Rozłóż 10 lub więcej z nich po całym arkuszu. Spodziewaj się większych reszt niż przy nadrukowanej siatce, bo stara mapa i dzisiejszy świat nie wszędzie się już zgadzają.
Centrum AI w QGIS zbiera to, co AI potrafi, a czego nie potrafi w QGIS, a przewodnik po AI Agent opisuje resztę pluginu. Gdy stara mapa jest już na miejscu, możesz pobrać dane OpenStreetMap, aby porównać ją z dzisiejszymi ulicami, ściągnąć obraz Sentinel-2 tego samego obszaru albo zamienić skan na wektory.
, otwórz 

