Hiển thị các bài đăng có nhãn QGIS. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn QGIS. Hiển thị tất cả bài đăng

Thứ Năm, 29 tháng 5, 2025

 

QGIS: Thay đổi kiểu trường String (text, chữ) to Number values (số) trong file shapefile

Tại sao cần thay đổi?

Khi chuyển đồi file địa hình số (từ CAD, mapinfo, v.v.) sang Shapefile thì trường độ cao Z có thể bị mất, bị lưu dạng text. Nếu là dạng text thì khi bạn cần sử dụng mô hình độ cao sẽ không được, cần chuyển sang kiểu trường là số.

QGIS có công cụ "Field Calculator" nằm ngay trong bảng thuộc tính khi mở ra.


Đầu tiên, mở bảng attribute table của layer bạn cần chuyển đổi. Tiếp đến, click the "Open Field Calculator" button. Trong ô cửa sổ hàm "Expression" nhập công thức to_real( "Text" ) . Trong đó "Text" là tên trường chứa số đang lưu dạng chữ mà bạn cần chuyển đổi. Cuối cùng click "OK" để xem kết quả.


Tóm lại:
  1. Mở bảng thuộc tính lớp cần chuyển đổi
  2. Vào "Field Calculator"
  3. Bấm "Update Existing field"
  4. Dùng hàm: to_real("attributeName"). Lưu lại.
(Copy hàm như sau: to_real( "Text" )(Thay trong dấu " " bằng tên trường cần chuyển. Xem hình dưới nếu trường có tên dài thì bấm vào phần Fields and Values nó sẽ ra luôn không phải gõ tay nhé!)

  1. (Hàm có thể tìm bằng từ khoá: conversions)
  2. Nếu thấy nội dung hữu ích, bạn có thể mời Ad 1 ly cafe động viên.





Thứ Năm, 15 tháng 5, 2025

 Hiển thị nhãn công trình theo nhiều thông số (theo dạng phân số tách biệt) trên QGIS là một ưu điểm của phần mềm này. Thay vì phải nhập tay, ta chỉ cần có 1 bảng dữ liệu kèm theo công trình đó là có thể show lên bản vẽ. Ngoài ra, style của nhãn này cũng có thể lưu lại để sử dụng cho những lần sau mà không phải làm lại.

Hình 1. Hiển thị nhãn chuyên nghiệp
Như hình trên, một lỗ khoan có thể show ra tới 4 thông số: Tên/ Độ cao miệng/  Chiều sâu/ Chiều dày khoáng hoá. v.v.
Đương nhiên, có thể còn làm thêm nhiều phân số nữa kèm theo cho dày đặc thông tin.

Cách làm cụ thể như sau:

1. Chuẩn bị

Tất nhiên phải có layer công trình rồi. Công trình đó phải có bảng thuộc tính gồm các cột (fields) thông tin cần hiển thị (tên, X, Y, Z, Độ sâu, Chiều dày quặng, v.v.v)

2. Duplicated layer đó (nhân bản thêm 1 lớp)

Duplicate layer
3. Nhấp đup vào layer "Nhân bản", và hiệu chỉnh:
- Symbology: chọn về single symbol.
Với đường gạch ngang ta chọn ở ô Symbol layer type là Simple maker, kéo chuột xuống chọn là đường kẻ dọc.


Chú ý: Size cho to lên thì nó dài ra, Rotation: quay 90 thì nằm ngang, Offset: chính là vị trí của đường, cứ thay đổi x,y tới khi phù hợp.

- Tiếp theo là thêm các cột thông tin, ta vào nút dấu (+) để add thêm symbol, kiểu ta chọn Font maker
Font chữ, màu sắc, cỡ chữ tuỳ ta chỉnh cho phù hợp bản vẽ.





Vị trí để chữ nó chạy gần ra cái đường kẻ vừa tạo, ta chỉnh x, y như ảnh.
Tiếp theo là quan trọng nhất: kéo xuống dưới và chọn Edit như hình:


Sau đó ta tìm vào mục Fields and Values để hiển thị các trường thông tin cần thiết:


Bấm OK và Apply để xem kết quả.
Làm tương tự với các trường còn lại ta sẽ có kết quả cuối cùng như hình 1.

Quan trọng: sau khi làm xong và thấy hiển thị đẹp rồi, ta cần lưu file style này lại, lần sau chỉ việc import nó vào là xong, không phải làm nhiều bước như trên.

Nói thì lâu/ à quên nhanh, chứ ngồi làm theo thì phải mất 1h là ít với các bạn chưa làm bao giờ. Thôi thời gian là tiền bạc mà, học phải mất nhiều bạc lắm :).
Viết ra thì lâu, chứ nếu quay video thì cũng nhanh lắm. Nhưng mà đã có nhiều người làm rồi, nếu chưa hiểu có thể lên youtube xem lại nhé!

Nếu thấy nội dung hữu ích, bạn có thể mời Ad 1 ly cafe động viên.





Thứ Tư, 12 tháng 2, 2025

 QGIS tips #2 kế thừa Tip #1, ta sẽ thiết kế layer point (hoặc line) chuyên nghiệp và gọn gàng hơn.

Khi đăng ký account Qfield thì bạn để ý có các Sample projects. Hãy thử mở lên tham khảo nhé.

Layer point được thiết kế đẹp, tiện dụng và có nhiều fields rất hay (x,y,z, bố trí các tab menu ...)

Vậy làm sao ta thiết kế được kiểu như họ, để nhóm gọn các trường thông tin cần thu thập lại từng tab như này:


