Lewati ke konten
AI Agent
QGIS
Tutorial

Cara Georeferensi Peta atau Gambar di QGIS

Published

Peta topografi USGS San Francisco tahun 1947 yang terbelah dua: di kiri pindaian polos, di kanan peta yang sama sudah digeoreferensi dan ditumpangkan di atas OpenStreetMap, Bay Bridge berlanjut melewati tepi peta, di bawah judul Georeferencing in QGIS.
Lembar San Francisco North 1947, sebelum dan sesudah. Peta: USGS, domain publik. Basemap: kontributor OpenStreetMap.

Untuk melakukan georeferensi peta atau gambar di QGIS, buka Layer > Georeferencer, muat hasil pindaian dengan Open Raster, klik setidaknya empat titik yang bisa Anda kenali dan ketik koordinat aslinya, pilih Polynomial 1 dan CRS target yang terproyeksi di Transformation Settings, lalu tekan Start Georeferencing. QGIS menulis GeoTIFF dan menambahkannya ke proyek Anda.

Menempatkan titik adalah bagian yang mudah. Bagian yang dilewatkan kebanyakan tutorial adalah menilai hasilnya, karena angka yang ditampilkan QGIS bisa nol pada peta yang meleset ratusan meter. Saya melakukan georeferensi pada peta USGS San Francisco tahun 1947 dan mengukur setiap hasil terhadap titik-titik yang tidak pernah dilihat pencocokan yang saya buat. Angka-angka di bawah ini berasal dari pengujian itu.

Jawaban singkat

Input AndaMetodeWaktu atau biaya
Pindaian dengan koordinat tercetak di atasnya (graticule, tanda grid, nilai sudut)Metode 1, ketik nilai tercetakGratis. 8 titik, lalu warp 34 detik pada pindaian 6.888 x 8.933 piksel
Pindaian tanpa koordinat, atau foto petaMetode 1, From Map Canvas pada basemapGratis. Siapkan 10 titik atau lebih
GeoPDF dari USGS atau instansi lainBuka langsung, posisinya sudah benarGratis, nol titik
Titik sudah dibaca, dan Anda ingin pencocokannya diperiksa otomatisMetode 2, agen AI1 pesan, 99 detik dalam pengujian saya
Overlay visual cepat, tanpa butuh akurasiMetode 3, plugin Freehand raster georeferencerPlugin gratis

Sebelum memulai

Anda memerlukan QGIS 3.26 atau lebih baru, yang menaruh Georeferencer di menu Layer. Saya memakai QGIS 3.44.7. Tutorial yang lebih lama mengarahkan Anda ke Raster > Georeferencer, tempat fitur itu berada sebelumnya, sebagai plugin GDAL Georeferencer.

Baca bagian tepi (collar) peta sebelum mengklik apa pun. Bagian itu memberi tahu tiga hal yang akan Anda ketik nanti: sistem koordinat dari nilai tercetak, datum, dan skala. Contoh saya adalah lembar (quadrangle) USGS San Francisco North, CA tahun 1947, pada skala 1:24.000, yang bisa diunduh siapa saja dari topoView. Bagian tepinya bertuliskan "Polyconic projection. 1927 North American datum", dan sudut-sudutnya memuat lintang dan bujur setiap 7'30". Peta sejarah USGS adalah domain publik.

Agar pengujiannya jujur, saya mengambil GeoTIFF USGS sendiri untuk lembar itu dan menghapus georeferensinya, sehingga yang saya muat ke QGIS adalah JPEG polos 9,2 MB berukuran 6.888 x 8.933 piksel. Itu kira-kira 300 dpi, atau 2,03 m di lapangan per piksel. Georeferensi USGS tetap di samping sebagai kunci jawaban.

Di mana sumber-sumber di web keliru

"Semakin rendah RMSE, semakin baik hasilnya." Tidak dengan thin plate spline. Transformasi itu membengkokkan gambar sampai melewati tepat setiap titik, sehingga residualnya selalu nol. Saya sengaja salah mengetik satu lintang, 37°47' alih-alih 37°47'30", lalu menjalankan kedua transformasi pada delapan titik yang sama. Polynomial 1 menunjukkan RMSE 297 m dan menumpukan 762 m di antaranya pada titik yang salah itu. Thin plate spline menunjukkan 0,00 m, dan peta meleset hingga 594 m pada titik yang tidak pernah diberikan padanya.

"Masukkan koordinat dalam WGS 84." Nilai tercetak pada peta AS yang lebih tua sering berupa NAD27, dan bagian tepi peta menyebutkan itu. Di San Francisco, lintang dan bujur yang sama dalam NAD27 dan dalam WGS 84 terpisah 93 m, 92 m di antaranya dari timur ke barat. Jika Anda mengetiknya sebagai EPSG:4326, seluruh lembar akan mendarat satu blok lebih jauh, dengan residual yang tampak sempurna, karena setiap titik bergeser bersama. Di dialog Enter Map Coordinates, atur CRS titik-titiknya sesuai yang disebut bagian tepi peta: EPSG:4267 untuk NAD27.

"Biarkan CRS target dalam satuan derajat." Boleh saja, tetapi penyesuaian affine datar dalam lintang dan bujur tidak cocok dengan cara peta terproyeksi digambar. Dengan delapan titik yang sama, Polynomial 1 menghasilkan RMSE 2,98 m dengan EPSG:4267 sebagai target, dan 0,72 m dengan NAD27 / UTM zone 10N (EPSG:26710). Pilih CRS terproyeksi pada datum peta, dan pencocokan itu juga terbaca dalam meter.

Metode 1: Georeferencer QGIS

Ini adalah alat bawaan dan yang pertama harus dipelajari. Alat ini bekerja untuk pindaian dengan koordinat tercetak maupun tanpa koordinat.

Buka pindaian

Layer > Georeferencer, lalu File > Open Raster dan pilih gambarnya. JPEG, PNG, dan TIFF semuanya bisa.

Tambahkan titik kontrol

Klik Add GCP Point, perbesar, lalu klik titik yang bisa Anda kenali dengan pasti: sudut bingkai peta, persilangan graticule, tanda grid. Dialog Enter Map Coordinates terbuka. Ketik koordinat tercetaknya. Dialog ini menerima derajat, menit, dan detik dengan spasi (-122 25 0), derajat desimal, atau meter terproyeksi. Atur CRS di bawah kolom tersebut ke yang disebut bagian tepi peta.

Atau ambil koordinat dari kanvas peta

Jika pindaian tidak memiliki koordinat, muat basemap di jendela utama QGIS terlebih dahulu (panduan basemap berisi langkah kliknya), lalu tekan From Map Canvas dan klik titik yang sama di sana. QGIS mengisi koordinat dan CRS untuk Anda.

Sebarkan titik-titiknya

Letakkan satu di dekat setiap sudut dan beberapa di tengah. Titik yang mengumpul di satu area hanya menyesuaikan area itu dan membiarkan bagian lembar lainnya bergeser. Saya memakai empat sudut bingkai peta dan empat persilangan graticule di dalamnya.

Atas: Georeferencer diperbesar pada tanda 25 menit di bingkai peta, dengan titik hijau pada tanda tersebut. Bawah: dialog Enter Map Coordinates dengan -122 25 0 dan 37 52 30 diketik dan EPSG:4267 NAD27 dipilih.
Satu klik pada tanda 25' di tepi atas, lalu nilai tercetaknya diketik dalam derajat, menit, dan detik, dalam NAD27.

Setiap titik yang Anda tambahkan tersimpan dalam file .points di sebelah gambar. Simpan file itu: Georeferencer memuatnya sendiri saat Anda membuka pindaian yang sama berikutnya, dan Anda bisa memperbaiki satu titik alih-alih memulai dari awal.

