Lewati ke konten
QGIS
Tutorial
GeoAI

Raster ke Vektor di QGIS: Setiap Metode, dan Kapan Masing-masing Berfungsi

Tiga panel: raster tutupan lahan yang digambar sebagai grid piksel berwarna, batas yang sama ditelusuri oleh polygonize sebagai tangga, lalu batas yang sama sebagai garis hijau halus setelah dissolve, filter area, simplify, dan smooth.
Tiga panel: raster tutupan lahan yang digambar sebagai grid piksel berwarna, batas yang sama ditelusuri oleh polygonize sebagai tangga, lalu batas yang sama sebagai garis hijau halus setelah dissolve, filter area, simplify, dan smooth.

Untuk mengonversi raster menjadi poligon vektor di , buka Raster > Conversion > Polygonize (Raster to Vector), pilih band Anda, beri nama field output, lalu jalankan. Anda akan mendapatkan satu poligon untuk setiap kelompok piksel terhubung yang memiliki nilai sama, dengan nilai tersebut ditulis ke tabel atribut. Ini adalah jawaban yang tepat untuk raster terklasifikasi dan jawaban yang salah untuk foto. Sebagian besar masalah yang ditemui orang muncul karena mereka tidak mengetahui jenis raster yang dimiliki.

Kami membuat plugin QGIS di TerraLab bernama AI Segmentation. Plugin ini adalah satu baris dalam tabel terakhir di halaman ini, dan dijelaskan seperti yang lainnya.

Apa arti raster ke vektor

Raster adalah grid piksel. Vektor adalah sekumpulan titik, garis, dan poligon dengan koordinat serta atribut. Mengonversi salah satunya ke yang lain berarti menentukan letak batas, dan grid piksel tidak memiliki batas sendiri selain tepi sel-selnya.

Setiap metode di bawah ini hanya berbeda dalam hal yang dianggapnya sebagai tepi. Polygonize menggunakan setiap tempat dua piksel bertetangga memiliki nilai berbeda, contour menggunakan ketinggian yang dipilih, dan model segmentasi menggunakan tempat sebuah objek berakhir. Itulah sebabnya hanya metode terakhir yang bekerja pada foto.

Pilih metode Anda

Yang Anda milikiMetode yang berfungsiBiayanya
Raster terklasifikasi atau tematik (tutupan lahan, reclass kemiringan, mask)Raster > Conversion > Polygonize (Raster to Vector)Gratis, di core QGIS
Raster kontinu (NDVI, kemiringan, band reflektansi)Reclassify by table terlebih dahulu, lalu polygonizeGratis, di core QGIS
DEM atau permukaan elevasi apa punRaster > Extraction > Contour, atau Contour PolygonsGratis, di core QGIS
Peta kertas hasil pemindaian atau denahGRASS r.thin ditambah r.to.vect, atau alat tracing di luar QGIS. Tidak ada yang tersedia di core QGIS yang melakukan ini dengan baikGratis, dan lambat. Tracing AI berbayar tersedia
Citra ortofoto, drone, atau satelitModel segmentasi. Polygonize tidak berlakuPlugin gratis memerlukan kartu NVIDIA. Plugin cloud memiliki tingkat gratis, lalu berlangganan

Sebagian besar pembaca memerlukan baris pertama dan dapat berhenti setelah dua bagian berikutnya.

Polygonize, jawaban default

Algoritme QGIS adalah Polygonize (raster to vector), id gdal:polygonize, dan algoritme ini membungkus utilitas GDAL gdal_polygonize. Algoritme ini membuat satu poligon untuk setiap wilayah piksel terhubung yang memiliki nilai sama, lalu menulis nilai tersebut ke dalam atribut.

