Chỉnh sửa và tính toán Raster

Một phần của tài liệu Đồ án thiết kế và xây dựng cơ sở dữ liệu ảnh vệ tinh trong hệ quản trị cơ sở dữ liệu không gian PostGIS (Trang 71 - 73)

• Thiết lập giá trị điểm ảnh: hàm ST_SetValue(raster, band, geometricpoint, newvalue) trả lại một raster mới là kết quả từ việt thiết lập giá trị của kênh được đưa ra trong điểm ảnh cột x và hàng y hoặc tại một điểm ảnh giao nhau với một điểm hình học cụ thể. Kênh 1 là bắt đầu và nếu không kênh nào được xác định thì nó sẽ được giả định.

UPDATE dummy_rast

SET rast = ST_SetValue(rast,1, ST_Point(3427927.75, 5793243.95),100) WHERE rid = 1 ;

• Phân lại lớp raster: hàm ST_Reclass(raster, band, reclassexpression, pixeltype, nodatavalue) tạo một raster mới bằng cách áp dụng một hoạt động đại số có ý nghĩa PostgreSQL xác định một lớp hiển thị trên kênh raster đầu vào. Số kênh xác định sẽ được thay đổi. Nếu không xác định, sẽ giả định là 1.

Tất cả các kênh khác không thay đổi. Raster mới có cùng tham chiếu địa lý, chiều rộng, cao như raster ban đầu. Trường hợp sử dụng: chuyển một kênh 16 BUI sang kênh 8 BUI và như vậy sẽ đơn giản hơn.

ALTER TABLE dummy_rast ADD COLUMN reclass_rast raster; UPDATE dummy_rast

SET reclass_rast = ST_Reclass(rast,2,’0-87:1-10, 88-100:11-15, 101-254:0-0’, ’4BUI’,0)

WHERE rid = 1;

• Hàm cắt raster ST_clip(raster, band, geometry) trả về một raster mới được cắt bởi một hình đầu vào. Nếu không có kênh xác định sẽ trả về tất cả các kênh.

SELECT ST_Clip(rast, ST_Buffer(ST_Centroid(ST_Envelope(rast)), 20), false ) FROM aerials.boston

WHERE rid = 4;

• Áp dụng hàm ST_MapAlgebraExpr(raster, band, pixeltype, expression) tạo một kênh raster mới bằng cách áp dụng hàm PostgreSQL hợp lý trên kênh raster đầu vào. Kênh 1 được xác định nếu không xác định kênh nào. Raster mới sẽ có tham chiếu địa lý, rộng và cao giống raster ban đầu nhưng sẽ chỉ có một kênh. Nếu kiểu điểm ảnh được đề cập, raster mới sẽ có một kênh của kiểu điểm ảnh đó. Nếu là null, kênh raster mới sẽ có kiểu điểm điểm ảnh giống kênh raster đầu vào.

Hình 3.2: Cắt raster ALTER TABLE dummy_rast ADD COLUMN map_rast raster;

UPDATE dummy_rast SET map_rast = ST_MapAlgebraExpr(rast,NULL, ’CASE WHEN rast < 0 THEN rast+10 ELSE NULL END’) WHERE rid = 1;

Một phần của tài liệu Đồ án thiết kế và xây dựng cơ sở dữ liệu ảnh vệ tinh trong hệ quản trị cơ sở dữ liệu không gian PostGIS (Trang 71 - 73)