Luận án Nghiên cứu cơ sở dữ liệu địa chính và bài toán cập nhật biến động đất đai ở Việt Nam

Trước đây ở Việt Nam bản đồ địa chính được đo vẽ theo công nghệ thủ

công để thành lập ra bản đồ giấy, bản đồ giải thửa, bản đồ đo ở tọa độ giả

định. Sau năm 1995 bản đồ địa chính được lập theo công nghệ số và được

biên tập bằng nhiều phần mềm khác nhau như Famis, CesMap trên các nền đồ

họa Autocad, MicroStation dẫn đến dữ liệu không gian và thuộc tính thửa đất

lưu trữ riêng rẽ, rời rạc. Bản đồ số địa chính được đo đạc, biên tập in ra giấy

để sử dụng là chủ yếu, chưa chú trọng đến khai thác, xây dựng CSDL địa

chính. Khi có biến động đất đai công tác cập nhật biến động đa phần được

thực hiện thủ công, cập nhật biến động trên bản đồ giấy, ghi chú biến động

vào hồ sơ địa chính, chủ yếu cập nhật riêng lẻ do đó dữ liệu bản đồ và hồ sơ

vẫn tách rời nhau. Đến nay ngoài bản đồ in giấy để sử dụng thường xuyên cần

thêm nhiều thông tin về dữ liệu địa chính khác để quản lý và khai thác sử

dụng. CSDL địa chính trở nên quan trọng và được sử dụng thường xuyên

trong nhiều lĩnh vực như ngân hàng, xây dựng, quy hoạch đô thị. cung cấp

thông tin cho nhu cầu sử dụng của xã hội và phát triển kinh tế.

Trong tiến trình công nghiệp hóa, hiện đại hóa đất nước cùng với sự

phát triển nhanh của xã hội nên biến động đất đai diễn ra liên tục tại các địa

phương như chia tách, gộp thửa, chuyển đổi mục đích sử dụng. Do đó, dữ

liệu địa chính luôn cần được làm mới, nâng cao độ chính xác, cập nhật bổ

sung thường xuyên, cần phải chuẩn hóa và đồng nhất giữa hồ sơ và bản đồ để

đáp ứng được yêu cầu của xã hội

pdf 152 trang dienloan 14860
Bạn đang xem 20 trang mẫu của tài liệu "Luận án Nghiên cứu cơ sở dữ liệu địa chính và bài toán cập nhật biến động đất đai ở Việt Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Luận án Nghiên cứu cơ sở dữ liệu địa chính và bài toán cập nhật biến động đất đai ở Việt Nam

Luận án Nghiên cứu cơ sở dữ liệu địa chính và bài toán cập nhật biến động đất đai ở Việt Nam
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT 
ĐINH HẢI NAM 
NGHIÊN CỨU CƠ SỞ DỮ LIỆU ĐỊA CHÍNH 
VÀ BÀI TOÁN CẬP NHẬT BIẾN ĐỘNG ĐẤT ĐAI 
Ở VIỆT NAM 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
HÀ NỘI - 2015 
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT 
ĐINH HẢI NAM 
NGHIÊN CỨU CƠ SỞ DỮ LIỆU ĐỊA CHÍNH 
VÀ BÀI TOÁN CẬP NHẬT BIẾN ĐỘNG ĐẤT ĐAI 
Ở VIỆT NAM 
 Ngành : Kỹ thuật Trắc địa - Bản đồ 
 Mã số : 62.52.05.03 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
 NGƯỜI HƯỚNG DẪN KHOA HỌC 
 1. TS. TRẦN THÙY DƯƠNG 
 2. PGS.TS. NGUYỄN QUANG MINH 
HÀ NỘI - 2015 
i 
LỜI CAM ĐOAN 
 Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Toàn bộ 
quá trình nghiên cứu được tiến hành một cách khoa học, các số liệu, kết quả 
nêu trong luận án là chính xác, trung thực và chưa từng được công bố trong 
bất cứ công trình nào khác! 
 Tác giả luận án 
 Đinh Hải Nam 
