Công cụ lấy mẫu ngẫu nhiên phân tầng


9

Có cách nào để tạo ra một số điểm ngẫu nhiên nhất định trên các lớp khác nhau trong một raster trong QGIS không? Tôi có các tiện ích mở rộng như GRASS hoặc GDAL, ...


Tôi không có câu trả lời nhưng một số cách. Có thể sử dụng r hoặc python nhưng hiện tại tôi không tìm thấy cách tốt nhất để làm điều đó. Tôi rất thú vị bằng cách trả lời. Tốt nhất
Cédric Lardeux

1
Bạn có thể thực hiện việc này một cách dễ dàng với lệnh v.random của GRASS GIS 7: xem grass.osgeo.org/grass72/manuals/ Kẻ
markusN

Bạn cũng có thể tạo các điểm ngẫu nhiên như một raster trực tiếp sử dụng r.randomvà tự mình tìm ra phần "trên các lớp khác nhau". Do đó, bạn có thể tránh các chuyển đổi qua lại từ raster sang vector, v.v. Xem grass.osgeo.org/grass72/manuals/r.random.html
Nikos Alexandris

Câu trả lời:


6

Có thể nếu bạn chuyển đổi raster của bạn thành một lớp vector.

Ví dụ nhanh, bắt đầu từ raster phân loại này:

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

Sử dụng Raster > Conversion > Polygonizeđể chuyển đổi nó thành một lớp vector:

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

Nếu bạn muốn tạo điểm trên toàn bộ một lớp (chứ không phải trên mỗi "bản vá" riêng biệt), hãy sử dụng Vector > Geometry Tools > Singleparts to Multipartscông cụ.

Sau đó đi đến Vector > Research Tools > Random Points, chọn lớp vectơ trước đó Input Boundary Layervà kiểm tra Use this number of pointstùy chọn nếu bạn muốn tạo cùng số điểm trong mỗi lớp:

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

Nếu bạn muốn thay đổi số điểm tùy thuộc vào lớp, hãy thêm một cột vào bảng thuộc tính của lớp đa giác trong đó bạn sẽ chỉ định số điểm cho mỗi lớp, sau đó kiểm tra Use value from input fieldtùy chọn (thay vì Use this number of points) trong Điểm ngẫu nhiên dụng cụ.

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


1
không có cách nào xung quanh việc tạo ra một vectorlayer? có vẻ như cần rất nhiều sức mạnh tính toán nếu raster rất lớn (chuyển đổi nó thành một vectơ) ...
Stophface

Đó là cách duy nhất tôi có thể nghĩ đến ... Có lẽ ai đó sẽ đi kèm với một giải pháp khác, nhưng tôi không nghĩ rằng bước này có thể tránh được.
ArMoraer

Hừm, đúng như tôi nghĩ. QGIS không hoàn thành tính toán. Tôi có thể đa giác hóa, nhưng singleparts to multipartsbit không hoạt động ... Nó bị
sập

Bạn cũng có thể thử công cụ Dissolve. DissIS gốc Dissolve có thể rất chậm, vì vậy bạn có thể thử Dissolve polygonscông cụ OGR thay thế (bạn sẽ tìm thấy nó trong hộp công cụ xử lý).
ArMoraer

tôi cũng đã thử cái đó Kết quả tương tự ... Như tôi đã nói: Đa giác tôi nhận được sau khi đa giác hóa raster của tôi là rất rất lớn. Tôi đã ngạc nhiên rằng đa giác hoạt động ...
Stophface

3

Như tôi đã viết: Với raster lớn, biến raster thành một vectơ và sau đó hòa tan một phần thành nhiều phần không hoạt động. Có một cách dễ dàng hơn để lấy mẫu trực tiếp trên raster bằng cách sử dụng R.

library(raster)
library(rgdal)

# read a raster, GeoTiff or something
forSampling <- raster(someRaster.tif)

# make stratified random sampling
# set sp = TRUE to get a spatialPointsDataframe
# that one can easily be converted into a shapefile
sampleSp <- sampleStratified(x = forSampling, size = 50, xy = TRUE, sp = TRUE)

# write it out to a shapefile for further processing
writeOGR(obj = sampleSp, dsn = "aa", layer = "sampleSp", driver="ESRI Shapefile") # this is in geographical projection
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.