Pilih transformasi

Settings > Transformation Settings berisi pilihan yang paling menentukan. Manual QGIS 3.44 mencantumkan tujuh transformasi, dengan jumlah titik minimum berikut:

TransformasiTitik minimumGunakan untuk
Linear2Pindaian bersih yang hanya butuh pergeseran dan skala. Menulis world file, tanpa warp
Helmert2Sama seperti di atas ditambah rotasi
Polynomial 13Kebanyakan pindaian datar dari peta tercetak. Garis lurus tetap lurus
Projective4Foto peta yang diambil dari sudut miring
Polynomial 26Lembar yang menggulung atau melengkung. Mendistorsi tepi di luar titik Anda
Polynomial 310Sama, lebih kuat. Jarang sepadan
Thin plate spline10 menurut manualPeta yang rusak atau digambar tangan dengan banyak titik. Menyembunyikan kesalahan, lihat di atas

Aturan saya: mulai dengan Polynomial 1. Pindah ke transformasi yang lebih fleksibel hanya jika residualnya menunjukkan pola, seperti semua titik di satu sisi tertarik ke arah yang sama, dan jangan pernah hanya karena angka yang lebih tinggi terlihat lebih buruk.

Dialog Transformation Settings dengan Polynomial 1, CRS target EPSG:26710 NAD27 / UTM zone 10N, file keluaran berakhiran _modified.tif dan resampling Cubic.
Pengaturan yang saya pakai: Polynomial 1, datum peta itu sendiri dalam CRS terproyeksi, resampling cubic agar pindaian lebih halus.

Dua pengaturan pada dialog itu menyelamatkan Anda dari masalah di kemudian hari. Resampling method mengubah tampilan piksel hasil warp: nearest neighbour mempertahankan warna asli, cubic lebih enak dibaca pada pindaian. Selain itu, keluaran tidak terkompresi secara bawaan: JPEG 9,2 MB saya menjadi GeoTIFF 187 MB. Buka Raster creation options dan pilih profil kompresi jika file akan dipindahkan.

Baca residualnya

Setelah Anda memiliki lebih banyak titik daripada yang dibutuhkan transformasi, QGIS menampilkan residual setiap titik di tabel GCP dan galat rata-rata di status bar, keduanya dalam piksel untuk pindaian tanpa koordinat.

Jendela Georeferencer dengan pindaian San Francisco North 1947 dan delapan titik kontrol merah, tabel GCP yang mencantumkan koordinat sumber dan tujuan serta residual antara 0,15 dan 0,46 piksel, dan status bar bertuliskan Transform: Polynomial 1 Mean error: 0.447243.
Delapan titik, Polynomial 1: residual dari 0,15 hingga 0,46 piksel dan galat rata-rata 0,447 piksel, kira-kira 0,9 m di lapangan.

Untuk menilai angka dalam piksel, ubah ke meter dan bandingkan dengan yang bisa dijamin peta itu sendiri.

  1. Meter per piksel. Kalikan penyebut skala dengan ukuran satu piksel pindaian. Pada 300 dpi satu piksel adalah 0,0847 mm, jadi pada peta 1:24.000 satu piksel mencakup 2,03 m. 0,447 piksel saya berarti 0,9 m.
  2. Apa yang bisa dijanjikan peta. US National Map Accuracy Standards mensyaratkan 90 persen titik yang terdefinisi dengan baik pada lembar 1:24.000 berada dalam 1/50 inci, yang oleh USGS disebut 12,2 m. Aturan praktis yang lebih ketat adalah lebar garis yang digambar, 0,2 mm di atas lembar, yang setara 4,8 m pada 1:24.000.
  3. Titik yang tidak pernah dilihat pencocokan. Residual hanya mengatakan bahwa titik-titik saling sepakat. Saya mengeluarkan delapan tanda graticule di sepanjang tepi dari pencocokan dan mengukur di mana hasilnya menempatkannya: meleset rata-rata 1,0 m, paling parah 1,6 m.

