Menghitung area poligon di QGIS?


72

Bagaimana cara menghitung area suatu shapefile area dalam meter persegi atau dalam hektar (ha)?

Saya tidak menemukan fungsi itu di alat vektor.


Pertanyaan tindak lanjut: Saya memiliki layer di State Plane NAD83. Ketika saya menggunakan perintah-perintah ini menciptakan area berjalan. Bagaimana jika saya ingin hektar atau mil persegi? Terima kasih
C_K

Dua jawaban yang diberikan bekerja tetapi mereka agak lambat untuk diterapkan terutama ketika seseorang mencoba untuk menentukan area banyak file vektor poligon. Apakah tidak ada plug-in atau cara lain untuk mendapatkan area poligon hanya dengan mengklik kanan poligon? Jawaban yang diberikan berakhir dengan atribut bidang baru (yaitu area) tetapi nilainya tidak diperbarui jika poligon diubah. Jadi, dalam banyak kasus tidak perlu memiliki area yang ditampilkan dalam atribut bidang yang terpisah. Jika area hanya dapat ditampilkan sebagai angka dalam bagan kecil, di bagian bawah halaman, dll itu sudah cukup. Jadi, adalah
David

2
Dengan menggunakan alat identifikasi, klik sebuah poligon. Area dihitung dan ditampilkan di bawah "Turun" di jendela identifikasi. Anda dapat mengubah unit di bawah pengaturan.
csk

Jawaban:


70

Buat layer dapat diedit, kemudian gunakan kalkulator bidang (Lapisan> Buka tabel atribut> Kalkulator Bidang / Ctrl + I atau klik kanan shapefile> Buka tabel atribut> Kalkulator Bidang / Ctrl + I). Ada operator "$ area" yang akan menghitung luas setiap baris dalam tabel. Semua unit akan dihitung dalam unit proyeksi, jadi Anda mungkin ingin memproyeksikannya ke proyeksi yang menggunakan kaki atau meter sebelum melakukan itu, daripada lat / lon.


6
Dalam versi QGIS saat ini jika data Anda berada dalam CRS Geografis, Anda dapat menggunakan fungsi transform () untuk memproyeksikan geometri ke sistem yang diproyeksikan (Lebih disukai area yang sama satu) tanpa perlu menduplikasi data Anda. Dalam kalkulator Field, sesuatu seperti ini harus berfungsi: area ($ geometry, 'EPSG: 4326', 'EPSG: 3763')
Alexandre Neto

9
@AlexandreNeto: Maksud Anda area(transform($geometry, 'EPSG:4326','EPSG:3763'))?
Stewart Macdonald

@smacdonald ya, kesalahan saya.
Alexandre Neto

18

Ini juga dapat dilakukan dengan Vector | Geometry Tools | Tambah / ekspor kolom geometri, yang membuat shapefile baru dengan area dan perimeter (atau panjang) kolom ditambahkan.

Sunting: (menggunakan alat di atas, Anda juga dapat membatalkan pilihan "save as new shape-file" di V1.8, shapefile sekarang hanya diperbarui!)

Menggunakan kalkulator lapangan mungkin merupakan ide yang lebih baik, karena tidak memerlukan pembuatan shapefile baru.


Anda tidak dapat mengubah atribut dari shapefile tanpa mengaktifkan pengeditan terlebih dahulu, (menghitung jumlah area sebagai mengedit atribut, Anda menambahkan kolom baru). Ingatlah bahwa semua unit akan dihitung dalam unit proyeksi (meter bu default), sehingga Anda memproyeksikannya kembali ke sistem koordinat yang diproyeksikan terlebih dahulu.
Hasan Mustafa

4

Saya menulis naskah khusus untuk ini. Jika Anda tidak ingin memproyeksi ulang data Anda, Anda dapat menghitung area menggunakan matematika ellipsoidal.

Processing Toolbox -> Tools -> Get scripts from on-line scripts collection -> Ellipsoidal Area

Anda akan menemukan skrip terpasang di Processing Toolbox -> Utils -> Ellipsoidal area

Alat harus jelas dan akan memungkinkan Anda untuk menghitung luas dalam unit pilihan Anda terlepas dari proyeksi.


Bisakah Anda memberikan contoh yang lebih baik sebagai kode?
Léo Léopold Hertz 준영

0

Jika area yang Anda lihat cenderung berubah, seperti melihat tata letak infrastruktur, area tangkapan air, area studi, dll., Saya merasa berguna untuk sekadar memberi label pada area, alih-alih menambahkannya sebagai atribut.

Label-> round($area/10000,2)||' ha'

Dengan cara ini Anda tidak perlu mengingat untuk memperbarui area tangkapan di tabel atribut sesering mungkin.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.