Tính diện tích đa giác trong QGIS?


72

Làm thế nào để tôi tính diện tích của một shapefile diện tích bằng mét vuông hoặc theo mẫu (ha)?

Tôi đã không tìm thấy chức năng đó trong các công cụ vector.


Câu hỏi tiếp theo: Tôi có một lớp trong State Plane NAD83. Khi tôi sử dụng các lệnh này, nó tạo ra vùng tính theo feet. Nếu tôi muốn acres hoặc dặm vuông? Cảm ơn
C_K

Hai câu trả lời cung cấp công việc nhưng chúng hơi chậm để thực hiện, đặc biệt khi một người đang cố gắng xác định khu vực của nhiều tệp vectơ đa giác. Không có trình cắm hoặc một số cách khác để có được diện tích của đa giác chỉ bằng cách nhấp chuột phải vào đa giác? Các câu trả lời được cung cấp kết thúc bằng một thuộc tính trường mới (tức là khu vực) nhưng giá trị không cập nhật nếu đa giác bị thay đổi. Vì vậy, trong nhiều trường hợp không cần phải có khu vực được hiển thị trong một thuộc tính trường riêng. Nếu khu vực chỉ có thể được hiển thị dưới dạng một số trong biểu đồ nhỏ, ở dưới cùng của trang, vv thì nó sẽ là đủ. Vì vậy, là
David

2
Sử dụng công cụ xác định, nhấp vào một đa giác. Diện tích được tính toán và hiển thị dưới mục "Xuất phát" trong cửa sổ xác định. Bạn có thể thay đổi các đơn vị dưới cài đặt.
csk

Câu trả lời:


70

Làm cho lớp có thể chỉnh sửa, sau đó sử dụng máy tính trường (Lớp> Bảng thuộc tính mở> Máy tính trường / Ctrl + I hoặc nhấp chuột phải vào shapefile> Mở bảng thuộc tính> Máy tính trường / Ctrl + I). Có một toán tử "$ area" sẽ tính diện tích của mỗi hàng trong bảng. Tất cả các đơn vị sẽ được tính theo đơn vị của phép chiếu, vì vậy bạn có thể muốn chiếu nó lên một phép chiếu sử dụng feet hoặc mét trước khi thực hiện điều đó, thay vì lat / lon.


6
Trong các phiên bản hiện tại của QGIS nếu dữ liệu của bạn nằm trong CRS địa lý, bạn có thể sử dụng biến đổi hàm () để chiếu hình học cho hệ thống được chiếu (Tốt nhất là một khu vực bằng nhau) mà không cần phải sao chép dữ liệu của bạn. Trong máy tính Trường, một cái gì đó như thế này sẽ hoạt động: khu vực ($ hình học, 'EPSG: 4326', 'EPSG: 3763')
Alexandre Neto

9
@AlexandreNeto: Ý bạn là area(transform($geometry, 'EPSG:4326','EPSG:3763'))sao?
Stewart Macdonald

@smacdonald vâng, lỗi của tôi.
Alexandre Neto

18

Điều này cũng có thể được thực hiện với Vector | Công cụ hình học | Thêm / xuất các cột hình học, tạo ra một shapefile mới với các cột có diện tích và chu vi (hoặc chiều dài) được thêm vào.

Chỉnh sửa: (sử dụng công cụ ở trên, bạn cũng có thể bỏ chọn "lưu dưới dạng tệp hình dạng mới" trong v1.8, shapefile hiện chỉ được cập nhật!)

Tuy nhiên, sử dụng máy tính trường có lẽ là một ý tưởng tốt hơn, vì nó không yêu cầu tạo ra một shapefile mới.


Bạn không thể thay đổi các thuộc tính của shapefile mà không cho phép chỉnh sửa trước, (tính diện tích được tính là chỉnh sửa các thuộc tính, bạn đang thêm một cột mới). Hãy nhớ rằng tất cả các đơn vị sẽ được tính theo đơn vị của phép chiếu (mặc định mét bu), vì vậy bạn phải chiếu lại nó thành một hệ tọa độ dự kiến ​​trước.
Hasan Mustafa

4

Tôi đã viết một kịch bản đặc biệt cho việc này. Nếu bạn không muốn từ chối dữ liệu của mình, bạn có thể tính diện tích bằng toán học ellipsoidal.

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

Bạn sẽ tìm thấy tập lệnh được cài đặt trong Processing Toolbox -> Utils -> Ellipsoidal area

Công cụ nên tự giải thích và sẽ cho phép bạn tính diện tích theo đơn vị bạn chọn bất kể hình chiếu.


Bạn có thể đưa ra ví dụ tốt hơn như mã?
Léo Léopold Hertz

0

Nếu các khu vực bạn đang xem có khả năng thay đổi, chẳng hạn như xem bố cục cơ sở hạ tầng, khu vực lưu vực, khu vực nghiên cứu, v.v., tôi thấy hữu ích khi chỉ cần gắn nhãn các khu vực, thay vì thêm chúng làm thuộc tính.

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

Bằng cách này, bạn không cần phải nhớ cập nhật các khu vực lưu vực trong các bảng thuộc tính thường xuyên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.