Halaman dokumentasi QGIS 3.44 untuk konversi raster GDAL, yang menampilkan entri Polygonize (raster to vector), menu defaultnya, dan tabel parameter dengan INPUT, BAND, FIELD, serta EIGHT_CONNECTEDNESS
Referensi untuk setiap default yang dikutip di bawah ini: dokumentasi QGIS 3.44 untuk gdal:polygonize, diambil pada 23 Agustus 2026. Menu default, Raster lalu Conversion.

Open the tool

Raster > Conversion > Polygonize (Raster to Vector). Alat ini juga tersedia di Processing Toolbox di bagian GDAL, Raster conversion.

Pick the band

Band 1, kecuali kelas Anda berada di tempat lain. Hanya satu band yang digunakan, jadi raster RGB harus dikurangi menjadi satu band kelas sebelum langkah ini.

Name the field

DN adalah defaultnya. Ganti namanya menjadi sesuatu yang masih Anda pahami enam bulan lagi, seperti landcover_code.

Decide on 8-connectedness

Secara default nonaktif, sehingga piksel harus berbagi batas penuh agar dapat bergabung. Aktifkan dan piksel yang hanya bersentuhan secara diagonal juga akan bergabung. Pada fitur diagonal yang tipis, membiarkannya nonaktif akan memecah satu fitur menjadi rangkaian poligon.

Save to a real file

Defaultnya adalah layer sementara. Pada raster besar, ini menghasilkan puluhan ribu fitur, jadi tulis langsung ke GeoPackage.

Dialog QGIS Polygonize (Raster to Vector). Input layer bertuliskan Land cover 10 m [EPSG:32631], Band number adalah Band 1 (Palette), field yang dibuat bernama landcover_code, Use 8-connectedness tidak dicentang, dan output ditulis ke GeoPackage.
Empat parameter yang penting, pada potongan ESA WorldCover 10 m di lembah Drome. Field diganti namanya dari DN menjadi landcover_code dan output langsung ditulis ke GeoPackage, bukan layer sementara.

Dua hal berikut menghemat waktu Anda.

Tetapkan nilai NoData pada kelas yang tidak Anda inginkan. GDAL menggunakan mask validitas band, sehingga piksel NoData dilewati dan tidak menjadi satu poligon latar belakang raksasa yang mengelilingi semua yang lain. Ini adalah keluhan paling umum tentang output polygonize, dan ini merupakan properti raster, bukan pengaturan alat.

Halaman referensi gdal_polygonize di gdal.org, yang menampilkan sinopsis serta opsi -8, -nomask, dan -mask
Utilitas GDAL yang digunakan di balik algoritme QGIS, diambil pada 23 Agustus 2026. Flag -nomask adalah sumber perilaku mask validitas tersebut.

Pastikan band bertipe integer. gdal:polygonize selalu menulis field integer, sehingga band float dikonversinya saat masuk. Hal ini gagal dengan dua cara berbeda, bergantung pada cara raster Anda menyimpan nilainya, dan tidak satu pun memberikan peringatan. Float32 diproses melalui Reclassify by table terlebih dahulu, yang dibahas di bagian berikutnya.

Masalah tangga, dan cara memperbaikinya

Polygonize menelusuri batas piksel. Tidak ada yang lain. Jadi tepi lahan diagonal kembali sebagai deretan anak tangga bersudut siku-siku, satu per piksel, dan klasifikasi Sentinel 10 m menghasilkan tangga berukuran 10 m.

Output Polygonize di atas raster tutupan lahan 10 m dengan skala sekitar 1:1.500. Sebidang lahan pertanian berwarna merah muda berada di antara tutupan pohon berwarna hijau dan padang rumput berwarna kuning, dan setiap batas diagonal merupakan deretan tangga persegi selebar satu piksel.
Output gdal:polygonize mentah, 3.551 poligon, di atas raster ESA WorldCover asalnya. Hitung tangga di sepanjang diagonal mana pun: masing-masing adalah piksel 10 m.

