3.4 Các bƣớc giải quyết bài toán
Bƣớc 1: Kích hoạt extension PostGIS, import dữ liệu vào PostgreSQL Với database sử dụng cho bài toán là VN;
Import dữ liệu ảnh viễn thám cấu trúc Raster (phần mở rộng TIF) và ảnh địa giới hình chính cấu trúc Vector (phần mở rộng SHP) dựa trên 2 module là Raster2pgsql và shp2pgsql
- Với đối tượng ảnh viễn thám
Bảng có tên ras sẽ được tạo ra trong database VN và được dùng để chứa các thông tin trong ảnh Raster. Cấu trúc của bảng như sau
<rid, [PK], serial> | <rast, Raster> | <filename, text>
Bắt đầu
Tính toán khoanh vùng biên (vector)
Kết thúc Giao với
ảnh
Đọc lấy các lát ảnh thỏa mãn giao với vùng biên
Chuyển đối sang cấu trúc dạng file geotiff, lưu ra
file ảnh True False Nạp ảnh raster và ảnh vector $ raster2pgsql -s 32648 -I -C -M /home/user/Downloads/VN/*.TIF -F -t
Bảng siêu dữ liệu Raster_column sẽ được bổ sung thêm 1 hàng để chứa thông
tin về bảng ras
- Với đối tượng ảnh địa giới hành chính
Bảng có tên shp1 sẽ được tạo ra trong database VN và được dùng để chứa các
thông tin trong ảnh địa giới hành chính. Cấu trúc của bảng như sau
Tương tự, bảng siêu dữ liệu geometry_column sẽ được bổ sung thên 1 hàng để
chứa thông tin về bảng shp1
Bƣớc 2: Xử lý dữ liệu đưa vào
Do dữ liệu ảnh LANDSAT sử dụng hệ tham chiếu UTM, nên sẽ có sự chênh lệch về tọa độ tham chiếu giữa các ảnh với nhau. Vì thế, chúng ta phải đồng nhất hệ tham chiếu cho tất cả các ảnh, việc đồng nhất này sẽ được thực thi bằng hàm
st_transform(), giá trị SRID là 32648
- Lấy 1 ảnh làm ảnh tham chiếu với hệ tham chiếu xác định
$ shp2pgsql -s 32648 /home/user/Downloads/shapemap/VNM.shp public.shp1 | psql -U postgres -d VN -h localhost -p 5432
- Chuyển tất cả các ảnh dữ liệu LANDSAT về cùng một tọa độ tham chiếu
- Tương tự đối với dữ liệu ảnh Vector, chúng ta cũng cần đưa giá trị tọa độ ảnh
về cùng với giá trị tọa độ tham chiếu
- Sau khi đưa hết các dữ liệu về cùng một hệ tọa độ tham chiếu, chúng ta có thể
tiến hành việc cắt ảnh vệ tinh cấu trúc Raster theo ranh giới địa lý đã cho theo
Bƣớc 3: xuất file dữ liệu
Dữ liệu ảnh cắt được có thể xuất ra và hiển thị dưới dạng dạng tiff, png, jpeg… dựa vào các hàm st_AsTiff(), st_AsPNG(), st_AsJPEG() hoặc import vào các bảng dữ liệu khác để tiếp tục xử lý.
Create view ras_alli AS
Select st_transform(rast,32648) As rast_alignto FROM ras69 limit 1;
SELECT st_transform(ras.rast, ras_alli.rast_alignto) AS rast FROM ras, ras_alli;
SELECT st_transform(geom, 32648) AS geom FROM shp1;
select st_union( st_clip(st_transform(rast,1,geom,true) ) from ras, shp1
where st_intersects(rast, geom);
ST_AsPNG(st_union); ST_AsTiff(st_union); ST_AsJPEG(st_union);
COPY (SELECT encode(ST_AsPNG(st_union), 'hex') FROM test ) TO '/tmp/<filename>.hex'
3.5 Kết quả thực nghiệm
Bài toán sẽ thực hiện cắt ảnh vệ tinh viễn thám LANDSAT theo đường địa giới hành chính Hà Nội
- Dữ liệu ảnh OUTPUT