Làm thế nào để tự động lấp lỗ trong đa giác?


12

Có một tùy chọn trong QGIS để tự động lấp đầy các lỗ trong đa giác bằng cách cài đặt các tham số, ví dụ như diện tích tối đa, khoảng cách giữa các đường biên giới? Tôi muốn xóa / điền vào các lỗ rất "mỏng" / nhỏ.


1
Bạn có quan tâm đến các lỗ (vòng bên trong polgyons) hoặc giảm khoảng cách giữa các đa giác riêng biệt?
Simbamangu

Đây có phải là giải pháp dựa trên QGIS? Tôi đã viết blog trước đây về cách thực hiện điều này bằng cách sử dụng SQL không gian trong PostGIS ( geospatial.commons.gc.cuny.edu/2013/11/04/ Lỗi ). Nếu bạn không chạy PostGIS, tôi có thể điều chỉnh nó cho bạn với SpatiaLite, theo phỏng đoán, nếu bạn đang sử dụng QGIS, bạn có thể đã có SpatiaLite trong chuỗi công cụ của bạn.
Lee Hachadoorian

Câu trả lời:


11

Sử dụng QGIS 2.10.1-Pisa với Phiên bản xử lý 2.10.2, có một số công cụ có sẵn từ Hộp công cụ xử lý :

  • Điền vào lỗ công cụ mà bạn có thể chỉ định diện tích tối đa .
  • Xóa công cụ lỗ sẽ được áp dụng cho toàn bộ lớp đầu vào.

Hi vọng điêu nay co ich!


1
Chỉ cần kiểm tra, tham số diện tích tối đa, đó là kích thước tối đa của một lỗ cần lấp? Vì vậy, trong một dự án UTM mét, nếu tối đa là 10.000, điều đó có nghĩa là lỗ lớn nhất cần lấp sẽ là một hécta và lớn hơn số nào sẽ còn lại?
BillW

1
@BillW - Vâng, tôi tin rằng đó chính xác là những gì nó làm :)
Joseph

10

Tôi đã đối mặt với cùng một vấn đề như của bạn với shapefile này, có nhiều khoảng cách giữa các đa giác.

Tập tin gốc có khoảng trống

Để giải quyết vấn đề, Bạn có thể sử dụng một sửa đổi nhỏ về phương pháp của tshiffle:

  1. Đầu tiên, thực hiện sự khác biệt giữa tệp của bạn và đa giác bao trùm toàn bộ phạm vi của nó.

Extent_polygon

Difference_tool

Hành động này sẽ tạo ra một shapefile mới chỉ bao gồm một đa giác, vì vậy bạn phải làm nổ nó thành các phần duy nhất. Vì vậy, bạn có thể sử dụng công cụ Vector / Geometry / Multipart để Singleparts.

Sự khác biệt_result

Đa_to_single

Sau đó, xóa thực thể bên ngoài. Bây giờ bạn có, trong một shapefile mới, một số đa giác bao phủ các khoảng trống của phạm vi bảo hiểm ban đầu của bạn.

gaps_packed

  1. Thực hiện Liên kết giữa dữ liệu ban đầu và các phần đơn lẻ. Sử dụng công cụ SAGA, vì tùy chọn QGIS mặc định tạo các bản sao vào cơ sở dữ liệu.

liên hiệp

  1. Tất cả các khoảng trống bây giờ sẽ xuất hiện dưới dạng các bản ghi trống trong cơ sở dữ liệu (ví dụ 72 hàng). Sắp xếp bảng của bạn bằng cách sử dụng một trường khu vực và lấy giá trị từ đa giác nhỏ nhất trong tệp gốc. Đối với trường hợp này, 0.13645 ha.

cơ sở dữ liệu

  1. Cuối cùng, sử dụng công cụ "Loại bỏ đa giác cúi", với các cài đặt được hiển thị trong hình ảnh.

nhập mô tả hình ảnh ở đây

  1. Kết quả cuối cùng không có bất kỳ khoảng trống.

nhập mô tả hình ảnh ở đây


Bạn có thể thêm thông tin liên quan đến việc lựa chọn các tham số? Giá trị là gì"? Trang tài liệu của QGIS rất ngắn về chi tiết. Trả lời rất thanh lịch, đáng tiếc người dùng ban đầu đã không chấp nhận bất kỳ câu trả lời!
dùng3386170

1
"Giá trị" là độ lớn mà bạn sử dụng để so sánh. Trong ví dụ, trường 'diện tích' được sử dụng được đặt theo ha, vì vậy 0,1 có nghĩa là: loại bỏ các đa giác nhỏ hơn hoặc bằng 0,1 ha.
gtapko

gtapko, bạn có thể vui lòng cung cấp thêm chi tiết về giai đoạn 3 không? tôi không thể hiểu được, cảm ơn
newGIS

4

Có thể có nhiều giải pháp thanh lịch hơn, nhưng điều này luôn làm việc cho tôi.