Itu adalah output yang benar. Alat ini menggambar tepat seperti yang dikatakan raster. Hanya saja hasilnya tidak terlihat seperti peta, dan tidak ada pengaturan di dalam polygonize yang dapat mengubahnya. Solusinya adalah empat algoritme geometri vektor yang dijalankan setelahnya, dalam urutan berikut.

1. Dissolve (native:dissolve). Atur field dissolve ke field kelas yang baru saja Anda buat. Poligon bertetangga dengan kelas yang sama akan bergabung menjadi satu fitur per kelas. Jalankan ini terlebih dahulu, saat geometri masih tepat, karena penggabungan tepi yang sudah disederhanakan meninggalkan sliver di sepanjang setiap batas bersama. Jika Anda ingin setiap patch tetap terpisah, bukan satu fitur multipart per kelas, centang Keep disjoint features separate di parameter lanjutan.

2. Filter berdasarkan area (native:extractbyexpression, di Vector selection). Ekspresi:

$area > 500

Satuannya adalah satuan CRS layer, jadi gunakan CRS terproyeksi atau angka tersebut tidak bermakna. Tetapkan ambang pada ukuran patch nyata di data Anda. Pada klasifikasi 10 m, 500 m2 berarti lima piksel, kira-kira titik ketika speckle berhenti dan fitur mulai terbentuk. Gambar di bawah ini menggunakan 2.000 m2 pada raster yang sama, karena pada 500 m2 sliver yang bertahan saling berpotongan setelah disederhanakan. Lihat histogram area Anda sendiri, bukan menyalin salah satu angka tersebut. Jika raster meninggalkan piksel tunggal dari kelas lain di dalam patch, native:deleteholes setelah langkah ini akan menghapusnya.

3. Simplify (native:simplifygeometries). Toleransi default adalah 1,0 dalam satuan layer. Atur kira-kira sebesar ukuran satu piksel dan tangga akan runtuh menjadi garis lurus, dengan batas berpindah kurang dari yang dapat dilihat pembaca. Dropdown metode menawarkan Douglas-Peucker (berdasarkan jarak), Visvalingam (berdasarkan area), dan snap to grid. Visvalingam lebih baik mempertahankan bentuk fitur kecil ketika Anda menaikkan toleransi.

4. Smooth (native:smoothgeometry). Gunakan hanya pada objek yang memang melengkung, seperti aliran sungai, garis pantai, dan patch vegetasi. Offset default adalah 0,25, sedangkan iterasi mengatur seberapa bulat hasilnya. Atur Maximum node angle to smooth ke 90 agar setiap sudut yang lebih tajam tetap tajam. Ini mencegah alat membulatkan sudut bangunan dan bidang tanah.

Jika Anda juga menginginkan patch solid tanpa celah interior, native:deleteholes menghapus lubang di bawah area minimum, dan 0,0 menghapus semuanya.

Luas tutupan lahan yang sama setelah dibersihkan. Garis poligon kini membentuk kurva halus di atas grid piksel, yang masih terlihat di bawahnya, dan poligon speckle kecil telah hilang.
Luas yang sama, simbologi yang sama, setelah Dissolve, filter area pada 2.000 m2, deleteholes, Simplify pada 10 m, dan Smooth dengan maximum node angle 90. Jumlahnya turun dari 3.551 menjadi 724 dan tangga terbaca sebagai kurva.

Reclassify terlebih dahulu ketika raster bersifat kontinu

Polygonize pada raster kontinu menjadi salah satu dari dua masalah, dan hasil yang Anda dapatkan bergantung pada cara nilai disimpan.

Disimpan sebagai bilangan bulat berskala, seperti cara produk NDVI sebenarnya dikirim, Anda mendapatkan poligon untuk hampir setiap piksel karena hampir tidak ada dua piksel yang memiliki nilai sama. Kami mengukur 39.801 poligon dari 40.000 piksel pada satu adegan Sentinel-2.

