1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận án nghiên cứu xác định dị thường độ cao trên cơ sở kết hợp các dữ liệu mặt đất và vệ tinh, áp dụng cho khu vực miền trung việt nam

189 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT NGUYỄN THÀNH LÊ Lu ận NGHIÊN CỨU XÁC ĐỊNH DỊ THƯỜNG ĐỘ CAO án TRÊN CƠ SỞ KẾT HỢP CÁC DỮ LIỆU MẶT ĐẤT VÀ VỆ TINH, ÁP DỤNG CHO KHU VỰC MIỀN TRUNG VIỆT NAM n tiế sĩ M ới LUẬN ÁN TIẾN SĨ KỸ THUẬT ất nh Hà Nội - 2023 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT NGUYỄN THÀNH LÊ Lu ận NGHIÊN CỨU XÁC ĐỊNH DỊ THƯỜNG ĐỘ CAO án TRÊN CƠ SỞ KẾT HỢP CÁC DỮ LIỆU MẶT ĐẤT VÀ VỆ TINH, ÁP DỤNG CHO KHU VỰC MIỀN TRUNG VIỆT NAM n tiế sĩ M LUẬN ÁN TIẾN SĨ KỸ THUẬT ới Ngành: Kỹ thuật Trắc địa- đồ Mã số: 9.520503 nh ất Người hướng dẫn khoa học PGS.TS Nguyễn Văn Sáng GS.TS Bùi Tiến Diệu Hà Nội - 2023 i LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu khoa học độc lập riêng Các kết nghiên cứu luận án có sở tìm hiểu nghiên cứu tài liệu, phân tích cách trung thực, khách quan áp dụng điều kiện thực tiễn Việt Nam Các kết chưa công bố nghiên cứu khác Tác giả luận án ận Lu án Nguyễn Thành Lê n tiế sĩ ới M ất nh ii MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT TIẾNG VIỆT VÀ TIẾNG ANH viii DANH MỤC CÁC BẢNG xi DANH MỤC CÁC HÌNH xii Lu MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ NGHIÊN CỨU XÁC ĐỊNH DỊ THƯỜNG ĐỘ CAO ận Ở VIỆT NAM VÀ TRÊN THẾ GIỚI án 1.1 Tổng quan nghiên cứu xác định dị thường độ cao giới 1.1.1 Xác định dị thường độ cao xây dựng mơ hình Quasigeoid Slovakia tiế 1.1.2 Xác định dị thường độ cao mơ hình Geoid khu vực Châu Âu n 1.1.3 Xác định dị thường độ cao xây dựng mơ hình Geoid Hoa Kỳ sĩ 1.1.4 Xác định dị thường độ cao xây dựng mơ hình Geoid Canada M 1.1.5 Xác định dị thường độ cao xây dựng mơ hình Quasigeoid Ba Lan ới 1.1.6 Xác định dị thường độ cao xây dựng mơ hình Quasigeoid Australia 10 nh 1.1.7 Xác định dị thường độ cao xây dựng mơ hình New Zealand 11 1.1.8 Xác định mơ hình Geoid cho lãnh thổ Iran 11 ất 1.2 Tổng quan nghiên cứu xác định dị thường độ cao Việt Nam 13 1.2.1 Thành lập hệ độ cao chuẩn thống cho lãnh thổ lãnh hải Việt Nam sở không sử dụng mặt nước biển trung bình 13 1.2.2 Xây dựng mơ hình Geoid địa phương lãnh thổ Việt Nam 14 1.2.3 Xác định ảnh hưởng độ cao địa hình dị thường độ cao độ lệch dây dọi 15 1.2.4 Chính xác hóa dị thường độ cao EGM2008 dựa liệu GNSS-Thủy Chuẩn 15 1.2.5 Xây dựng mơ hình Quasigeoid quốc gia khởi đầu VIGAC2017 16 iii 1.2.6 Nghiên cứu sử dụng liệu trọng lực Việt Nam hiệu chỉnh hệ số điều hòa mơ hình EGM2008 17 1.2.7 Nghiên cứu xây dựng mơ hình Geoid khu vực miền Trung nước ta sở số liệu quan trắc yếu tố nhiễu 18 1.2.8 Vấn đề nghiên cứu ứng dụng liệu trọng lực vệ tinh xác định dị thường độ cao xây dựng mơ hình Quasigeoid Việt Nam 19 1.3 Những vấn đề cần tiếp tục nghiên cứu 22 Lu CHƯƠNG NGHIÊN CỨU PHƯƠNG PHÁP XÁC ĐỊNH DỊ THƯỜNG ĐỘ CAO TRÊN CƠ SỞ KẾT HỢP CÁC DỮ LIỆU MẶT ĐẤT VÀ VỆ TINH CHO KHU VỰC MIỀN ận TRUNG VIỆT NAM 24 án 2.1 Dị thường độ cao đại lượng liên quan 24 2.1.1 Telluroid 24 tiế 2.1.2 Quasigeoid 25 n 2.1.3 Độ cao chuẩn 25 sĩ 2.1.4 Dị thường độ cao 25 M 2.1.5 Dị thường trọng lực 26 ới 2.2 Các loại liệu sử dụng để xác định dị thường độ cao 28 nh 2.2.1 Dữ liệu trọng lực vệ tinh CHAMP, GRACE GOCE 29 ất 2.2.2 Dữ liệu mơ hình trọng trường Trái Đất 29 2.2.3 Dữ liệu địa hình 33 2.2.4 Dữ liệu trọng lực đo trực tiếp đất liền dự án đo cao vệ tinh biển 34 2.2.5 Dữ liệu dị thường độ cao GNSS-Thủy chuẩn 35 2.3 Nguyên tắc xử lý liệu từ nguồn khác 36 2.3.1 Tính đổi tính chuyển tọa độ 36 2.3.2 Tính chuyển liệu hệ triều 38 2.3.3 Thống sở toán học xử lý nguồn liệu kết hợp 39 iv 2.4 Phát loại bỏ sai số thô liệu đo 41 2.4.1 Phát loại bỏ sai số thô liệu dị thường trọng lực 42 2.4.2 Phát loại bỏ sai số thô liệu dị thường độ cao điểm song trùng GNSSThủy chuẩn 42 2.5 Loại bỏ thành phần bước sóng dài từ mơ hình trọng trường Trái Đất liệu dị thường trọng lực liệu dị thường độ cao 43 2.5.1 Các mơ hình trọng trường Trái Đất 43 Lu 2.5.2 Đánh giá lựa chọn mơ hình trọng trường Trái Đất phù hợp với khu vực nghiên ận cứu 44 2.5.3 Giới thiệu mơ hình trọng trường Trái Đất EIGEN-6C4 46 án 2.5.4 Loại bỏ thành phần bước sóng dài từ mơ hình trọng trường Trái Đất liệu dị thường trọng lực 47 tiế 2.5.5 Loại bỏ thành phần bước sóng dài từ mơ hình trọng trường Trái Đất liệu dị n thường độ cao 48 sĩ 2.6 Loại bỏ ảnh hưởng địa hình liệu dị thường trọng lực liệu dị thường M độ cao theo phương pháp RTM 48 ới 2.6.1 Phương pháp RTM 48 nh 2.6.2 Cơ sở lựa chọn dị thường RTM Việt Nam 49 2.6.3 Mơ hình địa hình phần dư RTM 50 ất 2.6.4 Loại bỏ thành phần bước sóng ngắn bước sóng trung ảnh hưởng địa hình liệu dị thường trọng lực 52 2.6.5 Loại bỏ thành phần bước sóng ngắn bước sóng trung ảnh hưởng địa hình liệu dị thường độ cao GNSS-Thủy chuẩn 53 2.7 Tính phần dư dị thường độ cao từ dị thường phần dư trọng lực theo phương pháp Collocation bình phương nhỏ 53 2.7.1 Cơ sở phương pháp Collocation bình phương nhỏ 53 2.7.2 Xác định hiệp phương sai thực nghiệm 55 v 2.7.3 Xác định tham số hàm hiệp phương sai lý thuyết 56 2.7.4 Nội suy phần dư dị thường độ cao từ phần dư dị thường trọng lực theo phương pháp Collocation bình phương nhỏ 60 2.7.5 Nội suy phần dư dị thường độ cao từ phần dư dị thường độ cao trọng lực theo phương pháp Collocation bình phương nhỏ 63 2.7.6 Nội suy phần dư dị thường độ cao từ phần dư dị thường trọng lực dị thường độ cao GNSS-Thủy chuẩn theo phương pháp Collocation bình phương nhỏ 64 Lu 2.7.7 Nội suy phần dư dị thường độ cao từ phần dư dị thường độ cao trọng lực dị thường độ cao GNSS-Thủy chuẩn theo phương pháp Collocation bình phương nhỏ 66 ận 2.8 Phục hồi thành phần bước sóng dài từ mơ hình trọng trường Trái Đất thành phần án bước sóng trung, bước sóng ngắn ảnh hưởng địa hình vào kết tính phần dư dị thường độ cao 69 tiế 2.9 Đánh giá độ xác xác định dị thường độ cao sở kết hợp liệu 69 n 2.10 Xây dựng quy trình xác định dị thường độ cao sở kết hợp liệu cho khu sĩ vực miền Trung Việt Nam 71 M 2.10.1 Các bước xác định dị thường độ cao sở kết hợp liệu 71 ới 2.10.2 Quy trình xác định dị thường độ cao sở kết hợp liệu cho khu vực miền Trung Việt Nam 75 nh 2.11 Xây dựng module chương trình phục vụ việc xác định dị thường độ cao sở ất kết hợp liệu 76 2.11.1 Giới thiệu phần mềm GRAVSOFT Ver 2.97 76 2.11.2 Xây dựng module chương trình xác định phương sai mức sai số phương sai mức77 2.11.3 Xây dựng module chương trình xác định dị thường trọng lực dị thường độ cao từ hệ số hàm điều hòa cầu 79 2.11.4 Xây dựng module chương trình xác định ảnh hưởng địa hình theo phương pháp RTM 81 2.11.5 Xây dựng module chương trình xác định hiệp phương sai thực nghiệm 85 vi 2.11.6 Xây dựng module chương trình xác định hàm hiệp phương sai lý thuyết 87 CHƯƠNG THỰC NGHIỆM XÁC ĐỊNH DỊ THƯỜNG ĐỘ CAO CHO KHU VỰC MIỀN TRUNG VIỆT NAM TRÊN CƠ SỞ KẾT HỢP CÁC DỮ LIỆU MẶT ĐẤT VÀ VỆ TINH 92 3.1 Khu vực thực nghiệm liệu sử dụng 92 3.1.1 Đặc điểm khu vực thực nghiệm 92 3.1.2 Dữ liệu sử dụng 93 Lu 3.2 Xác định dị thường độ cao sở kết hợp liệu mơ hình EIGEN-6C4 liệu ận GNSS-Thủy chuẩn (PA1) 102 3.2.1 Các bước thực 102 án 3.2.2 Thực nghiệm PA1 103 tiế 3.3 Xác định dị thường độ cao sở kết hợp liệu trọng lực, liệu mơ hình EIGEN6C4 liệu GNSS-Thủy chuẩn (PA2) 109 n 3.3.1 Các bước thực 109 sĩ 3.3.2 Thực nghiệm PA2 110 M 3.4 Xác định dị thường độ cao sở kết hợp liệu trọng lực, liệu mơ hình EIGEN- ới 6C4, liệu địa hình liệu GNSS-Thủy chuẩn (PA3) 118 nh 3.4.1 Tính ảnh hưởng địa hình theo phương pháp RTM 119 ất 3.4.2 Thực nghiệm PA3 119 3.5 Tổng hợp kết phương án tính tốn thực nghiệm 128 KẾT LUẬN VÀ KIẾN NGHỊ 132 DANH MỤC CÁC BÀI BÁO, CƠNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ 134 TÀI LIỆU THAM KHẢO 135 PHỤ LỤC BẢNG TỔNG HỢP KẾT QUẢ TÍNH TỐN LOẠI BỎ ẢNH HƯỞNG BƯỚC SĨNG DÀI, BƯỚC SÓNG TRUNG VÀ BƯỚC SÓNG NGẮN CỦA DỮ LIỆU ĐO NHẰM PHÁT HIỆN SAI SỐ THÔ 142 vii PHỤ LỤC BẢNG MINH HỌA TỔNG HỢP DỊ THƯỜNG ĐỘ CAO GNSS-THỦY CHUẨN VÀ DỊ THƯỜNG ĐỘ CAO TƯƠNG ỨNG CỦA 04 MƠ HÌNH: EIGEN-6C4, SGG-UGM-1, GECO, EGM2008 VỚI DỮ LIỆU 131 ĐIỂM SONG TRÙNG 144 PHỤ LỤC KẾT QUẢ SO SÁNH GIỮA CÁC MODULE CHƯƠNG TRÌNH MÁY TÍNH MỚI VÀ CHƯƠNG TRÌNH TRONG BỘ GRAVSOFT 145 PHỤ LỤC MINH HỌA BỘ DỮ LIỆU DỊ THƯỜNG TRỌNG LỰC 150 PHỤ LỤC DỮ LIỆU ĐIỂM SONG TRÙNG GNSS-THỦY CHUẨN THAM GIA Lu TÍNH 151 PHỤ LỤC DỮ LIỆU ĐIỂM SONG TRÙNG GNSS-THỦY CHUẨN ĐÁNH GIÁ KẾT ận QUẢ TÍNH 153 án PHỤ LỤC QUY TRÌNH THỰC NGHIỆM PA1 154 PHỤ LỤC MINH HỌA TỔNG HỢP CÁC KẾT QUẢ TÍNH TỐN CỦA PHƯƠNG ÁN tiế 155 n PHỤ LỤC QUY TRÌNH THỰC NGHIỆM PA2 158 sĩ PHỤ LỤC 10 MINH HỌA TỔNG HỢP CÁC KẾT QUẢ TÍNH TỐN CỦA PHƯƠNG M ÁN 159 ới PHỤ LỤC 11 MINH HỌA TỔNG HỢP CÁC KẾT QUẢ TÍNH TỐN CỦA PHƯƠNG ÁN 162 nh PHỤ LỤC 12 MÃ CODE MINH HỌA MỘT SỐ MODULE CHƯƠNG TRÌNH TÍNH 166 ất MỞ ĐẦU Tính cấp thiết đề tài Nghiên cứu xác định dị thường độ cao, xây dựng mơ hình Geoid/Quasigeoid nhiệm vụ quan trọng quốc gia, khu vực toàn cầu Hiện nay, nhờ có cơng nghệ GNSS, việc xác định độ cao trắc địa cho độ xác cao cao Tuy nhiên, với độ cao chuẩn, cịn nhiệm vụ khó khăn, việc xác định độ cao phải thực trực tiếp bề mặt tự nhiên Trái Đất Mặt khác, đo Lu độ cao chuẩn phương pháp thủy chuẩn, bắt buộc phải có giá trị đo trọng lực dọc ận theo tuyến đo Đối với khu vực đồng bằng, việc thực tương đối thuận lợi Tuy nhiên, với khu vực đồi núi, sơng ngịi việc đo đạc khó khăn, chí khơng án thể thực Theo lý thuyết, mối liên hệ Ellipsoid bề mặt Quasigeoid giá trị dị thường độ cao Bài toán đặt ra, xác định dị thường độ cao tiế với độ xác cao mật độ đủ dày, hồn tồn xác định độ cao chuẩn n điểm dựa mối liên hệ độ cao trắc địa mặt Ellipsoid sĩ giá trị dị thường độ cao Như vậy, toán xác định độ cao chuẩn so với mơ hình Quasigeoid trở thành toán xác định dị thường độ cao phạm vi tồn lãnh thổ M ới Sóng Quasigeoid lại chia thành thành phần bước sóng (dài, trung, ngắn cực ngắn) Mỗi loại liệu lại phản ánh thành phần bước sóng khác Ví nh dụ: Mơ hình trọng trường Trái Đất phản ánh bước sóng dài; số liệu địa hình phản ất ánh bước sóng ngắn; số liệu trọng lực vệ tinh phản ánh bước sóng trung [45] Vì vậy, để xác định xác dị thường độ cao cần phải kết hợp liệu với Cùng với phát triển khoa học công nghệ, công tác đo trọng lực từ việc thực mặt đất, tàu biển hay máy bay, có nhiều dự án đo cao vệ tinh, đo trọng lực gradient trọng lực từ vệ tinh Đo trọng lực vệ tinh công nghệ tiên tiến giới, cho phép xác định dị thường trọng lực dị thường độ cao với độ xác cao khoảng cách khoảng 100 km [26] Dữ liệu trọng lực, liệu đo trực tiếp mặt đất, tàu, dự án đo cao vệ tinh dự án gradient trọng lực từ vệ tinh, nguồn liệu đầu vào 166 PHỤ LỤC 12 MÃ CODE MINH HỌA MỘT SỐ MODULE CHƯƠNG TRÌNH TÍNH 11.1 Một số đoạn code chương trình xác định phương sai mức sai số phương sai mức ận Lu class _HESO_L //Khai báo lớp Class để lưu hệ số điều hòa cầu: ( public class _HESO_M ( public string Line; public virtual void Nhap(string line) ( this.Line = line; )rrr public _HESO_M() ( )rrr )rrr public _HESO_M[] Heso_M; )rrr List Heso_L; _HESO_L heso_l; án private void Degv_Load(object sender, EventArgs e) ( btn_fileEgm.TabIndex = 0; txtB_fileDgv.TabIndex = 1; txtB_fileEdg.TabIndex = 2; )rrr tiế n private void btn_fileEgm_Click(object sender, EventArgs e) ( dlg = new OpenFileDialog(); dlg.Title = "Chọn file mơ hình trọng trường tồn cầu EGM"; //tiêu đề hộp sĩ thoại dlg.Filter = "File gfc (*.gfc)|*.gfc"; //hiển thị đuôi file ới M if (dlg.ShowDialog(this) == DialogResult.OK) ( //lấy tên file - đường dẫn file số liệu; filename_EGM = dlg.FileName; tenfile = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\\") + 1); duongdan_file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf("\\")); egm2startInfor = dlg.FileName.Substring(0, dlg.FileName.Length); txtb_fileegm.Text = duongdan_file + "\\" + tenfile; )rrr )rrr ất nh void EGM_CS_Parallel(int i) ( string line_EGM = readAlllines[i].Replace('D', line_EGM.Replace('d', 'e'); line_EGM = line_EGM.Replace('E', 'e'); line_EGM = line_EGM.Substring(3, line_EGM.Length - 3); string[] split = line_EGM.Split(new Char[] StringSplitOptions.RemoveEmptyEntries); int L = Convert.ToInt32(split[0]); int M = Convert.ToInt32(split[1]); double C = Convert.ToDouble(split[2]); double S = Convert.ToDouble(split[3]); double Sigma_C = Convert.ToDouble(split[4]); double Sigma_S = Convert.ToDouble(split[5]); GeoCoef_C[nn] = C; GeoCoef_S[nn] = S; GeoCoef_CC[nn] = Sigma_C; GeoCoef_CS[nn] = Sigma_S; ( 'E'); ' ', line_EGM '\n' = )rrr, 167 )rrr DateTime start, end, end1; private void Btn_Run_Click(object sender, EventArgs e) ( if (dlg.FilterIndex.ToString() == "1") ( var timer = new Stopwatch(); timer.Start(); Lu string text; starttime = DateTime.Now; //Bắt đầu đếm thời gian tenfile = tenfile.Substring(0, tenfile.LastIndexOf(".")); // trừ đuôi file //Mở file định dạng *.gfc: sr = new StreamReader(dlg.FileName); bool ktra1 = false; int demline = 0; while (ktra1 == false) ( line = sr.ReadLine(); demline++; ận if (line != "" && line != " " && line != " " && line != null) ( string[] split = line.Split(new Char[] ( ' ', '\n' StringSplitOptions.RemoveEmptyEntries); )rrr, án if (split[0] == "earth_gravity_constant") GM_EGM = Convert.ToDouble(split[1]); tiế if (split[0] == "radius") a_EGM = Convert.ToDouble(split[1]); n if (split[0] == "modelname") modelname = split[1]; sĩ if (split[0] == "tide_system") tide_system = split[1]; M if (split[0] == "max_degree") Nmax_EGM = Convert.ToInt32(split[1]); ới if (split[0] == "end_of_head") ( ktra1 = true; numberline_endofhead = demline; )rrr )rrr )rrr ất nh //start = DateTime.Now; l_value = (Nmax_EGM + 1) * (Nmax_EGM + 2) / 2; GeoCoef_C = new double[l_value + 1]; GeoCoef_S = new double[l_value + 1]; GeoCoef_CC = new double[l_value + 1]; GeoCoef_CS = new double[l_value + 1]; degva = new double[Nmax_EGM + 1]; edegv = new double[Nmax_EGM + 1]; readAlllines = File.ReadAllLines(filename_EGM, Encoding.UTF8); //Lọc loại bỏ phần tử mảng (mảng string, số thứ tự phần tử lấy, tổng số phần từ lấy readAlllines = (new ArraySegment(readAlllines, numberline_endofhead, readAlllines.Length - numberline_endofhead)).ToArray(); //Sử dụng lớp Parallel để đọc lấy phần tử file liệu EGM Parallel.For(0, readAlllines.Length, new ParallelOptions MaxDegreeOfParallelism = (Environment.ProcessorCount / 2) * )rrr, i => ( int val = i; EGM_CS_Parallel(val); ( 168 )rrr); //end = DateTime.Now; text = "Thoi gian doc file mo hinh: " + (end - start).ToString(); #endregion //Kết thúc đọc hệ số hàm điều hòa cầu // Subtracting The Zonal Reference Potential Field Coefficients: GeoCoef_C[(2 * (2 + 1)) / + 1] += j2; GeoCoef_C[(4 * (4 + 1)) / + 1] += j4; GeoCoef_C[(6 * (6 + 1)) / + 1] += j6; GeoCoef_C[(8 * (8 + 1)) / + 1] += j8; GeoCoef_C[(10 * (10 + 1)) / + 1] += j10; //As well as any gravity field model the normal potential can be represented as a spherical harmonic model plus the centrifugal potential //The spherical harmonic coefficients of the normal potential WGS84 are(in ICGEM - format): ận Lu GeoCoef_C[(12 GeoCoef_C[(14 GeoCoef_C[(16 GeoCoef_C[(18 GeoCoef_C[(20 * * * * * (12 (14 (16 (18 (20 + + + + + 1)) 1)) 1)) 1)) 1)) / / / / / 2 2 + + + + + 1] 1] 1] 1] 1] += += += += += j12; j14; j16; j18; j20; án for (int L = 2; L lưới Tham chiếu DTM_Ref.grid_Lat = dfi; DTM_Ref.grid_Lon = dla; ất DTM_Ref.Lonmin = la0 + dla / 2; DTM_Ref.Lonmax = la0 + nla * dla - dla / 2; nh DTM_Ref.Latmin = fi0 + dfi / 2; DTM_Ref.Latmax = fi0 + nfi * dfi - dfi / 2; DTM_Ref.nRow = immax; DTM_Ref.nColumn = jmmax; 0)); 0)); int iffi = (int)(Math.Round(Spatial_Resolution / (DTM_Detail.grid_Lat * idfi), //xác định số lần để độ phân giải mô hình EGM sử dụng int ifla = (int)(Math.Round(Spatial_Resolution / (DTM_Detail.grid_Lon * idla), int iffi2 = iffi / 2; int ifla2 = ifla / 2; hc = new double[immax, jmmax]; //Khởi tạo mảng hc //Tính trị trung bình cho điểm độ cao lưới tham chiếu for (int i =1; i Data_Cal[i].result) resultmin = Data_Cal[i].result; if (resultmax < Data_Cal[i].result) resultmax = Data_Cal[i].result; )rrr ghifile1 = ghifile1 + string.Format("(0:f4)rrr", Data_Cal[i].result) + "\n"; tiế n //Hiển thị phần trăm kết tính phantramtinh = (int)(i * 100 / Data_Cal.Count + 1); lblStatus.Text = "Processing " + phantramtinh.ToString() + "%"; progressBar.Value = phantramtinh; )rrr Btn_Thoat.Focus(); )rrr //Kết thúc chương trình sĩ M 11.4 Một số đoạn code chương trình xác định hiệp phương sai lý thuyết ới private void rdB_Zeta_Click(object sender, EventArgs e) ( myPane.YAxis.Title.Text = "Hiep phuong sai - Cov (m)"; Graph.Invalidate();// Force a redraw - Hiển thị lại Đồ thị )rrr nh ất private void rdB_Dg_Click(object sender, EventArgs e) ( myPane.YAxis.Title.Text = "Hiep phuong sai - Cov (mGal)"; Graph.Invalidate();// Force a redraw - Hiển thị lại Đồ thị )rrr private void rdB_Tudong_Click(object sender, EventArgs e) ( rdB_Thucong.Checked = false; txtB_N.ReadOnly = true; txtB_Varg.ReadOnly = true; txtB_ReRb.ReadOnly = true; txtB_AA.ReadOnly = true; txtB_AA.BackColor = Color.Cornsilk; txtB_ReRb.BackColor = Color.Cornsilk; txtB_Varg.BackColor = Color.Cornsilk; txtB_N.BackColor = Color.Cornsilk; )rrr private void rdB_Thucong_Click(object sender, EventArgs e) ( rdB_Tudong.Checked = false; 177 txtB_N.ReadOnly = false; txtB_Varg.ReadOnly = false; txtB_ReRb.ReadOnly = false; txtB_AA.ReadOnly = false; txtB_N.BackColor = Color.White; txtB_Varg.BackColor = Color.White; txtB_ReRb.BackColor = Color.White; txtB_AA.BackColor = Color.White; )rrr #region THIẾT LẬP TRONG FORM LOAD: private void Covfitting_Load(object sender, EventArgs e) ( #region THÔNG TIN ĐỒ THỊ BIỂU DIỄN ĐỘ KHỚP ĐƯỜNG LÝ THUYẾT - THỰC NGHIỆM: myPane = Graph.GraphPane; // Khai báo sử dụng Graph loại GraphPane; ận Lu myPane.Title.Text = "Kết khớp Lý thuyết - Thực nghiệm"; myPane.XAxis.Title.Text = "Khoang cach cau - Psi (Deg)"; myPane.YAxis.Title.Text = "Hiep phuong sai - Cov (mGal)"; // Định nghĩa hai danh sách để vẽ đồ thị RollingPointPairList list1 = new RollingPointPairList(100); // Khai bao số lượng điểm giá trị thực nghiệm RollingPointPairList list2 = new RollingPointPairList(100); // Khai bao số lượng điểm trị lý thuyết // Định nghĩa curve để vẽ đồ thị LineItem curve1 = myPane.AddCurve("Thực nghiệm", list1, Color.Blue, SymbolType.None); // Color màu Xanh, đặc trưng cho đường thực nghiệm LineItem curve2 = myPane.AddCurve("Lý thuyết", list2, Color.Red, SymbolType.None); // Color màu đỏ, đặc trưng cho đường lý thuyết Graph.AxisChange(); //xác định lại kích cỡ đồ thị #endregion án tiế n txtB_NumberReapet.ReadOnly = true; txtB_table.ReadOnly = txtB_MeanAltitude.ReadOnly = true; txtB_Lat_Max.ReadOnly = true; txtB_Weight.ReadOnly = txtB_Lat_Min.ReadOnly = true; txtB_Lat_grid.ReadOnly = txtB_Long_Max.ReadOnly = true; txtB_Long_Min.ReadOnly = true; txtB_Long_grid.ReadOnly = txtB_AA.ReadOnly = true; txtB_N.ReadOnly = true; txtB_ReRb.ReadOnly = txtB_Varg.ReadOnly = true; txtB_ReRb.ReadOnly = true; true; true; true; true; true; sĩ //Thiết lập màu - bold cho kết txtB_AA.BackColor = Color.Cornsilk; txtB_AA.Font = new System.Drawing.Font("Microsoft Sans Serif", System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); txtB_AA.ForeColor = Color.Red; txtB_ReRb.BackColor = Color.Cornsilk; txtB_ReRb.Font = new System.Drawing.Font("Microsoft Sans Serif", System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); txtB_ReRb.ForeColor = Color.Red; txtB_Varg.BackColor = Color.Cornsilk; txtB_Varg.Font = new System.Drawing.Font("Microsoft Sans Serif", System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); txtB_Varg.ForeColor = Color.Red; txtB_N.BackColor = Color.Cornsilk; txtB_N.Font = new System.Drawing.Font("Microsoft Sans Serif", System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); txtB_N.ForeColor = Color.Red; ới M 8.75F, 8.75F, nh 8.75F, ất 8.75F, rdB_Tudong.Checked = true; rdB_Dg.Checked = true; btn_Chonfile.TabIndex btn_filelog.TabIndex = 2; btn_Chonfile.Focus(); )rrr #endregion END FORM LOAD = 0; btn_ChonfileErrorDegree.TabIndex private void btn_Thoat_Click(object sender, EventArgs e) ( this.Close(); )rrr #region CHỌN FILE DỮ LIỆU COVT = 1; 178 private void btn_Chonfile_Click(object sender, EventArgs e) ( bool ktra = true; double covt_psi, covt_var; psiMax = -1.0e10; psiMin = 1.0e10; varMax = -1.0e10; varMin = 1.0e10; //xác định kích thước trục cho phù hợp hộp thoại file 1); dlg = new OpenFileDialog(); dlg.Title = "Chon file thuc nghiem - File Emprical Covariance"; //tiêu đề dlg.Filter = "File covt (*.covt)|*.covt|All files (*.*)|*.*"; //hiển thị đuôi if (dlg.ShowDialog(this) == DialogResult.OK) ( tenfile_thucnghiem = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\\") + ận Lu tenfile_thucnghiem1 = tenfile_thucnghiem.Substring(0, tenfile_thucnghiem.LastIndexOf(".")); duongdan_thumuc_tinh = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf("\\")); txtB_FileSL.Text = tenfile_thucnghiem; duongdanfile_covt = dlg.FileName.ToString(); #region Lấy giá trị VAR1 (VAR2) file: sr = new StreamReader(dlg.FileName); string line; line = sr.ReadLine(); split = line.Split(new Char[] ( ' StringSplitOptions.RemoveEmptyEntries); án ', '\t', '\n' )rrr, tiế covt_psi = Convert.ToDouble(split[0]); covt_var = Convert.ToDouble(split[1]); n Dothi = new List(); _DOTHI dothi1 = new _DOTHI(); M Dothi.Add(dothi1); sĩ dothi1 = new _DOTHI(); dothi1.PSI = covt_psi; dothi1.VAR_empcov = covt_var; ới if (psiMax < covt_psi) psiMax = covt_psi; if (psiMin > covt_psi) psiMin = covt_psi; if (varMax < covt_var) varMax = covt_var; if (varMin > covt_var) varMin = covt_var; while (ktra == true) ( split = sr.ReadLine().Split(new Char[] StringSplitOptions.RemoveEmptyEntries); covt_psi = Convert.ToDouble(split[0]); covt_var = Convert.ToDouble(split[1]); nh ( ' ', '\t', ất if (covt_psi > 0.0) ( dothi1 = new _DOTHI(); dothi1.PSI = covt_psi; dothi1.VAR_empcov = covt_var; Dothi.Add(dothi1); //Xác định giá trị max - cho trục tọa độ if (psiMax < covt_psi) psiMax = covt_psi; if (psiMin > covt_psi) psiMin = covt_psi; if (varMax < covt_var) varMax = covt_var; if (varMin > covt_var) varMin = covt_var; )rrr else ktra = false; )rrr sr.Close(); #endregion; // Định dạng cho trục X double XAxisStep = Math.Round((psiMax - psiMin) / 50, 2); '\n' )rrr, 179 myPane.XAxis.Scale.Min = psiMin - XAxisStep; // myPane.XAxis.Scale.Max = psiMax + XAxisStep; // myPane.XAxis.Scale.MinorStep = XAxisStep; // Đơn vị chia nhỏ myPane.XAxis.Scale.MajorStep = XAxisStep * 10; // Đơn vị chia lớn ận Lu // Định dạng cho trục Y double YAxisStep = Math.Round((varMax - varMin) / 50, 1); myPane.YAxis.Scale.Min = varMin - YAxisStep; myPane.YAxis.Scale.Max = varMax + YAxisStep; myPane.YAxis.Scale.MinorStep = YAxisStep; // Đơn vị chia nhỏ myPane.YAxis.Scale.MajorStep = YAxisStep * 10; // Đơn vị chia lớn )rrr )rrr #endregion #region CHỌN FILE LOG LƯU TRỮ THÔNG TIN CHUNG CỦA FILE COVT private void btn_filelog_Click(object sender, EventArgs e) ( dlg = new OpenFileDialog(); dlg.Title = "Chon file log - log file"; //tiêu đề hộp thoại dlg.Filter = "File log (*.log)|*.log|All files (*.*)|*.*"; //hiển thị đuôi file if (dlg.ShowDialog(this) == DialogResult.OK) ( tenfile_log = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\\") + 1); duongdanfile_log = dlg.FileName.ToString(); txtB_filelog.Text = tenfile_log; string line; sr = new StreamReader(dlg.FileName); int Filelength = File.ReadAllLines(dlg.FileName).Length; án n tiế for (int i = 0; i < Filelength; i++) ( line = sr.ReadLine(); string[] split; if (line != "" && line != null) ( split = line.Split(new Char[] ( ' ', '\t', '\n' )rrr, StringSplitOptions.RemoveEmptyEntries); if (split[0] == "Vi") ( txtB_Lat_Min.Text = split[2]; txtB_Lat_Max.Text = split[3]; )rrr if (split[0] == "Kinh") ( txtB_Long_Min.Text = split[2]; txtB_Long_Max.Text = split[3]; )rrr if (split[0] == "Kich") ( double Degrid = Math.Round(Convert.ToDouble(split[5])/60, 2); txtB_Lat_grid.Text = Degrid.ToString(); txtB_Long_grid.Text = Degrid.ToString(); )rrr sĩ ới M ất nh 2)).ToString(); if (split[0] == "So") ( txtB_table.Text = ((int)(Convert.ToDouble(split[4]) / txtB_NumberReapet.Text = "10"; )rrr if (split[0] == "Do") ( int Hmean = (int)((Convert.ToDouble(split[6])) / 10) * 10 + 10; txtB_MeanAltitude.Text = Hmean.ToString(); )rrr if (split[0] == "Phuong") VAR1 = Convert.ToDouble(split[3]); )rrr )rrr sr.Close(); )rrr 180 //VAR1 = Dothi[0].VAR_empcov; txtB_AA.Text = "1.0"; txtB_ReRb.Text = "-1.0"; if (rdB_Dg.Checked == false) txtB_Varg.Text = "400"; else txtB_Varg.Text = Math.Round(VAR1, 3).ToString(); )rrr #endregion END FILE LOG ận Lu #region CHỌN FILE SAI SỐ PHƯƠNG SAI MỨC private void btn_ChonfileErrorDegree_Click(object sender, EventArgs e) ( dlg = new OpenFileDialog(); dlg.Title = "Chon file Sai so muc phuong sai - File Error Degree-Variance"; //tiêu đề hộp thoại dlg.Filter = "File edg (*.edg)|*.edg|All files (*.*)|*.*"; //hiển thị đuôi file string Line; string[] split; if (dlg.ShowDialog(this) == DialogResult.OK) ( tenfile_errorgegree = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\\") + 1); duongdanfile_errordegree = dlg.FileName.ToString(); txtB_fileErrorDgree.Text = tenfile_errorgegree; án sr = new StreamReader(dlg.FileName); EDG_Var = new ArrayList(); '\n' )rrr, n tiế while (((Line = sr.ReadLine()) != null) && (Line != "")) ( split = Line.Split(new Char[] ( ' ', '\t', StringSplitOptions.RemoveEmptyEntries); for (int i1 = 0; i1 < split.Length; i1++) EDG_Var.Add(split[i1]); )rrr sr.Close(); sĩ NMAX_EGM = EDG_Var.Count + 1; ới M txtB_Weight.Text = "1.0"; txtB_NumberReapet.ReadOnly = false; txtB_table.ReadOnly = false; txtB_MeanAltitude.ReadOnly = false; txtB_Lat_Max.ReadOnly = false; txtB_Weight.ReadOnly = false; txtB_Lat_Min.ReadOnly = false; txtB_Lat_grid.ReadOnly = false; txtB_Long_Max.ReadOnly = false; txtB_Long_Min.ReadOnly = false; txtB_Long_grid.ReadOnly = false; nh ất if(rdB_Tudong.Checked == true) ( txtB_AA.ReadOnly = true; txtB_N.ReadOnly = true; txtB_ReRb.ReadOnly = true; txtB_Varg.ReadOnly = true; )rrr else ( txtB_AA.ReadOnly = false; txtB_N.ReadOnly = false; txtB_ReRb.ReadOnly = false; txtB_Varg.ReadOnly = false; )rrr Scale xScale = Graph.GraphPane.XAxis.Scale;// Gọi hàm xác định cỡ trục Graph.AxisChange(); //xác định lại kích cỡ đồ thị Graph.Invalidate(); // Force a redraw MessageBox.Show("LỰA CHỌN : \n - Số giá trị bảng?\n - Độ cao trung bình?\n - Phạm vi tính?\n\n -> Nhấn nút Tính", "Thơng báo", MessageBoxButtons.OK, MessageBoxIcon.Information); )rrr )rrr #endregion END ERROR DEGREE-VARIANCES

Ngày đăng: 13/12/2023, 14:15

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN