Thí nghiệm Radar xuyên đất (GPR) là một dạng thí nghiệm không phá hoại hiện đang được sử dụng rộng rãi trong công tác bảo trì, bảo dưỡng công trình.
Một số ứng dụng chính của Radar xuyên đất (GPR) trong lĩnh vực xây dựng:
- Khảo sát nền đá, nền đất công trình
- Khảo sát, phát hiện các nứt gãy, khoang rỗng, hố tử thần dưới nền móng công trình
- Khảo sát đánh giá và nghiên cứu về trầm tích, địa chất
- Khảo sát địa hình đáy sông, hồ
- Khảo sát và nghiên cứu các hạng mục công trình đáy biển
- Xây dựng bản đồ hóa các tầng đất, đá, cuội sỏi
- Khảo sát nước ngầm
- Xây dựng bản đồ các mỏ ngầm, khoáng chất
- Khảo sát, đánh giá, phòng ngừa các thảm họa về môi trường thiên tai
- Khảo sát, đánh giá các khu vực có chất thải độc hại
- Khảo sát và xây dựng mô hình các khối đất đắp…

Các thiết bị GPR thường hỗ trợ hiển thị kết quả và truy xuất các dữ liệu khá đầy đủ. Tuy nhiên, kết quả này thường không rõ ràng trong một số trường hợp như xác định chiều dày các lớp kết cấu áo đường. Trong trường hợp này, chúng ta cần sử dụng một số kỹ thuật như áp dụng hệ số scale tuyến tính theo độ sâu nhằm thể hiện rõ ranh giới giữa các lớp. Để có thể làm được điều này, chúng ta cần phải tính toán và áp tỷ lệ scale vào dữ liệu thí nghiệm.
Python là công cụ mạnh mẽ và dễ sử dụng khi bạn muốn phân tích và hiệu chỉnh kết quả tính toán từ thí nghiệm. Bài viết này mình xin được hướng dẫn sử dụng ngôn ngữ lập trình Python để đọc và thể hiện kết quả từ dữ liệu thí nghiệm GPR ( Các bạn có thể tùy chỉnh code và áp dụng các tỷ lệ scale cho bài toán của mình)
Đầu tiên, bạn cần phải cài đặt gói Anaconda hỗ trợ cho mọi hệ điều hành theo hướng dẫn tại bài viết này
Sau khi cài đặt gói Anaconda, bạn mở Anaconda Powershell Prompt và nhập vào hai câu lệnh sau
1 |
conda activate py36 |
1 |
spyder |
Trình soạn thảo code Spyder sẽ hiển thị lên, các bạn tạo file mới và lưu vào thư mục mà bạn mong muốn, tốt nhất bạn nên lưu vào cùng thư mục với file dữ liệu scan truy xuất từ máy GPR.
File dữ liệu của mình được scan bởi máy GSSI – 400MHz, tần số lấy mẫu 512 mẫu/scan, thời gian 50 ns. Chiều dài đoạn Scan là 6 m. Với các thông số đã nêu, cấu trúc của file dữ liệu đầu vào có 512 cột tương ứng với số lượng mẫu và 1203 dòng tương ứng với chiều dài đoạn scan là 6 m, các bạn có thể tải file mẫu tại đây
Để tiến hành vẽ kết quả từ thí nghiệm Radar xuyên đất (GPR), các bạn sử dụng mã nguồn Python như sau.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# -*- coding: utf-8 -*- """ Created on Tue Dec 22 09:20:39 2020 @author: VietLe """ import os import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator # Input parameter filename = "CB-400-D1-P" time = 50e-9 # Scan range (second) lenscan = 6 # length of scan line (metre) data = [] isRead = False with open(filename) as f: for line in f: linedata = line.split('\t') if linedata[0] == "0": isRead = True if isRead is True: rowdata = [] for i in range(len(linedata)-1): if i > 1: rowdata.append(float(linedata[i])) if len(rowdata) > 0 : data.append(rowdata) arr = np.array(data).transpose() # Plot contour (path, filename) = os.path.split(filename) fig = plt.figure(num=filename, figsize=(20, 10), facecolor='w', edgecolor='w') # plot filled contour map with 100 levels z = arr p = np.linspace(0, lenscan, len(z[0])) # position t = np.linspace(0, time, len(z)) # time levels = MaxNLocator(nbins=100).tick_values(-np.max(abs(z)), np.max(abs(z))) #recommendation cmap = "seimic" / "binary" / "coolwarm" / "BrBG" cs = plt.contourf(p, t, z, 100, cmap='binary',vmin=-np.max(abs(z)),vmax=np.max(abs(z)),levels=levels) plt.ylim(np.max(t),0) plt.xlabel('Position [m]') plt.ylabel('Time [s]') # add default colorbar cb = plt.colorbar(cs) cb.set_label('Field strength [V/m]') plt.show() |
Một số lưu ý
- filename = “Tên file dữ liệu thí nghiệm Radar”
- time = 5e-9 là thời gian scan theo cấu hình của thiết bị (giây)
- lenscan = 6 m là chiều dài đoạn scan
- cmap = “binary”, các bạn có thể thay đổi kiểu màu sắc tương phản hiển thị. Các bạn có thể tham khảo dải màu tương ứng tại đây. Tuy nhiên, mình có đề xuất một số kiểu phổ màu tương phản và phù hợp với việc phân tích dữ liệu Radar nên bạn có thể thay đổi theo các dải màu gợi ý “seimic” / “binary” / “coolwarm” / “BrBG”

Trân trọng cảm ơn bạn đã dành thời gian đọc bài viết
Email: inbox.itec@gmail.com
Kênh Youtube: https://www.youtube.com/itecbkdn
Trân trọng cảm ơn ~