Disimpan sebagai float mentah antara -1 dan 1, konversi ke integer meratakan setiap nilai menjadi -1, 0, atau 1 sebelum penelusuran dimulai. Adegan yang sama kembali sebagai 238 poligon dalam dua kelas. Hasil ini terlihat bersih, tetapi sebenarnya tidak. Data Anda telah hilang.

Hal yang sama berlaku untuk kemiringan, elevasi, temperatur, atau band reflektansi mentah. Alat tersebut tidak gagal pada kedua kasus. Alat ini menelusuri batas antara nilai integer, sementara raster kontinu tidak memiliki nilai integer yang berguna untuk ditelusuri.

Tampilan dekat raster NDVI dengan skala sekitar 1:1.000 di atas lahan pertanian, dengan patch berhutan hijau tua di sebelah lahan berwarna pucat. Setiap piksel 10 m memiliki garis poligonnya sendiri, sehingga bingkai terlihat seperti grid. Entri panel layer bertuliskan ndvi_polygonized dengan 39801 fitur.
NDVI dari adegan Sentinel-2 pada 11 Agustus 2025, disimpan sebagai bilangan bulat berskala seperti cara produk NDVI dikirim, lalu langsung diproses dengan polygonize. 39.801 poligon dari 40.000 piksel karena hampir tidak ada dua piksel yang memiliki nilai sama.

Ubah permukaan kontinu menjadi kelas terlebih dahulu dengan Reclassify by table, id native:reclassifybytable. Tabel reklasifikasi memiliki tiga kolom, minimum, maksimum, dan nilai baru, serta menerima -inf, inf, dan nan untuk NoData. Mask vegetasi terdiri dari tiga baris:

MinimumMaximumValue
-inf0.21
0.20.52
0.5inf3
Dialog QGIS Reclassify by Table dengan raster NDVI Float32 sebagai input dan Advanced Parameters terbuka, menampilkan Range boundaries yang diatur ke min kurang dari value kurang dari atau sama dengan max, serta Output data type diatur ke Byte. Editor fixed table berada di atas dengan tiga baris: minus infinity hingga 0.2 menghasilkan 1, 0.2 hingga 0.5 menghasilkan 2, dan 0.5 hingga infinity menghasilkan 3.
Mask vegetasi tiga baris yang dimasukkan ke fixed table. Dua default yang layak diubah berada di bagian lanjutan di belakangnya: Output data type, diatur ke Byte di sini, dan Range boundaries.

Ada dua default yang perlu diubah di parameter lanjutan. Output data type defaultnya Float32, jadi atur ke Byte atau Int16 agar polygonize berfungsi dengan baik. Range boundaries defaultnya adalah min < value <= max, yang menentukan sisi mana dari 0,2 tempat piksel dengan nilai tepat 0,2 berada.

Lalu polygonize raster yang telah direklasifikasi dan jalankan pembersihan di atas.

Contour untuk DEM

Untuk elevasi, jangan gunakan polygonize. Gunakan Contour di Raster > Extraction > Contour, id gdal:contour. Interval defaultnya adalah 10,0 dalam satuan raster, dan elevasi secara default ditulis ke field bernama ELEV.

Dialog QGIS Contour dengan Copernicus DEM 30 m sebagai input layer, interval antar garis kontur diatur ke 10, nama atribut ELEV, dan Advanced Parameters terbuka yang menampilkan Produce 3D vector tidak dicentang.
gdal:contour pada tile Copernicus DEM 30 m di atas Drome. Interval 10 dalam satuan raster, elevasi ditulis ke ELEV, dan Produce 3D vector dibiarkan nonaktif.

Centang Produce 3D vector jika Anda ingin ketinggian pada setiap vertex. Biarkan nonaktif untuk peta cetak karena banyak software menghapus Z secara diam-diam.

Saudaranya, gdal:contour_polygon, menghasilkan pita terisi di antara dua elevasi, bukan garis, dengan ELEV_MIN dan ELEV_MAX pada setiap poligon. Inilah yang Anda perlukan untuk peta hipsometrik atau luas genangan, dan ini menghemat pekerjaan polygonize DEM yang telah direklasifikasi secara manual.