Jadi georeferensi menambah galat sekitar satu meter pada peta yang hanya menjanjikan 12 m. Pada lembar lama, hampir selalu peta yang menjadi batasnya, bukan klik Anda.

Start Georeferencing kemudian menulis GeoTIFF dalam 34 detik dan menambahkannya ke proyek. Di atas OpenStreetMap, jalan-jalan tahun 1947 menimpa persis di atas jalan hari ini:

OpenStreetMap Kawasan Marina dan Fort Mason di San Francisco, lalu tampilan yang sama dengan peta USGS 1947 hasil georeferensi pada opasitas 55 persen, Lombard Street dan garis pantainya sejajar (after)
OpenStreetMap Kawasan Marina dan Fort Mason di San Francisco, lalu tampilan yang sama dengan peta USGS 1947 hasil georeferensi pada opasitas 55 persen, Lombard Street dan garis pantainya sejajar (before)
OpenStreetMapPeta 1947
Geser untuk membandingkan
Marina dan Fort Mason, San Francisco. Geser untuk menaruh lembar 1947 di atas peta hari ini.

Gunakan saat: Anda ingin hasil yang bisa dipertanggungjawabkan, dengan residual, file .points, dan GeoTIFF yang bisa dibaca GIS mana pun.

Lewati saat: Anda hanya butuh latar belakang kasar selama beberapa menit. Metode 3 lebih cepat untuk itu.

Metode 2: Titik kontrol diperiksa agen AI

Kami mengembangkan AI Agent, plugin QGIS gratis dengan panel obrolan yang menjalankan langkah-langkah di proyek terbuka Anda. Bagian ini tentang alat kami sendiri. Alat ini memiliki fitur georeferensi yang menerima titik kontrol sebagai pasangan piksel dan koordinat, menyesuaikan salah satu transformasi Georeferencer melalui GDAL, dan mengembalikan residual setiap titik dalam meter yang dinilai terhadap skala peta.

Alat ini juga bisa menempatkan pindaian tanpa titik sama sekali, dengan membaca nama tempatnya dan mencocokkannya dengan peta referensi: peta lama Edinburgh dalam panduan AI Agent mendarat dengan galat median 5,9 m. Cara itu butuh nama yang bisa dibaca, dan lembar yang sangat tua sering gagal. Untuk peta dengan graticule tercetak, titik adalah rute yang lebih pasti, dan membacanya cepat: gambar tanpa koordinat duduk di QGIS dengan kolom piksel sebagai x dan minus baris sebagai y, sehingga status bar menampilkan piksel di bawah kursor Anda. Saya memuat pindaian, mempertahankan salah ketik dari pengujian di atas pada titik 8, dan mengirim satu pesan:

Lakukan georeferensi pada layer sf-north-1947-scan. Ini adalah lembar USGS San Francisco North dari tahun 1947, skala 1:24.000, koordinat dalam NAD27. Saya membaca titik kontrol berikut pada pindaian (kolom piksel, baris → lintang, bujur): 1. 1022, 792 → 37°52'30"N, 122°30'W (sudut barat laut) [...] 8. 4632, 5344 → 37°47'N, 122°25'W. Apakah hasilnya cukup akurat untuk peta skala 1:24.000?

Prosesnya memakan waktu 99 detik, ditampilkan di panel sebagai 14 tindakan. Agen membaca layer, menyesuaikan kedelapan titik dalam Python untuk memeriksanya, menemukan bahwa titik 8 berada 925 m dari posisi yang ditunjukkan barisnya, mengeluarkannya, dan menulis GeoTIFF dari tujuh titik lainnya dalam NAD27 / UTM zone 10N.