1) Tạo đa giác "lấp đầy lỗ". Để làm điều này, vẽ một đa giác khổng lồ lớn hơn bản gốc và sử dụng công cụ "khác biệt". Nếu bạn đã vẽ một đa giác lớn hơn nhiều, bạn sẽ có tất cả các đa giác "lấp đầy lỗ" cộng với một đa giác lớn hơn đi xung quanh hình dạng ban đầu. Xóa đa giác lớn đó, giữ các đa giác "lấp lỗ".

2) Hợp nhất các đa giác "lấp đầy lỗ" với shapefile gốc. Nếu bạn chỉ muốn lấp đầy các lỗ phù hợp với một tiêu chí nhất định (tức là dưới X số km vuông), bạn có thể lọc cho điều đó tại đây.

3) Hòa tan đa giác vừa sáp nhập trên một trường chung.


Không rõ ràng về bước 3, làm thế nào một số người sẽ tìm thấy trường chung?
iRfAn

Ở bước này, trường chung có thể là bất cứ thứ gì, mục tiêu chỉ đơn giản là xóa tan ranh giới giữa các đa giác. Bạn có thể sử dụng một trường hiện có hoặc chỉ cần thêm một.
tshiffle

4

Trong python / shapely, điều này có thể điền vào đa giác của bạn:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)

2

Tôi đã thấy một số giải thích theo cùng một đường dẫn như gtapko và tshiffle, nhưng không có giải thích nào cho tôi vì hình học không hợp lệ làm cho công cụ khác biệt bị biến dạng. Vì vậy, tôi đã đưa ra một giải pháp của riêng tôi mà không phải tự động 100%, nhưng nó có thể quản lý được. Có lẽ ai đó đã tìm ra điều này, nhưng tôi sẽ nắm lấy cơ hội của mình:

1) Tạo ID trên lớp gốc, bị hỏng

Tạo một thuộc tính ID rất đơn giản, nhưng giải pháp của tôi cũng vậy, vì vậy tôi sẽ xem xét nó.

Đầu tiên, bạn phải mở bảng thuộc tính của mình và sau đó vào Máy tính Trường , đây là một nút khá giống bàn tính. Ở đó, bạn sẽ được cung cấp tùy chọn để tạo trường mới hoặc cập nhật trường hiện có. Trên hình trên tôi đang tạo một cái mới gọi là "ID". Công thức ở ngay cuối bức tranh. (Xin lỗi vì đã có QGIS của tôi được thiết lập bằng một ngôn ngữ khác. Vì thiết kế và công thức hoàn toàn giống nhau trong các phiên bản ngôn ngữ, tôi không nghĩ rằng nó sẽ đi theo cách của chúng tôi ở đây.)

2) Chuyển đổi đa giác thành dòng

Bước này nằm trên phần Vector> Hình học trên menu. Hình dạng chuyển đổi của bạn sẽ trông như thế này:

Ngay sau khi chuyển đổi đa giác thành dòng, bạn sẽ phải làm ngược lại chính xác, đó là ...

3) Chuyển đổi dòng thành đa giác

Các tùy chọn nằm ngay cạnh nhau. Một lần nữa, đừng bận tâm đến rào cản ngôn ngữ ở đây.

4) Vui mừng Lý do bạn đã thực hiện bước 2 và 3 là vì bây giờ bạn chắc chắn những dòng đó sẽ được coi là đa giác, có nghĩa là bây giờ chúng có dòng riêng trên Bảng thuộc tính. Nếu bạn kiểm tra nó, nó sẽ trông như thế này:

Cái đầu tiên là LUÔN LUÔN toàn bộ đa giác (tin tôi đi, tôi đã xóa vài trăm dòng ngày hôm nay ...) và phần còn lại là các dòng lỏng lẻo ở giữa. Bạn có thể kích hoạt chỉnh sửa và sẵn sàng hành động. Nếu bạn quyết định thử điều này, hai điều bạn nên ghi nhớ là: sắp xếp ID bảng của bạn , theo cách này, bạn chắc chắn rằng bạn không thiếu thứ gì và sử dụng shift để chọn cụm dữ liệu, giống như bất kỳ chương trình nào khác .

Tôi biết đây không phải là kem de la kem của QGIS giải quyết vấn đề, nhưng nếu bạn đang phải đối mặt với một tình huống mà các công cụ không làm việc vì của hình học không hợp lệ những dòng tạo (Tôi thậm chí đã cố gắng hòa tan bởi ID, nhưng nó không hoạt động), sau đó đây có thể là một lối thoát.


Bạn có thể cập nhật hình ảnh của bạn? Liên kết bị hỏng!
Simbamangu

Chào. Tôi xin lỗi, nhưng rõ ràng Photobucket đã chiếm đoạt hình ảnh của tôi, tôi đã mất quyền truy cập vào chúng. Tôi đã mở một vé và tôi đang cố gắng lấy lại quyền truy cập. Tôi sẽ lấy lại cho bạn bất cứ khi nào có thể.
Eric Lino
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.