ii 
MỤC LỤC 
LỜI CAM ĐOAN .............................................................................................. i 
MỤC LỤC ........................................................................................................ ii 
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ................................... v 
DANH MỤC CÁC BẢNG ............................................................................. vii 
DANH MỤC CÁC HÌNH VẼ ....................................................................... viii 
MỞ ĐẦU .......................................................................................................... 1 
CHƯƠNG 1. TỔNG QUAN ............................................................................ 7 
1.1. Trên thế giới .............................................................................................. 7 
1.1.1. Công tác xây dựng, khai thác cơ sở dữ liệu địa chính của một số 
nước...........................................................................................................7 
1.1.2. Mô hình cập nhật biến động, biên tập địa chính của phần mềm 
nước ngoài. ............................................................................................. 12 
1.2. Trong nước .............................................................................................. 13 
1.2.1. Tổng quan về công tác xây dựng cơ sở dữ liệu địa chính ............ 13 
1.2.2. Công tác cập nhật biến động đất đai ............................................. 22 
CHƯƠNG 2. NGHIÊN CỨU THIẾT KẾ CẤU TRÚC CƠ SỞ DỮ LIỆU ĐỊA 
CHÍNH PHÙ HỢP VỚI ĐIỀU KIỆN Ở VIỆT NAM .................................... 26 
2.1. Xây dựng cấu trúc dữ liệu không gian .................................................... 28 
2.1.1. Cấu trúc bảng dữ liệu đối tượng điểm .......................................... 29 
2.1.2. Cấu trúc bảng dữ liệu nửa cạnh thửa ............................................ 30 
2.1.3. Cấu trúc bảng dữ liệu thửa đất ...................................................... 32 
2.1.4. Cấu trúc bảng dữ liệu véc tơ số hiệu chỉnh đỉnh thửa .................. 33 
2.1.5. Cấu trúc bảng dữ liệu các lớp đối tượng bản đồ ........................... 34 
2.2. Xây dựng cấu trúc dữ liệu thuộc tính ..................................................... 35 
2.2.1. Mô hình quan hệ giữa các bảng dữ liệu thuộc tính ...................... 36 
2.2.2. Cấu trúc các bảng dữ liệu thuộc tính ............................................ 37 
2.3. Định nghĩa cấu trúc tệp XML để trao đổi CSDL địa chính ..................... 45 
2.4. Chương trình thực nghiệm xây dựng CSDL địa chính ............................ 46 
2.4.1. Mô đun xây dựng dữ liệu không gian ........................................... 46 
2.4.2. Mô đun xây dựng và khai thác dữ liệu thuộc tính ........................ 50 
iii 
2.4.3. Xuất CSDL địa chính theo trúc định dạng tệp XML .................... 52 
CHƯƠNG 3. NGHIÊN CỨU CÁC PHƯƠNG PHÁP HIỆU CHỈNH THỬA 
ĐẤT PHÙ HỢP LÀM CÔNG CỤ XỬ LÝ MỘT SỐ BÀI TOÁN CẬP NHẬT 
BIẾN ĐỘNG ĐẤT ĐAI TRONG PHẠM VI CỤC BỘ ................................. 53 
3.1. Xây dựng phương pháp hiệu chỉnh thửa đất ........................................... 55 
3.1.1. Mô hình toán học .......................................................................... 55 
3.1.2. Xây dựng công thức xác định trực tiếp hệ số hệ phương trình 
chuẩn N ................................................................................................... 58 
3.1.3. Thuật toán tính trực tiếp hệ số hệ phương trình chuẩn N ............. 63 
3.1.4. Thuật toán tính số hiệu chỉnh ....................................................... 68 
3.1.5. Thực nghiệm so sánh thời gian tính ma trận N theo hai phương 
pháp.........................................................................................................69 
3.2. Lập cơ sở dữ liệu để hiệu chỉnh thửa đất ................................................ 69 
3.2.1. Kỹ thuật tìm kiếm, lựa chọn thửa đất ........................................... 70 
3.2.2. Xây dựng các hàm xác định đối tượng liền kề ............................. 72 
3.2.3. Các bước lập cơ sở dữ liệu và xử lý khi hiệu chỉnh thửa đất ....... 73 
3.3. Xây dựng mô đun xử lý các bài toán cập nhật biến động đất đai ........... 74 
3.3.1. Chính xác hóa bản đồ sau khi số hóa. .......................................... 74 
3.3.2. Hiệu chỉnh bản đồ theo chiều dài cạnh, diện tích ......................... 76 
3.3.3. Cập nhật thửa đất đo bổ sung vào cơ sở dữ liệu địa chính ........... 80 
3.3.4. Hiệu chỉnh các lớp đối tượng trên bản đồ sau khi cập nhật biến 
động.........................................................................................................85 
3.3.5. Chia tách bản đồ ........................................................................... 86 
3.3.6. Giải pháp mới cập nhật thửa biến động vào cơ sở dữ liệu địa 
chính........................................................................................................87 
3.3.7. Tra cứu lịch sử, khôi phục các lần biến động thửa đất ................. 88 
CHƯƠNG 4. XÂY DỰNG MỘT SỐ GIẢI PHÁP XỬ LÝ BIẾN ĐỘNG 
ĐẤT ĐAI MANG TÍNH HỆ THỐNG. .......................................................... 90 
4.1. Giải pháp xử lý một số vấn đề liên quan đến việc quản lý thửa đất có 
đường bao là đường cong ............................................................................... 91 
4.1.1. Giải pháp xử lý thửa đất khi có đường bao là đường cong .......... 91 
iv 
4.1.2. Xây dựng đối tượng cung tròn ...................................................... 92 
4.1.3. Các bài toán xử lý cung tròn ......................................................... 96 
4.1.4. Tính diện tích thửa đất có chứa cung tròn .................................. 100 
4.2. Xử lý biến động khi quy định lại thông số file chuẩn của bản đồ địa chính
 ...................................................................................................................... 103 
4.2.1. Quy định kỹ thuật về hệ tọa độ và đơn vị bản vẽ của bản đồ địa 
chính......................................................................................................103 
4.2.2. Một số phương pháp hiện tại chuyển đổi đơn vị làm việc của bản 
vẽ...........................................................................................................104 
4.2.3. Giải pháp xử lý bản đồ khi thay đổi thông số kỹ thuật của bản 
vẽ...........................................................................................................105 
KẾT LUẬN VÀ KIẾN NGHỊ ...................................................................... 108 
DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ ............................................ 110 
TÀI LIỆU THAM KHẢO ............................................................................ 111 
PHỤ LỤC ..................................................................................................... 119 
v 
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 
 Tiếng Việt 
Ký hiệu Giải thích viết tắt, ký hiệu 
BĐĐC Bản đồ địa chính 
Bộ TN&MT Bộ Tài nguyên và Môi trường 
CSDL Cơ sở dữ liệu 
GCN Giấy chứng nhận 
GCNQSDĐ Giấy chứng nhận quyền sử dụng đất 
QSDĐ Quyền sử dụng đất 
TN&MT Tài nguyên và Môi trường 
TT Thông tư 
VPĐKĐĐ Văn phòng Đăng ký đất đai 
 Tiếng Anh 