Ia bertanya sekali, sebelum menjalankan pemeriksaan Python-nya sendiri. Jawabannya memberikan RMSE 0,73 m dengan maksimum 0,95 m terhadap toleransi 4,8 m, dan menambahkan bahwa ini mengukur kesepakatan antar titik, bukan akurasi mutlak peta.

QGIS dengan peta San Francisco 1947 hasil georeferensi pada opasitas 72 persen di atas OpenStreetMap, dan panel AI Agent di kanan menjelaskan bahwa titik 8 dikeluarkan karena meleset sekitar 925 m, RMS error 0,73 m, dan toleransi 4,8 m.
Satu pesan, 99 detik: salah ketik di titik 8 tertangkap dan dibuang, RMSE 0,73 m pada tujuh titik lainnya, hasilnya di atas basemap.

Saya memeriksa GeoTIFF-nya dengan cara yang sama seperti punya saya, pada delapan tanda tepi yang tidak pernah dilihatnya: meleset rata-rata 1,0 m, paling parah 1,6 m, sama seperti Georeferencer. Bedanya adalah salah ketik itu. Di Georeferencer saya harus menemukannya sendiri di kolom residual, dan dengan thin plate spline saya tidak akan menemukannya sama sekali.

Ia juga meninggalkan titik-titiknya sebagai file .points di sebelah keluaran, sehingga pencocokan yang sama bisa dibuka di Georeferencer jika Anda ingin memindahkan satu titik dengan tangan. Setiap pesan meninggalkan checkpoint di panel, dan satu klik membatalkan seluruh proses. Paket gratis memiliki 10 pesan per bulan tanpa API key dan tanpa kartu.

Gunakan saat: Anda sudah memiliki titik dan ingin pencocokan, pemeriksaan outlier, dan penilaian akhir dalam satu langkah, atau Anda melakukan georeferensi banyak lembar sekaligus.

Lewati saat: peta tidak memiliki nama tempat yang terbaca maupun titik yang bisa Anda baca, seperti sketsa yang digambar tangan. Menempatkan titik secara manual dengan Metode 1 adalah satu-satunya jalan saat itu.

Coba AI Agent gratis di QGIS

Metode 3: Overlay manual dengan plugin

Plugin Freehand raster georeferencer, versi 0.8.3 saat saya membaca dokumentasinya, memungkinkan Anda menjatuhkan gambar di atas peta lalu menggeser, memutar, dan menskalakannya dengan tangan sampai sejajar, seperti yang Anda lakukan di Google Earth. Hasilnya langsung tampil di atas layer-layer Anda yang lain, dan plugin mengekspor gambar beserta world file setelah selesai.

README-nya jelas tentang keterbatasannya: hanya transformasi affine, tanpa rubber sheeting, tanpa residual, dan hanya file BMP, JPEG, PNG, dan TIFF. Anda tidak mendapat angka yang memberi tahu seberapa jauh melesetnya.

Gunakan saat: Anda perlu menaruh denah pindaian secara kasar untuk menelusuri beberapa fitur atau menunjukkan kepada klien di mana lokasi suatu hal dulu.

Lewati saat: ada yang akan mengukur pada hasilnya. Gunakan Metode 1.

Yang perlu diingat

  • Di QGIS 3.26 dan yang lebih baru, alatnya ada di Layer > Georeferencer. Mulailah dengan empat titik yang tersebar baik, Polynomial 1, dan CRS target terproyeksi pada datum peta itu sendiri.
  • RMSE nol tidak membuktikan apa pun: thin plate spline selalu mencapainya, dan dalam pengujian saya, ia melakukannya pada peta yang meleset 594 m.
  • Ubah residual ke meter (piksel x ukuran lapangan satu piksel) dan bandingkan dengan yang dijanjikan peta, 12,2 m untuk lembar USGS 1:24.000.
  • Periksa hasilnya pada titik yang Anda keluarkan dari pencocokan. Punya saya meleset rata-rata 1,0 m pada lembar San Francisco 1947.
  • Ketik titik-titik dalam datum yang disebut bagian tepi peta. NAD27 berjarak 93 m dari WGS 84 di San Francisco, jadi lembar USGS 1947 memakai EPSG:4267.

