Lewati ke konten
AI Segmentation
QGIS
Tutorial

Cara Mendeteksi Tapak Bangunan di QGIS Secara Otomatis

0:00 / 0:00
Satu zona, satu kata, 848 bangunan. Proses nyata, dipercepat 3x, tanpa potongan.

Saya menjalankan deteksi otomatis di sebuah zona pusat Paris dan mendapatkan 635 poligon dalam satu kali proses. Menentukan 82 poligon yang harus dipertahankan memakan waktu lebih lama daripada deteksinya, dan bagian kedua inilah yang hampir selalu tidak dibahas dalam tutorial.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Geser untuk membandingkan
One automatic pass over central Paris, on Google Satellite imagery. Every polygon gets its own colour so neighbours stay separate. Drag the handle to compare.

Versi singkatnya. Untuk mendeteksi tapak bangunan di secara otomatis: pasang plugin deteksi AI dari pengelola plugin, muat citra, gambar zona, beri nama objek, lalu jalankan. Anda mendapatkan layer poligon dalam CRS proyek. Kemudian saring output mentah berdasarkan skor keyakinan dan area, karena sebagian besar hasil yang dikembalikan bukan bangunan.

Apa itu tapak bangunan

Garis luar bangunan di tempat bangunan itu bertemu tanah, sebagai poligon datar. Bukan atap, bukan bidang tanah, bukan titik alamat.

Hal ini penting karena citra vertikal memberi Anda atap. Pada blok Haussmann lima lantai yang dipotret dekat nadir, pergeserannya kecil. Pada menara, tidak. Sebaiknya ketahui ini sebelum menjanjikan layer tapak bangunan kepada siapa pun.

Periksa dataset terbuka terlebih dahulu

Untuk banyak pekerjaan, Anda tidak perlu mendeteksi apa pun.

Three panels of the same dense Luanda neighbourhood on Google Satellite imagery, with building footprints in green. OpenStreetMap shows none, Microsoft covers most, Google Open Buildings covers nearly all.
The same 1 km² of Luanda, on Google Satellite imagery. OpenStreetMap maps no buildings here, Microsoft finds 3,140, Google Open Buildings 4,468. Over a dense African neighbourhood the dataset you reach for decides whether you get everything or nothing.

Muat salah satunya bersama citra Anda. Anda hanya melanjutkan ketika cakupannya memiliki celah, tahunnya keliru, atau tapaknya harus cocok dengan ortofoto tertentu yang diberikan klien.

Di bawah lima puluh bangunan, gambar sendiri

Digitasi dengan tangan. Gratis, presisi, dan untuk jumlah sebanyak itu saya tetap akan mengerjakannya sendiri. Aktifkan snapping terlebih dahulu (Project -> Snapping Options, vertex dan segment, topological editing aktif) atau Anda akan menghabiskan sore untuk menghapus sliver.

Sekitar bangunan ke-60, Anda mulai mengambil jalan pintas yang tidak akan pernah Anda ambil pada bangunan ke-6, dan Anda tidak menyadarinya. Semuanya sudah masuk ke dalam layer.

Cara otomatis

Plugin di sini adalah AI Segmentation, yang saya dan co-founder saya bangun di TerraLab, jadi baca bagian ini sambil mengetahui milik siapa tool ini. Plugin ini dipasang dari pengelola plugin seperti plugin lainnya: tanpa mengunduh manual, tanpa Python environment, tanpa kartu grafis khusus, karena modelnya berjalan di server kami. Windows, macOS, dan Linux.

Gambar zona, ketik buildings, tekan Detect. Itulah keseluruhan prompt, dalam bahasa Anda sendiri jika mau. Hasil mengalir kembali tile demi tile sebagai satu layer poligon dalam CRS proyek.

The AI Segmentation panel in QGIS with the Semi-Auto and Automatic switch
Automatic mode: pick the imagery layer, draw a zone, name the object.