Dua panel pada wilayah perbukitan yang sama. Di kiri, garis kontur cokelat setiap 10 m di atas hillshade abu-abu, dengan garis 50 m yang dibuat lebih tebal dan diberi label 400, 450, 500, 550, 600, serta 650. Di kanan, medan yang sama sebagai pita terisi yang bergerak dari hijau di lembah ke cokelat di puncak.
DEM yang sama, interval 10 m yang sama, dua algoritme. gdal:contour menghasilkan garis yang Anda beri label dari ELEV. gdal:contour_polygon menghasilkan pita terisi dengan ELEV_MIN dan ELEV_MAX, yaitu yang dibutuhkan peta hipsometrik.

Contour dari DEM lidar menjadi berisik karena permukaannya berisik. Smooth raster sebelum langkah contour, bukan garis setelahnya. Smoothing pada garis membuat garis-garis tersebut saling berpotongan.

Peta kertas hasil pemindaian: QGIS tidak memiliki ArcScan

Jika Anda berasal dari ArcGIS dan mencari padanan QGIS untuk ArcScan, padanan tersebut tidak ada. Tracing raster interaktif, ketika Anda mengeklik sebuah garis pada hasil pemindaian dan alat mengikuti garis tersebut, memang merupakan kekosongan nyata. Saya lebih baik mengatakannya terus terang daripada membiarkan Anda mencari-cari menunya.

Hal yang sebenarnya digunakan orang, kira-kira berdasarkan seberapa baik hasilnya:

  • GRASS, tersedia bersama sebagian besar installer QGIS. Ubah hasil pemindaian menjadi raster biner menggunakan threshold, tipiskan dengan r.thin, lalu jalankan r.to.vect dengan feature type line. Dokumentasi GRASS memperingatkan bahwa proses ini membuat terlalu banyak node pada persimpangan dan spur yang menggantung, jadi siapkan waktu untuk pembersihan. Gratis, dan berfungsi pada pekerjaan garis yang bersih.
  • Potrace atau AutoTrace, di luar QGIS. Bitmap ke vektor, lalu masukkan kembali hasilnya dan lakukan georeferensi. Bagus untuk hasil pemindaian dengan kontras tinggi, tetapi tidak mengetahui apa pun tentang geografi.
  • Bunting Labs AI Vectorizer (daftar repository QGIS). Plugin QGIS yang melengkapi garis secara otomatis saat Anda melakukan digitasi, ditujukan khusus untuk peta geologi, as-built, dan denah. Batasannya: plugin ini mengirim potongan raster ke server mereka, tidak ada tingkat gratis selain masa uji coba, dan harga yang dipublikasikan mulai dari 29 dolar per bulan, per 23 Agustus 2026.

Untuk beberapa fitur pada satu lembar, digitasi manual dengan snapping tetap menjadi pilihan terbaik. Saya tidak akan membangun alur kerja tracing untuk kurang dari sekitar lima puluh fitur.

Kapan polygonize merupakan alat yang salah

Arahkan polygonize ke ortofoto dan Anda mendapatkan noise karena tidak ada yang bisa di-threshold. Atap merah dan mobil merah memiliki nilai piksel yang mirip. Atap abu-abu dan jalan abu-abu memiliki nilai piksel yang mirip. Kelas ada di kepala Anda, bukan di file.

Mengekstrak objek dari citra fotografi membutuhkan model yang telah belajar seperti apa objek terlihat. Alat-alat tersebut menulis vektor secara langsung, sehingga polygonize tidak pernah masuk ke dalam proses. Berikut yang perlu Anda instal dan yang diminta oleh masing-masing alat.