Ký hiệu Giải thích viết tắt, ký hiệu 
2D, 3D Không gian 2 chiều, 3 chiều 
ArcGIS 
Là dòng sản phẩm hỗ trợ trong hệ thống thông tin địa lý của 
hãng ESRI (Mỹ) 
Benley 
Công ty của Mỹ sản xuất các phần mềm giải pháp cho việc 
thiết kế, xây dựng và hoạt động của cơ sở hạ tầng 
Cadastral 
Editor 
Mô đun biên tập địa chính trên phần mềm ArcGIS Desktop 
DGN Khuôn dạng tệp dữ liệu bản đồ của phần mềm MicroStation 
DWG Khuôn dạng tệp dữ liệu đồ họa của phần mềm Autocad 
DXF 
Drawing Exchange Format - là một định dạng dữ liệu đồ họa 
được phát triển bởi Autodesk dùng cho việc trao đổi dữ liệu 
giữa các phần mềm hỗ trợ thiết kế khác nhau 
Elis 
Environment Land Information System - Là phần mềm hệ 
thống thông tin đất đai và môi trường 
ESRI 
Environmental Systems Research Institute - Viện nghiên cứu 
hệ thống Môi trường Mỹ 
Famis Field Work and Cadastral Mapping Intergrated Software- 
vi 
Phần mềm tích hợp cho đo vẽ bản đồ địa chính ở Việt Nam 
GIS Geographic Information System - Hệ thống thông tin địa lý 
GML Geography Markup Language - Ngôn ngữ đánh dấu địa lý 
LAN Local Area Network - Mạng nội bộ 
LIS Land Information System - Hệ thống thông tin đất đai 
Metadata Siêu dữ liệu hay là dữ liệu quản lý dữ liệu 
Microsoft 
Access 
Là một phần mềm quản lý cơ sở dữ liệu quan hệ do hãng 
Microsoft giữ bản quyền 
Microsoft 
SQL Server 
Hệ quản trị cơ sở dữ liệu quan hệ được phát triển bởi 
Microsoft 
MySQL 
Hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế 
giới 
Oracle 
Tên của một hãng phần mềm, một hệ quản trị cơ sở dữ liệu 
phổ biến trên thế giới 
Seed file 
Là một tệp chuẩn của phần mềm MicroStation được định 
nghĩa đầy đủ các thông số toán học bản đồ, hệ đơn vị đo 
được tính theo giá trị thật ngoài thực địa làm tăng giá trị 
chính xác và thống nhất giữa các file bản đồ 
SEMLA 
Strengthening Environment Managament and Land 
Administration - Chương trình hợp tác Việt Nam, Thụy Điển 
về tăng cường năng lực quản lý đất đai và môi trường 
SQL 
Structured Query Language - Ngôn ngữ truy vấn mang tính 
cấu trúc 
TMV.LIS 
Phần mềm hệ thống thông tin đất đai của Tổng công ty Tài 
nguyên & Môi trường Việt Nam (TMV) 
Topology 
Thuật ngữ được sử dụng để chỉ mối quan hệ không gian giữa 
các đối tượng địa lý 
ViLIS 
VietNam Land Information System - Phần mềm hệ thống 
thông tin đất đai do Bộ Tài nguyên và Môi trường xây dựng 
VLAP 
Vietnam Land Administration Project - Hoàn thiện và hiện 
đại hóa hệ thống quản lý đất đai Việt Nam 
XML eXtensible Markup Language - Ngôn ngữ đánh dấu mở rộng 
vii 
DANH MỤC CÁC BẢNG 
Bảng 2.1. Cấu trúc bảng dữ liệu điểm ............................................................ 30 
Bảng 2.2. Cấu trúc bảng dữ liệu nửa cạnh ...................................................... 31 
Bảng 2.3. Cấu trúc bảng dữ liệu thửa đất ....................................................... 33 
Bảng 2.4. Cấu trúc bảng dữ liệu véc tơ số hiệu chỉnh đỉnh thửa .................... 33 
Bảng 2.5. Cấu trúc bảng dữ liệu các lớp đối tượng bản đồ ............................ 35 
Bảng 2.6. Cấu trúc bảng dữ liệu mục đích sử dụng đất .................................. 39 
Bảng 2.7. Cấu trúc bảng dữ liệu đối tượng sử dụng đất ................................. 39 
Bảng 2.8. Cấu trúc bảng dữ liệu nguồn gốc sử dụng đất ................................ 39 
Bảng 2.9. Cấu trúc bảng dữ liệu thông tin thuộc tính của thửa đất ................ 40 
Bảng 2.10. Cấu trúc bảng dữ liệu thông tin chủ sử dụng đất ......................... 41 
Bảng 2.11. Cấu trúc bảng dữ liệu đăng ký sử dụng đất .................................. 42 
Bảng 2.12. Cấu trúc bảng dữ liệu đa mục đích sử dụng ................................. 43 
Bảng 2.13. Cấu trúc bảng dữ liệu về giấy chứng nhận ................................... 43 
Bảng 3.1. Hệ phương trình điều kiện cạnh của thửa đất ................................ 59 
Bảng 3.2. Hệ phương trình điều kiện diện tích của một thửa ......................... 59 
Bảng 3.3. Hệ phương trình điều kiện diện tích hai thửa không chung đỉnh ... 60 
Bảng 3.4. Hệ phương trình điều kiện diện tích hai thửa chung đỉnh .............. 61 
Bảng 3.5. Hệ phương trình điều kiện cạnh j và diện tích thửa đất i ............... 62 
Bảng 3.6. Thời gian tính toán lập ma trận N theo hai phương pháp .............. 69 
Bảng 3.7. Số liệu diện tích bản đồ giấy và diện tích bản đồ số hóa ............... 75 
Bảng 3.8. Số hiệu chỉnh và tọa độ các đỉnh sau khi hiệu chỉnh theo cạnh đo 
mới .................................................................................................................. 77 
Bảng 3.9. Số liệu đo thửa đất .......................................................................... 78 
Bảng 3.10. Bảng tọa độ đỉnh thửa sau hiệu chỉnh .......................................... 79 
Bảng 3.11. Bảng số liệu đo bổ sung thửa đất ................................................. 83 
Bảng 3.12. Kết nối và cập nhật thửa đo bổ sung vào CSDL địa chính .......... 84 
Bảng 3.13. Bảng tọa độ đỉnh thửa sau khi tính chuyển về CSDL địa chính .. 85 
Bảng 3.14. Bảng hiệu chỉnh tọa độ lớp nhà .................................................... 86 
Bảng 3.15. Lịch sử biến động đỉnh thửa ......................................................... 89 
Bảng 3.16. Lịch sử biến động của thửa đất i .................................................. 89 
viii 
DANH MỤC CÁC HÌNH VẼ 
Hình 1.1. Hệ thống đất đai liên kết với NaLIS ................................................. 9 
Hình 1.2. Hệ thống đăng ký nhà đất Hà Lan [52] .......................................... 10 
Hình 1.3. Các thành phần của kết cấu thửa đất trong mô đun Cadastral Editor 
[53] ................................................................................................................. 13 
Hình 1.4. Quy trình xây dựng cơ sở dữ liệu địa chính ................................... 19 
Hình 1.5. Giao diện chức năng chia tách, gộp thửa của phần mềm Vilis 2.0. 25 
Hình 2.1. Mô tả các thành phần cấu tạo nên thửa đất ..................................... 28 
Hình 2.2. Mô tả các thành phần nửa cạnh ...................................................... 30 
Hình 2.3. Các lớp đối tượng bản đồ ............................................................... 34 
Hình 2.4. Sơ đồ mô hình quan hệ giữa các bảng đơn vị hành chính .............. 38 
Hình 2.5. Sơ đồ quan hệ giữa các bảng dữ liệu thuộc tính ............................. 44 
Hình 2.6. Tệp dữ liệu đồ họa .......................................................................... 47 
Hình 2.7. Tệp số liệu đo đạc ........................................................................... 47 
Hình 2.8. Tệp số liệu định dạng shape file ........................ ... XY(N + 1).rY1 - DS_XY(1).rY1 
End Sub 
---------------------------------------------------------------------------------------------- 
Private Sub MnuToolJoin_Click() 
 Dim Pcf() As Point_2D, Pgd() As Point_2D, P_cf() As Point_2D, P_cf_dxdy() 
