Giờ mình sẽ hướng dẫn mọi người thực hiện từng bước nhé.
Bước 1: Hoàn thiện câu lệnh lọc dữ liệu Select
- Đầu tiên chúng ta vào pgAdmin3 để thực hiện thử lệnh Select
Giao diện trình quản lý dữ liệu pgAdmin3
Ai chưa biết vào pgAdmin3 thì đọc lại bài Sử dụng pgAdmin3 để truy cập cơ sở dữ liệu Postgres và lọc dữ liệu
- Tiếp theo ta sẽ gõ vào lệnh Select để lọc dữ liệu các lô rừng theo ý của mình. Đối với những anh chị chưa quen chúng ta có thể gõ từ từ từng phần một để chắc chắn lệnh của mình gõ vào là chính xác.
- Đầu tiền ta sử dụng kiến thức về kết nối giữa các bảng và từ khóa AS để lấy thông tin từ bảng PLOT (lô rừng), COMMUNE (xã), DISTRICT (huyện), PROVINCE (tỉnh), FOREST_ACTOR (chủ rừng), FOREST_TYPE (loại đất loại rừng), TREE_SPECIE (loài cây) ... để lấy ra các trường sau:
Mã xã, tên xã, mã huyện, tên huyện, mã tỉnh, tên tỉnh, tiểu khu, khoảnh, lô, ......mã LĐLR, tên LĐLR, mã chủ rừng, tên chủ rừng, mã loài cây.
Ở đây tôi sẽ lấy điều kiện là xã Tam Quan Bắc, huyện Hoài Nhơn, Bình Định
Lệnh Select tương ứng như sau:
Lệnh Select gồm 4 phần:
1- Select: liệt kê ra các trường cần hiển thị, việc đổi từ trường Tiếng Anh sang Tiếng Việt được quy định bằng từ khóa as.
Chổ này chúng ta có thể tham khảo bảng tham chiếu thuộc tính lô rừng để thêm vào các trường cho đúng ý mình nhé.
2- From: phần kết nối các bảng có chứa các trường tương ứng ở trên.
3- Where: Điều kiện để lọc ra danh sách. Ở trên là lọc theo xã tương ứng mã 21655
4-Order by: đây là phần sắp xếp danh sách theo trường khóa nào đó.
Nếu dùng muốn xuất ra Shapefile thì trong phần 1 Select bạn phải đưa vào trường GEOM
select
a.commune_code as MAXA, b.name as XA,
b.district_code as MAHUYEN, c.name as HUYEN,
c.province_code as MATINH, d.name as TINH,
a.compt_code as TK, a.sub_compt_code as KHOANH, a.plot_code as LO, a.parcel_code as THUAD, a.map_sheet as TOBANDO, a.village as DDOANH,
a.area as DTICH, a.forest_org_code as NGGOCR, a.forest_type_code as MALDLR, e.forest_type_def as LDLR, abbreviation as KYHIEULDLR,
a.tree_spec_code as MALOAICAY,
a.actor_id as MACHURUNG, f.actor_name as CHURUNG, a.geom
from
PLOT a inner join COMMUNE b on a.commune_code=b.commune_code
inner join DISTRICT c on b.district_code=c.district_code
inner join PROVINCE d on c.province_code=d.province_code
inner join FOREST_TYPE e on a.forest_type_code=e.forest_type_code and e.lang='vi'
inner join FOREST_ACTOR f on a.actor_id=f.actor_id
where a.commune_code=21655
order by a.compt_code, a.sub_compt_code, a.plot_code
Chạy thử lệnh nhé:
Kết quả thực thi lệnh Select trong pgAdmin3
Bước 2: Xuất danh sách này ra Shapefile
Mở Checker Tool mới nhất, chọn lệnh Xuất thành Shapefile
Tuần tự chọn các bước như trên hình
1: Kết nối đến dữ liệu (bước này yêu cầu phải khởi động cơ sở dữ liệu của FRMS)
2: Bật tùy chọn Sử dụng lệnh Select
3: Copy và Paste lệnh SQL đã hoàn thiện ở bước 1
4: Bấm thay đổi và chọn tên Shapefile để lưu thành
5: Bấm thực thi để xuất ra Shapefile
Shapefile được tạo ra trên máy tính
Bước 3: Thêm vào Qgis
- Mở Qgis và đăng nhập vào tài khoản
mở Qgis và bấm vào Thêm lớp Vector để thêm lớp Shapefile vào
Chọn đường dẫn đến Shapefile vừa được tạo ra
Kích phải chuột lên lớp Shapefile và chọn mở bảng thuộc tính
Trong bảng thuộc tính, tên các trường là Tiếng Việt như trong lệnh Select mà ta quy định.
Rồi, qua khá nhiều bước và kỹ năng cuối cùng ta cũng có được 1 file shape có các trường thuộc tính bằng Tiếng Việt.
Các anh chị nào quan tâm tới bài này có thể nghiên cứu thêm phần 1 (select) và 3 (where) trong cấu trúc lệnh select ở trên. Ai muốn thêm cái gì nhưng không biết thay đổi thế nào thì comment phía dưới tôi sẽ hỗ trợ.
Một điều tôi chưa hài lòng ở bài này là không biết sao mà lệnh select thì ra các giá trị Tiếng Việt Unicode ngon lành nhưng khi xuất ra Shapefile thì Tiếng Việt lại bị lổi loằng ngoài như font ABC. tôi sẽ nghiên cứu chổ này vào Update sau, hoặc ai phát hiện ta thì báo giúp nhé.
Tag: shapefile, bang thuoc tính tieng viet
Thank you chia sẽ. Nhưng bạn cho mình xin file được k? chứ mình làm quài mà ko đươc :(
ReplyDelete