ToolYang Anda instalGPUAccountImagery leaves your machineYang dihasilkanBiaya
Deepness (source)Plugin manager, lalu paket Python dan model ONNX-nyaOpsional, CPU berfungsiTidakTidakPolygon layer, bounding boxes, atau rasterGratis
Geo-SAMPlugin manager, lalu dependensi dan bobot model dari dialog pengaturannya sendiriOpsional, klik dijalankan pada CPUTidakTidakPolygon layer, pada tingkat piksel atau disederhanakanGratis
samgeoPaket Python di environment Anda sendiri, tanpa panel QGISDirekomendasikanTidakTidakGeoJSON, Shapefile, atau GeoPackage yang Anda muat sendiriGratis
Mapflow (site)Plugin managerTidakYaYa, upload GeoTIFF Anda atau tile service yang Anda tunjukPolygon layerKredit, berbayar
Bunting Labs AI VectorizerPlugin managerTidakYaYa, dalam potongan rasterVertex ke layer yang sedang Anda digitasiUji coba, lalu 29 dolar per bulan
AI Segmentation, milik kamiPlugin managerTidakYaYa dalam kedua mode cloud, tidak untuk model lokal kecilPolygon layer dalam CRS project, dengan label, kelas, skor, area_m2, dan perimeter_mKuota gratis, lalu 39 euro per bulan belum termasuk PPN

Satu batasan untuk masing-masing alat.

  • Deepness menjalankan model yang Anda berikan, jadi Anda harus menemukan atau melatih model terlebih dahulu.
  • Geo-SAM menerima klik dan kotak, satu objek setiap kali.
  • samgeo tidak memiliki antarmuka QGIS. Anda menulis Python.
  • Mapflow menyediakan katalog model tetap, yaitu bangunan, hutan, jalan, dan lokasi konstruksi, sehingga tidak dapat menemukan objek yang belum pernah dilatih untuk dikenali.
  • Bunting Labs AI Vectorizer mengikuti pekerjaan garis saat Anda melakukan digitasi. Alat ini tidak menemukan setiap objek di dalam suatu zona.
  • AI Segmentation, milik kami, mengirim citra ke server dalam kedua mode cloud. Hanya model lokal kecil yang tetap berada di mesin Anda.

Biaya dan tingkat gratis berlaku per 23 Agustus 2026.

Jalan di kawasan pinggiran kota pada citra Google Satellite di QGIS. Enam atap rumah di sebelah kanan jalan diberi garis dan diisi warna merah, sementara poligon tambahan dengan berbagai warna menutupi rumah-rumah di sebelah kiri.
Ekstraksi berbasis model di QGIS di atas citra Google Satellite, diambil pada 23 Agustus 2026. Setiap atap menjadi poligonnya sendiri, dapat diedit seperti fitur vektor lainnya. Polygonize tidak dapat menghasilkan ini karena tidak ada yang memisahkan atap dari jalan masuk di dalam nilai piksel.

Output model mentah dari alat mana pun memerlukan filter, seperti output polygonize memerlukan pembersihan. Pada satu proses di pusat Paris, kami mempertahankan 82 poligon dari 635 poligon, dan 82 poligon tersebut masih mencakup 84 persen area terbangun. Panduan footprint bangunan menjelaskan langkah filtering tersebut dari awal hingga akhir, dan artikel SAM di QGIS membahas objek apa saja yang dapat ditemukan model-model ini dengan baik.

Try it free in QGIS, no card needed

Versi dua menit

Buka properti raster Anda dan lihat tipe band serta rentang nilainya. Integer dengan kurang dari seratus nilai berbeda berarti langsung buka Raster > Conversion > Polygonize (Raster to Vector), lalu Dissolve, filter berdasarkan area, dan Simplify. Float dengan ribuan nilai berbeda berarti gunakan Reclassify by table terlebih dahulu. Foto berarti semua ini tidak berlaku, dan perbandingan plugin AI QGIS adalah halaman yang perlu Anda buka berikutnya.

Jika yang Anda perlukan hanya bangunan, alat footprint bangunan gratis kami mengambilnya dari open data di browser tanpa plugin sama sekali.