As Point_2D ' điểm tham tham gia join 
 Dim Pgd_2() As Point_2D, P_cf_2() As Point_2D ' điểm ăn theo 
 Dim Phi As Double, m As Double 
 Dim N As Long, n_2 As Long, i As Long 
 Dim temp$, word() As String 
 Open App.Path & "\data\join3.txt" For Input As #1 
 Line Input #1, temp 
 N = CLng(Val(temp)) 
 ReDim Pcf(1 To N) As Point_2D: ReDim P_cf(1 To N) As Point_2D: 
ReDim P_cf_dxdy(1 To N) As Point_2D: ReDim Pgd(1 To N) As Point_2D 
 For i = 1 To N 
 Line Input #1, temp 
 TachXau temp, vbTab, word 
 Pcf(i).rX1 = Val(word(1)): Pcf(i).rY1 = Val(word(2)) 
 Pgd(i).rX1 = Val(word(3)): Pgd(i).rY1 = Val(word(4)) 
 Next i 
 ' điểm nội suy theo 
 Line Input #1, temp 
 n_2 = CLng(Val(temp)) 
 ReDim Pgd_2(n_2) As Point_2D: ReDim P_cf_2(n_2) As Point_2D 
 For i = 1 To n_2 
 Line Input #1, temp 
 TachXau temp, vbTab, word 
130 
 Pgd_2(i).rX1 = Val(word(1)): Pgd_2(i).rY1 = Val(word(2)) 
 Next i 
 Close 1 
 Helmet Pcf(), Pgd(), P_cf(), P_cf_dxdy(), N, Phi, m, Pgd_2(), P_cf_2(), n_2 
 Debug.Print "Phi=" & Do2Dms(Phi) & ",m=" & m 
 For i = 1 To N 
 'Debug.Print P_cf(i).rX1 & "dx=" & Format(P_cf_dxdy(i).rX1, "0.000") & " -
Y =" & P_cf(i).rY1 & "dy=" & Format(P_cf_dxdy(i).rY1, "0.000") 
 Debug.Print P_cf(i).rX1 & ", " & P_cf(i).rY1 
 Next i 
 Debug.Print " diem noi suy theo" 
 For i = 1 To n_2 
 Debug.Print P_cf_2(i).rX1 & ", " & P_cf_2(i).rY1 
 Next i 
 ' HienthiVecto v(), n2, "0.000" 