Tải project BEE này về QGIS nghiên cứu tại địa chỉ sau: https://docs.qfield.org/get-started/sample-projects/
 Xem video giới thiệu về Project này tại: 


Ở project BEE ví dụ này, ta thấy lớp point thu thập thông tin họ bố trí rất gọn và dễ theo dõi. Đầu tiên là Tab các thông tin chung: số lượng tổ, loài, số lượng, Tab 2 là ảnh chụp, Tab 3 là các sự kiện v.v.v 
Các tab này như kiểu 1 trang web vậy.
Để thiết kế các tab này các bạn phải làm trên Qgis nhé. Đầu tiên vẫn là phải có các trường (fields) mà ta cần thu thập. Tham khảo Tip #1.


Mấu chốt là vào layer point điểm khảo sát đó, Properties/ Attributes Form: chọn kiểu thiết kế Drag & Drop Designer.


Để tạo Tab gom các field vào 1 chỗ, ta bấm vào nút (+) trên hình bước 1. sau đó điền tên tab ở bước 2, chọn Type là Row (3), rồi ấn OK. Tab sẽ nhảy vào phần Form layout. PHần này ta kéo các field cần thu thập vào từ bên tay trái (như hình trên là các trường Name, East, North, RL ...) -- Kéo thả nhé. Sau đó chọn nhiều field ở phần Form layout rồi kéo thả vào cái tab ta vừa tạo (kiểu như ta tạo các mục con cho mục lớn là Tab đó). Vậy là xong, cứ tương tự làm thì sẽ có nhiều tab thôi.

---> Viết cho khỏi quên.
Dù viết tip cho Qfield nhưng vẫn recommend dùng MerginMap vì dễ tạo group, sync đồng bộ dễ dàng, nhanh chóng. Lớp point này cũng dùng được cho MerginMap nhé, vì nó tạo từ Qgis mà. Duy phần lấy độ cao, nếu hàm kia không được thì dùng hàm khác phù hợp!

Hàm kia là hàm nào, xem tip #1



Thứ Sáu, 7 tháng 2, 2025

 Với nhiệm vụ thu thập thông tin thực địa, thiết bị điện thoại rất hữu ích khi cài thêm apps hỗ trợ như Qfield, MerginMap ...

Dữ liệu thu thập sẽ có 2 loại: points và lines. Ta cần thiết kế sẵn các trường (fields) để khi ngoài thực tế khi tới điểm cần thu thập chỉ việc lựa chọn hoặc tick vào, hoặc sổ ra các catalogy ...

Đầu tiên, cứ tạo 1 layer point bình thường có hệ quy chiếu theo bản đồ nền vùng làm việc.

Tiếp theo ta tạo các fields theo mục đích công việc. VD có thể có field tên điểm, tọa độ X, Y, Z, mô tả, ảnh chụp, phân loại v.v. nên tạo dạng *.gpkg để QGIS đóng gói luôn layer đó cho đỡ nhiều file lẻ tẻ!

Sau đó vào Layer chọn Property, Kéo gần dưới cùng mục Attributes Form, chọn kiểu Drag and Drop desiger ...

Rồi tới công chuyện luôn.



với trường X,Y, Z, ta hoàn toàn có thể để Qfield tự cập nhật khi tới thực địa. Nên để ý mục Default để chọn 1 hàm thích hợp, vd $X, $Y để tự điền tọa độ, tuy nhiên phần cao độ sẽ hơi khác. Hàm lấy độ cao tự động của MerginMap sẽ là: @position_altitude (đã check ok). Như hình dưới độ cao đã cập nhật.



Của Qfield thấy bảo là hàm : z($geometry) (đã check không được). Nhưng may là đã làm được bằng hàm khác!  z(@position_coordine) -->Xem cuối bài.


Còn phần tên điểm ta cũng có thể tạo các tiền tố của tên cho nhanh, ra thực địa chỉ thay số thứ tự thôi.


Trên hình, chú ý phần Widget type: nếu là chữ ta chọn text edit, nếu là ngày tháng thì chọn Date v.v.
Sau đó phần Constraints, nếu cần không được lặp lại ta tick vào Unique (tên duy nhất)/ Not null (không để trống), nếu 2 điểm có thể có mô tả giống nhau thì đừng tick vào.

Đây là phần hay nhất. Tạo 1 menu sổ ra các mục tương ứng khi ta gặp thực tế (đoán trước). VD các loại đá, đất, cây, hoa, nhà v.v.v. Ta chọn Value Map, các value tự điền vào.
Sau này thực tế sẽ sổ ra menu cho ta chọn, không mất thời gian điền nữa.
Còn 1 field cần điền là phần mô tả thêm, ta tạo trường Text, độ dài tùy ý.
Trường chụp ảnh có thể có/ không (vì nặng data). KHám phá ở Widget type!

Tham khảo video về MerginMap, App đắt mà chất như nước cất! Cho dùng thử 1 tháng, nhóm upto 6 thành viên.



Viết cho khỏi quên - 2025.
Update: đã tạo được trường tự động lấy độ cao trên Qfield:

Tạo một lớp điểm, nó không cần phải có z-demention, tôi đã thử có và không có. Cả hai đều hoạt động. Thêm trường kép có tên z_value: nhập mô tả hình ảnh ở đây:

Đi tới: Thuộc tính lớp - Biểu mẫu thuộc tính - Trình thiết kế kéo và thả. Kéo trường z_value vào biểu mẫu. Đặt giá trị mặc định thành hàm: 
z(@position_coordine)
và chọn "Áp dụng giá trị mặc định khi cập nhật" - Defaults. Khi bạn tạo một điểm ngoài đời thực bằng Qfield, trường z_value sẽ được cập nhật tự động: