Giảm mức độ xử lý raster trong ArcPy hoặc ArcGIS Desktop?


8

Tôi cần giảm mức độ xử lý raster của mình bằng một số loại thủ tục tự động trong python. Hiện tại các đường viền của bộ dữ liệu tôi đang sử dụng có sự bất thường (do việc phân loại các đường quét quét trên mặt đất).

Phân loại ScanLines

Tôi muốn giảm phạm vi xử lý raster để khi tôi truy xuất thông tin ở trên bằng hàm SetNull, các đường viền không được xử lý. Cái gì đó như Khu vực

Bây giờ điều này có thể dễ dàng được thực hiện với một trích xuất bằng chức năng mặt nạ (ví dụ hình 2) mặc dù điều đó sẽ yêu cầu lựa chọn thủ công vùng mặt nạ. Tôi có thể sử dụng để xác định vùng phạm vi (bỏ qua các giá trị nốt) trừ đi độ rộng đường viền theo hướng x và y của mỗi hàng / cột và sau đó sử dụng arcpy.env.extenttrong Python?


Bạn có thể chỉ cần lấy phạm vi của toàn bộ raster và sau đó trừ đi một khoảng cách tiêu chuẩn từ mỗi bên? Hay là quá đơn giản?
Radar

Điều đó sẽ hoạt động khi giả định rằng phạm vi được lấy từ các khu vực có giá trị chứ không phải toàn bộ khu vực (tức là giá trị
nốt

1
Tôi có một chút rắc rối để hiểu những gì tạo thành một "biên giới". Bạn có muốn tự động phát hiện các dị thường quét và sau đó cắt chúng không? Nếu vậy, bạn đang tìm kiếm một phương pháp cho phép bạn phát hiện những bất thường này?
Radar

Đường viền là khu vực của raster chứa các giá trị - có lẽ hình ảnh thứ hai ở trên hơi khó hiểu vì tôi thấy bây giờ chúng là các giá trị bên ngoài (phải có thêm một lớp hoạt động khi tôi chụp màn hình). Vùng rắn phía trên là đường viền raster - hình vuông màu đỏ là phạm vi raster mong muốn trong khi phạm vi raster hiện tại là toàn bộ hình ảnh (bao gồm các giá trị
gật

Câu trả lời:


9

Quy trình công việc này xử lý đầu tiên với rác trôi nổi xung quanh các cạnh và sau đó giải quyết vấn đề.

  1. Tạo một chỉ báo nhị phân của khu vực "viền" mà tôi sử dụng để bao gồm tất cả các ô NoData xung quanh. Thật thuận tiện khi sử dụng bất kỳ giá trị nào để chỉ ra đường viền và NoData cho phần còn lại, như trong SetNull(Not(IsNull('X')), 1):

    Biên giới

  2. Tập hợp lại kết quả và chọn thành phần viền. (Điều này thường có thể được tự động hóa bằng cách chọn thành phần có giá trị lớn nhất là [Đếm].) Hình ảnh sẽ trông gần giống nhau; chỉ có một vài pixel đi lạc ở trung tâm được loại trừ ở đây - nhưng chúng phải được loại trừ để bước tiếp theo hoạt động.

    (Một cách tiếp cận khác là sử dụng các hoạt động hình thái trước tiên để thu nhỏ đường viền và sau đó mở rộng lại: điều này xóa các bit bị cô lập ở giữa.)

  3. Tính toán khoảng cách lưới Euclide với thành phần đường viền.

    Khoảng cách

  4. Che dấu tất cả các khoảng cách nhỏ trong ảnh gốc, như trong SetNull(([Distance to Border component] < 30),X ):

    Kết quả

(Hình ảnh cuối cùng cho thấy đường viền gốc có màu xanh lá cây, để tham khảo, về kết quả.)

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.