End Sub 
Private Sub Helmet(Pcf() As Point_2D, Pgd() As Point_2D, P_cf() As Point_2D, 
P_cf_dxdy() As Point_2D, N As Long, Phi As Double, m As Double, Pgd_2() As 
Point_2D, P_cf_2() As Point_2D, n_2 As Long) 
 Dim Pcfo As Point_2D, Pgdo As Point_2D ' trọng tâm 
 Dim a() As Double, L() As Double, r() As Double, Q() As Double, b() As 
Double, miu As Double 
 Dim v() As Double, vv As Double 
 Dim k As Long, i As Long, j As Long, n2 As Long 
 k = 4: n2 = N * 2 
 ReDim a(1 To n2, 1 To k) As Double: ReDim L(1 To n2) As Double 
 ReDim r(1 To k, 1 To k) As Double: ReDim Q(1 To k, 1 To k) As Double: 
ReDim b(1 To k) As Double 
 ReDim v(1 To n2) As Double 
 'chuyển về tọa độ trọng tâm 
 For i = 1 To N 
 Pcfo.rX1 = Pcfo.rX1 + Pcf(i).rX1: Pcfo.rY1 = Pcfo.rY1 + Pcf(i).rY1 
 Pgdo.rX1 = Pgdo.rX1 + Pgd(i).rX1: Pgdo.rY1 = Pgdo.rY1 + Pgd(i).rY1 
 Next i 
131 
 Pcfo.rX1 = Pcfo.rX1 / N: Pcfo.rY1 = Pcfo.rY1 / N 
 Pgdo.rX1 = Pgdo.rX1 / N: Pgdo.rY1 = Pgdo.rY1 / N 
 For i = 1 To N 
 Pcf(i).rX1 = Pcf(i).rX1 - Pcfo.rX1: Pcf(i).rY1 = Pcf(i).rY1 - Pcfo.rY1 
 Pgd(i).rX1 = Pgd(i).rX1 - Pgdo.rX1: Pgd(i).rY1 = Pgd(i).rY1 - Pgdo.rY1 
 Next i 
 ' lập ma trận A 
 For i = 1 To N 
 a(2 * i - 1, 1) = Pgd(i).rX1: a(2 * i - 1, 2) = -Pgd(i).rY1: a(2 * i - 1, 3) = 1: a(2 
* i - 1, 4) = 0 
 a(2 * i, 1) = Pgd(i).rY1: a(2 * i, 2) = Pgd(i).rX1: a(2 * i, 3) = 0: a(2 * i, 4) = 1 
' a(2 * i - 1, 1) = Pgd(i).rX1: a(2 * i - 1, 2) = Pgd(i).rY1: a(2 * i - 1, 3) = 1: a(2 * 
i - 1, 4) = 0 
' a(2 * i, 1) = Pgd(i).rY1: a(2 * i, 2) = -Pgd(i).rX1: a(2 * i, 3) = 0: a(2 * i, 4) = 1 
 L(2 * i - 1) = -Pcf(i).rX1: L(2 * i) = -Pcf(i).rY1 
 Next i 
Phụ lục 4. Thuật toán xử lý hiệu chỉnh biến động thửa đất 
Public Sub ADJ2(PTDK As tPTDK, PointsADJ As tListID) 
 Dim W() As Double, N() As Double 
 Dim i As Long, j As Long, k As Long, eP As Long, eT As Long 
 Dim Dx#, Dy#, Dij#, stt&, e1 As Long, e As Long 
 Dim v1 As Long, v2 As Long, v3 As Long, v4 As Long 
 ReDim W(1 To PTDK.r) As Double 
 ReDim N(1 To PTDK.r, 1 To PTDK.r) As Double 
 For i = 1 To PointsADJ.Counts 
 DS_v(PointsADJ.List(i)).vX = 0 
 DS_v(PointsADJ.List(i)).vY = 0 
 Next i 
 Exe.max = PTDK.r * 4 
 ShowProgess , "Tính trực tiếp ma trận N" 
 For i = 1 To PTDK.r 
 Call Progses 
 DoEvents 
132 
 If PTDK.PT(i).iType = 0 Then 
 With DS_a(PTDK.PT(i).ID) 
 N(i, i) = GetD2(.e) 
 W(i) = 2 * (PTDK.PT(i).Value - PTDK.PT(i).ValueADJ) 
 End With 
 Else 
 N(i, i) = 2 
 v1 = DS_e(PTDK.PT(i).ID).v ' dinh i 
 v2 = DS_e(DS_e(PTDK.PT(i).ID).eN).v ' dinh j 
 W(i) = GetDij(v1, v2) - PTDK.PT(i).ValueADJ 
 End If 
 If i < PTDK.r Then 
 For k = i + 1 To PTDK.r 
 If PTDK.PT(i).iType = 0 And PTDK.PT(k).iType = 0 Then 
 With DS_a(PTDK.PT(i).ID) 
 e1 = .e 
 Do 
 e = e1 
 Do 
 eP = DS_e(e).eP 
 eT = DS_e(eP).eT 
 If DS_e(eT).a = PTDK.PT(k).ID Then ' 
thua giap ranh 
 Call GetVecto(e1, v1, v2) 
 Call GetVecto(eT, v3, v4) 
 N(i, k) = N(i, k) + TinhTichVecto(v1, v2, 
v3, v4) 
 N(k, i) = N(i, k) 
 End If 
 e = eT 
 Loop Until eT = e1 
 e1 = DS_e(e1).eN 
 Loop Until e1 = .e 
 End With 
133 
 ElseIf PTDK.PT(i).iType = 1 And PTDK.PT(k).iType = 1 