Satu-satunya pengaturan yang perlu dipelajari adalah precision, yaitu ukuran tile. Tile kecil memberi model pandangan dekat, yang dibutuhkan objek kecil. Tile besar memberinya konteks, yang dibutuhkan bidang pertanian. Tile juga yang Anda bayar: satu kredit per tile. Setiap akun mendapat jatah gratis setiap bulan, tanpa perlu kartu, dan Pro menaikkannya. Deteksi berjalan di server Eropa, kami tidak melatih model dengan citra Anda, dan tersedia model lokal kecil jika tidak ada data yang boleh meninggalkan mesin Anda.

Lalu panel memandu Anda melalui tiga langkah sebelum sesuatu menjadi layer: saring apa yang akan Dipertahankan, Koreksi apa yang terlewat oleh model, dan pilih output Bentuk. Panduan lengkap membahas ketiganya. Langkah pertama adalah tempat pekerjaan ini ditentukan, jadi bagian berikutnya membahasnya.

Penyaringan adalah keseluruhan pekerjaan

Output deteksi mentah adalah sekumpulan poligon kandidat dengan skor keyakinan. Pada citra padat, sebagian besar berukuran kecil dan tidak pasti. Saya mengekspor hasil Paris ini dengan kedua filter terbuka lebar, jadi setiap kandidat masuk ke layer: 635 poligon di atas 1.18 km².

1 m²101001 00010 000 m²50 m²
Every one of the 635 detections, binned by area on a log scale. Two humps: noise under 5 m², real buildings above 160 m². The 50 m² line falls in the valley between them, which is why it is not an arbitrary number. Median 3.2 m², largest 13,528 m², median confidence 0.26.

Setengah dari hasil yang dikembalikan lebih kecil daripada tempat parkir: ventilasi, jendela atap, rumah pelindung tangga, gudang halaman. Semua itu benda nyata dalam citra, digambar dengan benar, tetapi bukan yang dimaksud siapa pun dengan tapak bangunan.

Jadi, lakukan penyaringan. Geser dua slider di panel, atau lakukan hal yang sama dari tabel atribut dengan Select by Expression:

"area_m2" >= 50 AND "score" >= 0.5

Hasilnya adalah 82 poligon dari 635, yang mencakup 222,338 m² dari total 263,658 m². Daripada begitu saja mempercayai ambang batas saya, geser sendiri. Warna hijau bertahan setelah filter Anda, warna putih tidak.

Aerial imagery of dense Parisian blocks with detected building polygons drawn over it

82 / 635polygons kept (13%)

84%of the built area (222,338 m²)

The same 635 detections the attribute table holds. Drop the confidence to zero and the courtyard sheds and skylights come back.

Perhatikan angka kedua saat Anda menggeser angka pertama. Membuang 87% poligon mengorbankan 16% area. Sisanya adalah noise yang sebenarnya akan Anda hapus dengan tangan juga, satu per satu, sambil bertanya-tanya apakah alatnya memang bagus.

Sesuaikan keduanya dengan pekerjaan. Survei gudang industri dapat menaikkan batas bawah area menjadi 200 m². Untuk memetakan permukiman informal, 50 m² membuang rumah nyata, jadi turunkan ke 15 dan lebih andalkan skor keyakinan.

Seperti apa hasil yang bersih

Paris adalah kasus yang sulit. Alat yang sama pada perumahan rumah terpisah sekitar 10 km di sebelah barat:

Detached and semi-detached houses in a Paris suburb, each house filled with its own colour
Detached housing, review filter on. One polygon per house, almost nothing to throw away.

85

median polygon area

Paris run: 3.2 m²

0.79

median confidence

Paris run: 0.26

251polygons

kept, out of 251 returned

Paris run: 82 out of 635

Alat yang sama, kota yang sama, hampir tidak ada yang perlu dibuang. Yang berubah adalah struktur bangunannya, bukan modelnya.

Di mana ini gagal: blok padat yang berkesinambungan

Close view of Haussmann blocks, each block one coloured polygon following the street edge with courtyards cut out
The outline follows the street edge precisely and cuts out the courtyards. What it does not do is split the block into individual addressed buildings.

Setiap poligon menelusuri selubung bangunan seluruh blok, mengikuti garis jalan dan memotong halaman dengan benar. Cocok untuk area terbangun atau permukaan kedap air, keliru jika Anda memerlukan satu poligon per alamat. Tidak ada model yang membaca citra vertikal dapat menemukan dinding bersama antara dua bangunan yang berdempetan, karena dari atas tidak ada apa pun yang bisa dilihat di sana.

Jadi saya tidak akan menggunakan deteksi otomatis untuk layer per alamat di pusat kota bersejarah. Data kadaster ditambah koreksi manual lebih unggul di sana.

Membersihkan geometri

Tiga tool native QGIS merapikan layer tapak, dan urutannya penting karena simplify memindahkan vertex yang baru saja Anda buat siku.

  1. Simplify, toleransi 0.5 m pada citra udara. Mengurangi jumlah vertex secara drastis tanpa menggeser batas ke titik yang akan Anda sadari.
  2. Orthogonalize. Membuat sudut yang hampir siku menjadi siku. Gunakan pada data terbuka atau pekerjaan yang ditelusuri dengan tangan, saat belum ada yang membuatnya siku.
  3. Delete holes, hanya jika Anda menginginkan tapak yang padat. Bukan pada hasil Paris: lubang-lubang itu adalah halaman dan sudah benar.

Pada layer yang terdeteksi, langkah 2 hampir tidak menghasilkan perubahan. Saya mengukurnya daripada berasumsi, dengan menjalankan Orthogonalize pada 190 bangunan terdeteksi dan membandingkan semua 1,845 sudut sebelum dan sesudahnya.

87.9%

corners already within 1° of square

before running anything

87.9%

after Orthogonalize

the same 1,845 corners

1.7cm

median vertex shift

9.1 cm at the worst

Close view of detected building outlines on aerial imagery, corners meeting at right angles
The same detections, close in. The corners arrive square, so the cleanup step has nothing left to snap.

Sebanyak 12% yang tidak siku adalah teras-teras yang menempel. Lihat tepi bertingkat yang membentang di tengah blok. Tidak ada tool sudut yang dapat memperbaikinya, karena undakan itu mengikuti garis atap nyata, bukan kesalahan pemodelan.

Metode mana yang digunakan

Dataset terbukaDigitasi manualDeteksi otomatis
BiayaGratisGratisTingkat gratis, lalu berbayar
PenyiapanMenitTidak adaMenit
Cocok untukArea yang sudah tercakup dengan baikDi bawah ~50 bangunanRatusan hingga ribuan
Cocok dengan citra AndaTidakYaYa
Konsisten di seluruh timYaTidakYa
Blok padat yang berkesinambunganBervariasiYaHanya selubung blok
Sumber yang dapat dinyatakanDataset dan tahun perekamanAndaCitra Anda, dengan skor keyakinan

Pertanyaan yang sering saya dapatkan

Apakah ini berfungsi pada citra drone? Lebih baik daripada citra satelit. Resolusi tanah lebih penting daripada sumbernya: ortofoto 5 cm memberikan batas yang lebih bersih dan keyakinan lebih tinggi daripada citra satelit 30 cm.

Apakah saya memerlukan GPU? Tidak. Kedua mode secara default berjalan di server kami, dan model lokal kecil berjalan di CPU Anda sendiri, lebih lambat dan kurang akurat. Jika Anda ingin semuanya tetap berada di mesin Anda, Geo-SAM dan samgeo gratis dan bagus, dan keduanya memang membutuhkan kartu NVIDIA.

Berapa biaya satu proses? Satu kredit per tile dalam mode otomatis, satu kredit per objek yang disimpan dalam mode semi-otomatis. Setiap akun mendapat jatah gratis setiap bulan, dan model lokal sama sekali tidak berbiaya.

Try it free in QGIS, no card needed