Pertanyaan yang sering diajukan

Di mana Georeferencer di QGIS?

Di QGIS 3.26 dan yang lebih baru, ia berada di bawah Layer > Georeferencer. Di versi lama, ia berada di Raster > Georeferencer, disediakan oleh plugin GDAL Georeferencer, yang harus diaktifkan di pengelola plugin. Jika tidak ada menu yang menampilkannya, mungkin sebuah plugin atau profil kustomisasi telah mengubah menu Anda.

Berapa banyak titik kontrol yang saya butuhkan?

Minimumnya 2 untuk Linear dan Helmert, 3 untuk Polynomial 1, 4 untuk Projective, 6 untuk Polynomial 2, dan 10 untuk Polynomial 3, dan manual QGIS meminta 10 atau lebih untuk thin plate spline. Dalam praktik, gunakan sekitar dua kali minimum, sebar ke sudut-sudut, dan sisihkan beberapa lagi sebagai titik pemeriksaan. Saya memakai 8 untuk Polynomial 1 dan 8 lagi untuk memeriksa.

Polynomial, Helmert, atau thin plate spline: mana yang mana?

Helmert untuk pindaian bersih dan datar yang hanya butuh rotasi dan penskalaan. Polynomial 1 untuk hampir semua peta tercetak, karena ia juga menyerap sedikit geseran (shear) dari pemindai. Thin plate spline hanya untuk peta yang rusak atau digambar tangan dengan banyak titik bagus, lalu periksa pada titik yang tidak Anda pakai, karena residualnya selalu nol.

Berapa RMSE yang baik?

RMSE yang kecil dibandingkan dengan yang bisa dijamin peta. Ubah ke meter dan bandingkan dengan 0,2 mm dikali penyebut skala (4,8 m pada 1:24.000) atau dengan standar resmi peta (12,2 m untuk lembar USGS 1:24.000). Di bawah satu piksel pada pindaian bersih adalah wajar. Satu titik dengan residual jauh di atas yang lain biasanya salah ketik atau salah klik, bukan peta yang buruk.

Bagaimana cara melakukan georeferensi pada PDF?

Pertama periksa apakah PDF itu sudah tergeoreferensi. Peta topografi USGS dan banyak denah instansi berupa GeoPDF, dan QGIS membukanya langsung pada posisi yang tepat: PDF San Francisco 1947 termuat dengan koordinatnya dan tanpa titik kontrol, dirender oleh GDAL pada 150 dpi kecuali Anda menyetel GDAL_PDF_DPI lebih tinggi. PDF biasa tidak memiliki koordinat: ekspor halamannya ke PNG atau TIFF pada 300 dpi, lalu gunakan Metode 1.

Bagaimana cara melakukan georeferensi pada peta tanpa koordinat?

Gunakan fitur yang tidak berubah sejak peta digambar, seperti persimpangan jalan, jembatan, gereja, dan sudut garis pantai, lalu ambil koordinatnya dengan From Map Canvas pada basemap atau pada orthofoto nasional Anda. Sebarkan 10 atau lebih di seluruh lembar. Perkirakan residual yang lebih besar daripada dengan grid tercetak, karena peta lama dan dunia hari ini tidak lagi sejalan di semua tempat.

Pusat AI QGIS mengumpulkan apa yang bisa dan tidak bisa dilakukan AI di dalam QGIS, dan panduan AI Agent mencakup sisa plugin tersebut. Setelah peta lama terpasang pada posisinya, Anda bisa mengunduh data OpenStreetMap untuk membandingkannya dengan jalan hari ini, mengambil citra Sentinel-2 untuk area yang sama, atau mengubah pindaian menjadi vektor.

Coba AI Agent gratis di QGIS