Then 
 e = PTDK.PT(i).ID: eT = DS_e(e).eT 
 e1 = PTDK.PT(k).ID: eP = DS_e(e1).eT ' nguoc e1 
 Dim giaonhau As Boolean, anfa As Double 
 If DS_e(e).v = DS_e(e1).v Then 
 v1 = DS_e(e).v: v2 = DS_e(eT).v 
 v3 = DS_e(e1).v: v4 = DS_e(eP).v 
 ElseIf DS_e(e).v = DS_e(eP).v Then 
 v1 = DS_e(e).v: v2 = DS_e(eT).v 
 v3 = DS_e(eP).v: v4 = DS_e(e1).v 
 ElseIf DS_e(eT).v = DS_e(e1).v Then 
 v1 = DS_e(eT).v: v2 = DS_e(e).v 
 v3 = DS_e(e1).v: v4 = DS_e(eP).v 
 ElseIf DS_e(eT).v = DS_e(eP).v Then 
 v1 = DS_e(eT).v: v2 = DS_e(e).v 
 v3 = DS_e(eP).v: v4 = DS_e(e1).v 
 End If 
 If giaonhau = True Then 
 anfa = TPV(DS_v(v1).X, DS_v(v1).Y, DS_v(v2).X, 
DS_v(v2).Y) - TPV(DS_v(v3).X, DS_v(v3).Y, DS_v(v4).X, DS_v(v4).Y) 
 N(i, k) = N(i, k) + Cos(anfa) 
 N(k, i) = N(i, k) 
 End If 
 End If 
 Next k 
 End If 
 Next i 
 ShowMessage "Giải hệ phương trình" 
 GiaiHePT N(), W(), PTDK.r 
 For i = 1 To PTDK.r 
 W(i) = -W(i) 
 Next i 
 ShowMessage "Đang tính số hiệu chỉnh" 
134 
 ' tính số hiệu chỉnh 
 For i = 1 To PTDK.r 
 Call Progses 
 DoEvents 
 If PTDK.PT(i).iType = 0 Then 
 With DS_a(PTDK.PT(i).ID) 
 e1 = .e ' canh dau tien cua thua 
 Do 
 stt = GetPoint_Stt(DS_e(e1).v, PointsADJ) 
 v1 = DS_e(DS_e(e1).eP).v 
 v2 = DS_e(DS_e(e1).eN).v 
 DS_v(PointsADJ.List(stt)).vX = 
DS_v(PointsADJ.List(stt)).vX - (DS_v(v2).Y - DS_v(v1).Y) * W(i) 
 DS_v(PointsADJ.List(stt)).vY = 
DS_v(PointsADJ.List(stt)).vY + (DS_v(v2).X - DS_v(v1).X) * W(i) 
 e1 = DS_e(e1).eN 
 Loop Until e1 = .e 
 End With 
 Else 
 v1 = DS_e(PTDK.PT(i).ID).v ' dinh i 
 v2 = DS_e(DS_e(PTDK.PT(i).ID).eN).v ' dinh v2 
 Dx = DS_v(v2).X - DS_v(v1).X 
 Dy = DS_v(v2).Y - DS_v(v1).Y 
 Dij = Sqr(Dx * Dx + Dy * Dy) 
 Dx = (Dx / Dij) * W(i): Dy = (Dy / Dij) * W(i) 
 stt = GetPoint_Stt(v1, PointsADJ) 
 DS_v(PointsADJ.List(stt)).vX = DS_v(PointsADJ.List(stt)).vX - Dx 
 DS_v(PointsADJ.List(stt)).vY = DS_v(PointsADJ.List(stt)).vY - Dy 
 stt = GetPoint_Stt(v2, PointsADJ) 
 DS_v(PointsADJ.List(stt)).vX = DS_v(PointsADJ.List(stt)).vX + Dx 
 DS_v(PointsADJ.List(stt)).vY = DS_v(PointsADJ.List(stt)).vY + Dy 
 End If 
 Next i 
End Sub 
135 
---------------------------------------------------------------------------------------------- 
Public Sub GiaiHePT(r() As Double, b() As Double, N As Long) 
 Dim i As Long, j As Long, k As Long 
 Dim temp As Double 
 ' Khử xuôi 
 For i = 1 To N 
 For j = i + 1 To N 
 r(i, j) = r(i, j) / r(i, i) 
 Next j 
 b(i) = b(i) / r(i, i) 
 For k = i + 1 To N 
 For j = i + 1 To N 
 r(k, j) = r(k, j) - r(i, j) * r(k, i) 
 Next j 
 b(k) = b(k) - b(i) * r(k, i) 
 Next k 
 Next i 
 ' Tính nghiệm 
 For i = N To 1 Step -1 
 temp = 0 
 For j = i + 1 To N 
 temp = temp + r(i, j) * b(j) 
 Next j 
 b(i) = b(i) - temp 
 Next i 
End Sub 
---------------------------------------------------------------------------------------------- 
Phụ lục 5. Xử lý đối tượng cung tròn 
Private Type ARC_2D 
 rX1 As Double 
 rY1 As Double 
 rR1 As Double 
 rStart1 As Double 'Quay nguoc chieu kim dong ho 
 rEnd1 As Double 
136 
End Type 
Dim DS_Arcs() As ARC_2D, ArcsCount As Long 
---------------------------------------------------------------------------------------------- 
Private Sub AddArc(rX1 As Double, rY1 As Double, rR1 As Double, rStart1 As 
Double, rEnd1 As Double) 
 ArcsCount = ArcsCount + 1 
 ReDim Preserve DS_Arcs(ArcsCount) 
 DS_Arcs(ArcsCount).rX1 = rX1 
 DS_Arcs(ArcsCount).rY1 = rY1 
 DS_Arcs(ArcsCount).rR1 = rR1 
 DS_Arcs(ArcsCount).rStart1 = rStart1 
 DS_Arcs(ArcsCount).rEnd1 = rEnd1 
 AddEnt TP_ARC, ArcsCount 
End Sub 
---------------------------------------------------------------------------------------------- 
Function ARC_DXF() 
 ArcsCount = ArcsCount + 1 
 ReDim Preserve DS_Arcs(ArcsCount) 
 Do 
 Line Input #4, Textcode 
 Line Input #4, Textvalue 
 Select Case Trim(UCase(Textcode)) 
 Case "10" 
 DS_Arcs(ArcsCount).rX1 = Val(Textvalue) 
 Case "20" 
 DS_Arcs(ArcsCount).rY1 = Val(Textvalue) 
 Case "40" 
 DS_Arcs(ArcsCount).rR1 = Val(Textvalue) 
 Case "50" 
 DS_Arcs(ArcsCount).rStart1 = Rad(Val(Textvalue)) 
 Case "51" 
 DS_Arcs(ArcsCount).rEnd1 = Rad(Val(Textvalue)) 
 rX1 = DS_Arcs(ArcsCount).rX1 
 rY1 = DS_Arcs(ArcsCount).rY1 
137 
 rR1 = DS_Arcs(ArcsCount).rR1 
 rStart1 = DS_Arcs(ArcsCount).rStart1 
 rEnd1 = DS_Arcs(ArcsCount).rEnd1 
 AddArc rX1, rY1, rR1, rStart1, rEnd1 
 Exit Do 
 End Select 
 Loop 
End Function 
-----------------------------------------------------------------------------------------------------
Private Sub Arc_3P(ByVal vX1 As Long, ByVal vY1 As Long, ByVal vXm As 
Long, ByVal vYm As Long, ByVal vX2 As Long, ByVal vY2 As Long, _ 
 vXc As Long, vYc As Long, vRc As Long, Optional rStartC, Optional 
rEndC) 
 Dim rBeta As Double, vR1 As Double, rAngle As Double, CosrA As Double, 
SinrA As Double 
 Dim vR2 As Double, vR3 As Double 
 If vCcw(vX1, vY1, vXm, vYm, vX2, vY2) = 1 Then 
 vXc = vX1: vYc = vY1 
 vX1 = vX2: vY1 = vY2 
 vX2 = vXc: vY2 = vYc 
 End If 
 vR1 = Sqr((vX2 - vX1) * (vX2 - vX1) + (vY2 - vY1) * (vY2 - vY1)) 
 vR2 = Sqr((vXm - vX2) * (vXm - vX2) + (vYm - vY2) * (vYm - vY2)) 
 vR3 = Sqr((vXm - vX1) * (vXm - vX1) + (vYm - vY1) * (vYm - vY1)) 
 If vR2 = 0 Then Exit Sub: If vR3 = 0 Then Exit Sub 
 CosrA = 0.5 * (vR2 * vR2 + vR3 * vR3 - vR1 * vR1) / (vR2 * vR3) 
 SinrA = Sqr(1 - CosrA * CosrA) 
 rAngle = Atan2(SinrA, CosrA) 
 rAngle = 2 * (Pi - rAngle) 
 rBeta = Atan2(vY1 - vY2, vX2 - vX1) 
 If Sin(0.5 * rAngle) 0 Then 
 vRc = 0.5 * vR1 / Sin(0.5 * rAngle) 
 Else 
 vRc = 32000 
138 
 End If 
 rAngle = 0.5 * (Pi - rAngle) 
 rBeta = rBeta - rAngle + Pi 
 vXc = vX2 + vRc * Cos(rBeta) 
 vYc = vY2 - vRc * Sin(rBeta) 
 If IsMissing(rStartC) And IsMissing(rEndC) Then 
 PicView.Circle (vXc, vYc), vRc 
 Else 
 rStartC = Atan2(vYc - vY1, vX1 - vXc) 
 rEndC = Atan2(vYc - vY2, vX2 - vXc) 
 PicView.Circle (vXc, vYc), vRc, , rStartC, rEndC 
 End If 
End Sub 
---------------------------------------------------------------------------------------------- 
Private Sub Arc_SEA(ByVal vX1 As Long, ByVal vY1 As Long, ByVal vX2 As 
Long, ByVal vY2 As Long, ByVal rAngle As Double, _ 
 vXc As Long, vYc As Long, vRc As Long, Optional rStartC As Double, 
Optional rEndC As Double) 
 Dim rBeta As Double, vR1 As Double 
 rBeta = Atan2(vY1 - vY2, vX2 - vX1) 
 vR1 = Sqr((vX2 - vX1) * (vX2 - vX1) + (vY2 - vY1) * (vY2 - vY1)) 
 If Sin(0.5 * rAngle) 0 Then 
 vRc = 0.5 * vR1 / Sin(0.5 * rAngle) 
 Else 
 vRc = 32000 
 End If 
 rAngle = 0.5 * (Pi - rAngle) 
 rBeta = rBeta - rAngle + Pi 
 vXc = vX2 + vRc * Cos(rBeta) 
 vYc = vY2 - vRc * Sin(rBeta) 
 rStartC = Atan2(vYc - vY1, vX1 - vXc) 
 rEndC = Atan2(vYc - vY2, vX2 - vXc) 
 PicView.Circle (vXc, vYc), vRc, , rStartC, rEndC 
End Sub 
139 
---------------------------------------------------------------------------------------------- 
Private Function Arc_SED(ByVal vX1 As Long, ByVal vY1 As Long, ByVal vX2 
As Long, ByVal vY2 As Long, ByVal rDirection As Double, _ 
 vXc As Long, vYc As Long, vRc As Long, Optional rStartC As Double, 
Optional rEndC As Double) As Long 
 Dim rBeta As Double, vR1 As Double, rAngle As Double 
 rBeta = Atan2(vY1 - vY2, vX2 - vX1) 
 rAngle = 2 * (rBeta - rDirection) 
 vR1 = Sqr((vX2 - vX1) * (vX2 - vX1) + (vY2 - vY1) * (vY2 - vY1)) 
 If Abs(Sin(0.5 * rAngle)) > 0.000016 * vR1 Then '???? 
 vRc = 0.5 * vR1 / Sin(0.5 * rAngle) 
 Else 
 vRc = 32000 
 End If 
 rAngle = 0.5 * (Pi - rAngle) 
 rBeta = rBeta - rAngle + Pi 
 vXc = vX2 + vRc * Cos(rBeta) 
 vYc = vY2 - vRc * Sin(rBeta) 
 If vRc > 0 Then 
 rStartC = Atan2(vYc - vY1, vX1 - vXc) 
 rEndC = Atan2(vYc - vY2, vX2 - vXc) 
 Arc_SED = 1 
 Else 
 vRc = -vRc 
 rEndC = Atan2(vYc - vY1, vX1 - vXc) 
 rStartC = Atan2(vYc - vY2, vX2 - vXc) 
 Arc_SED = -1 
 End If 
 PicView.Circle (vXc, vYc), vRc, , rStartC, rEndC 
End Function 
---------------------------------------------------------------------------------------------- 
Private Sub Arc_SER(ByVal vX1 As Long, ByVal vY1 As Long, ByVal vX2 As 
Long, ByVal vY2 As Long, ByVal vRc As Long, _ 
140 
 vXc As Long, vYc As Long, Optional rStartC As Double, Optional rEndC 
As Double) 
 Dim rBeta As Double, rAngle As Double, SinrA_2 As Double, CosrA_2 As 
Double, vR1 As Long 
 rBeta = Atan2(vY1 - vY2, vX2 - vX1) 
 vR1 = Sqr((vX2 - vX1) * (vX2 - vX1) + (vY2 - vY1) * (vY2 - vY1)) 
 SinrA_2 = 0.5 * vR1 / vRc: CosrA_2 = Sqr(1 - SinrA_2 * SinrA_2) 
 rAngle = 2 * Atan2(SinrA_2, CosrA_2) 
 rAngle = 0.5 * (Pi - rAngle) 
 rBeta = rBeta - rAngle + Pi 
 vXc = vX2 + vRc * Cos(rBeta) 
 vYc = vY2 - vRc * Sin(rBeta) 
 rStartC = Atan2(vYc - vY1, vX1 - vXc) 
 rEndC = Atan2(vYc - vY2, vX2 - vXc) 
 PicView.Circle (vXc, vYc), vRc, , rStartC, rEndC 
End Sub 
---------------------------------------------------------------------------------------------- 
Private Sub GetQuadrantArcMinMax(Ac As ARC_2D) 
 Dim rEnd1 As Double 
 With Ac 
 If .rStart1 < .rEnd1 Then 
 rEnd1 = .rEnd1 
 If Pi_2 > .rStart1 And Pi_2 < rEnd1 Then 
 If rYmax < .rY1 + .rR1 Then rYmax = .rY1 + .rR1 
 End If 
 If Pi > .rStart1 And Pi < rEnd1 Then 
 If rXmin > .rX1 - .rR1 Then rXmin = .rX1 - .rR1 
 End If 
 If 3 * Pi_2 > .rStart1 And 3 * Pi_2 < rEnd1 Then 
 If rYmin > .rY1 - .rR1 Then rYmin = .rY1 - .rR1 
 End If 
 Else 
 rEnd1 = .rEnd1 + Pi2 
 If Pi_2 > .rStart1 Then 
141 
 If rYmax < .rY1 + .rR1 Then rYmax = .rY1 + .rR1 
 Else 
 If Pi_2 < .rEnd1 Then 
 If rYmax < .rY1 + .rR1 Then rYmax = .rY1 + .rR1 
 End If 
 End If 
 If Pi > .rStart1 Then 
 If rXmin > .rX1 - .rR1 Then rXmin = .rX1 - .rR1 
 Else 
 If Pi < .rEnd1 Then 
 If rXmin > .rX1 - .rR1 Then rXmin = .rX1 - .rR1 
 End If 
 End If 
 If 3 * Pi_2 > .rStart1 Then 
 If rYmin > .rY1 - .rR1 Then rYmin = .rY1 - .rR1 
 Else 
 If 3 * Pi_2 < .rEnd1 Then 
 If rYmin > .rY1 - .rR1 Then rYmin = .rY1 - .rR1 
 End If 
 End If 
 If Pi2 > .rStart1 And Pi2 < rEnd1 Then 
 If rXmax < .rX1 + .rR1 Then rXmax = .rX1 + .rR1 
 End If 
 End If 
 End With 
End Sub 

File đính kèm:

  • pdfluan_an_nghien_cuu_co_so_du_lieu_dia_chinh_va_bai_toan_cap_n.pdf