Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 148 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
148
Dung lượng
2,19 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA TRẦN THỊ THU DUNG ĐỀ TÀI : MÔ HÌNH ỨNG DỤNG GIS ĐÁNH GIÁ KHẢ NĂNG THÍCH NGHI CỦA ĐẤT ĐAI PHỤC VỤ SẢN XUẤT NÔNG NGHIỆP CHUYÊN NGÀNH : HỆ THỐNG THÔNG TIN ĐỊA LÝ (GIS) MÃ SỐ NGÀNH : 2.15.04 LUẬN VĂN THẠC SỸ TP HỒ CHÍ MINH, tháng 02 năm 2004 CÔNG TRÌNH ĐƯC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học: PGS TS TRẦN VĨNH PHƯỚC Cán chấm nhận xét 1: PGS.TSKH NGUYỄN XUÂN HUY Cán chấm nhận xét 2: TS NGUYỄN VĂN NHÂN Luận văn thạc sỹ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SỸ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày …… tháng …… năm 2004 ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do – Hạnh Phúc - NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên Ngày, tháng, năm sinh Chuyên ngành : TRẦN THỊ THU DUNG Phái : NỮ : 14 / 03 / 1969 Nơi sinh : PHÚ THỌ : HỆ THỐNG THÔNG TIN ĐỊA LÝ (GIS) Mã số học viên : TTĐL12-001 TÊN ĐỀ TÀI : MÔ HÌNH ỨNG DỤNG GIS ĐÁNH GIÁ KHẢ NĂNG THÍCH NGHI CỦA ĐẤT ĐAI PHỤC VỤ SẢN XUẤT NÔNG NGHIỆP NHIỆM VỤ VÀ NỘI DUNG: - Phân tích không gian GIS - Phương pháp luận đánh giá đất đai theo phương pháp FAO - Xây dựng mô hình ứng dụng GIS đánh giá khả thích nghi đất đai phục vụ sản xuất nông nghiệp - Cài đặt thử nghiệm mô hình NGÀY GIAO NHIỆM VỤ : 26 / 05 / 2003 NGAØY HOAØN THAØNH NHIỆM VỤ : 26 / 10 / 2003 HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : PGS TS TRẦN VĨNH PHƯỚC CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM NGÀNH PGS.TS.TRẦN VĨNH PHƯỚC PGS.TS.TRẦN VĨNH PHƯỚC BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH Nội dung đề cương luận văn Hội Đồng Chuyên Ngành thông qua PHÒNG ĐÀO TẠO SĐH Ngày …… tháng …… năm 2004 KHOA QUẢN LÝ NGÀNH LỜI CẢM ƠN Trong thời gian học tập, nghiên cứu thực luận văn tốt nghiệp này, nhận động viên, giúp đỡ, hỗ trợ nhiệt tình thầy, cô, gia đình, quan, bạn bè đồng nghiệp Qua luận văn này, xin kính gửi lòng biết ơn chân thành đến: Tập thể giáo sư, tiến sỹ, thầy, cô giáo trường đại học Bách khoa TP Hồ Chí Minh đã tận tình giảng dạy giúp đỡ thời gian học tập thực đề tài PGS.TS Trần Vónh Phước, người tận tình hướng dẫn giúp đỡ trình nghiên cứu thực đề tài TS Nguyễn Văn Nhân, người trực tiếp giúp đỡ, tạo điều kiện cho trình học tập nghiên cứu Phòng Quản Lý Đào Tạo Sau Đại Học, Trung Tâm DITAGIS, Khoa Môi Trường thuộc trường Đại học Bách Khoa Tp.HCM tạo điều kiện tốt cho suốt khóa học thời gian thực đề tài Lãnh đạo Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Trung Tâm Bản Đồ Tài Nguyên Tổng Hợp động viên tạo điều kiện thuận lợi cho suốt thời gian học tập nghiên cứu hoàn thành đề tài Đặc biệt gia đình, bạn bè đồng nghiệp tạo điều kiện thuận lợi cho trình học tập, nghiên cứu thực luận văn Xin chân thành cảm ơn! TÓM TẮT LUẬN ÁN Sự phát triển không ngừng khoa học kỹ thuật cung cấp cho công nghệ phục vụ phát triển cho công việc cách hữu hiệu Hệ thống thông tin địa lý (GIS) công nghệ tiên tiến ứng dụng nhiều lónh vực khác nhau, đặc biệt quản lý, sử dụng bảo vệ hiệu tài nguyên thiên nhiên Cho đến GIS nhiều quan, tổ chức quan tâm ứng dụng quản lý sử dụng tài nguyên đất đai Đề tài sâu nghiên cứu phát triển ứng dụng GIS phục vụ công tác đánh giá đất đai, nhằm góp phần cho phát triển đại hóa ngành nông nghiệp Việt Nam xu hướng hội nhập Xuất phát từ nghiên cứu phân tích không gian – mạnh riêng GIS phương pháp đánh giá đất đai theo FAO, từ xây dựng “Mô hình ứng dụng GIS đánh giá khả thích nghi đất đai phục vụ sản xuất nông nghiệp” Đề tài nâng cao mức độ ứng dụng GIS cách tự động hóa phần trình đánh giá khả thích nghi đất đai, góp phần làm tăng hiệu chất lượng trình Nội dung đề tài trình bày luận án gồm chương : Chương 1: Mở đầu Đặt vấn đề : Dẫn dắt vấn đề trình bày lý đời đề tài Các nội dung nghiên cứu bao gồm : mục tiêu, đối tượng, nhiệm vụ, phương pháp, phạm vi nghiên cứu ý nghóa khoa học đề tài Chương 2: Tổng quan tình hình nghiên cứu có liên quan Thể tổng quan vấn đề có liên quan : - Tình hình nghiên cứu ứng dụng GIS giới Việt Nam - Đánh giá đất đai giới Việt Nam - Ứng dụng GIS đánh giá đất đai Chương 3: Phân tích không gian đánh giá đất đai Đây phần sở lý thuyết đề tài, trình bày hai vấn đề : - Phân tích không gian : Giới thiệu sở liệu GIS, phân tích không gian GIS phép phân tích không gian - Đánh giá đất đai : Khái niệm, nội dung phương pháp đánh giá đất đai FAO Chương 4: Xây dựng giải thuật Xây dựng giải thuật cho mô hình bao gồm phép toán phân tích không gian (T1,T2, , T6) dùng trình đánh giá khả thích nghi đất đai thực theo bước chính: B1 Xây dựng đồ đơn vị đất đai(Lmu) - B1.1 Chồng xếp lớp liệu (T1) : Chồng xếp lớp liệu tính chất đất đai để xây dựng đồ đơn vị đất đai - B1.2 Loại bỏ vùng có diện tích nhỏ diện tích giới hạn (T2) - B 1.3 Phép chiếu thuộc tính (T3) : Tạo dẫn cho đồ đơn vị đất đai B2 Xây dựng đồ khả thích nghi đất đai (Suit) - B2.1 Kết nối quan hệ thuộc tính (T4) : Kết nối liệu tính chất đất đai đồ đơn vị đất đai với bảng thuộc tính yêu cầu sử dụng đất - B2.2 Xây dựng đồ khả thích nghi (T5) : Xác định mức thích nghi cho đơn vị đất đai để xây dựng đồ khả thích nghi đất đai - B2.3 Xóa ranh vùng cận kề có thuộc tính (T6) B3 Xây dựng đồ đề xuất sử dụng đất (Proposal) - B3.1 Chồng xếp lớp liệu (T1) : Chồng xếp lớp đồ khả thích nghi để xây dựng đồ đề xuất sử dụng đất - B 3.2 Phép chiếu thuộc tính (T3) : Tạo dẫn cho đồ đề xuất sử dụng đất Chương 5: Đặc tả cài đặt thuật toán cho mô hình Đặc tả cài đặt chương trình ngôn ngữ Avenue môi trường ArcView - Giới thiệu ngôn ngữ phát triển ứng dụng GIS Avenue phần mềm ArcView - Đặc tả cài đặt phép toán cho chương trình theo thiết kế giải thuật chương ngôn ngữ Avenue Chương : p dụng thử nghiệm kết luận Trình bày phần thử nghiệm chương trình kết luận: - Trình bày phần thử nghiệm chương trình “Đánh giá khả thích nghi đất đai” với liệu tỉnh Long An - Kết luận kết đạt được, tồn hướng phát triển đề tài (1) Các kết đạt được: Đề tài đạt mục tiêu đặt ra, xây dựng“Mô hình áp dụng GIS đánh giá khả thích nghi đất đai phục vụ sản xuất nông nghiệp” Kết mô hình – chương trình “Đánh giá khả thích nghi đất đai” đưa vào sử dụng cho kết đồ thích nghi đồ đề xuất sử dụng đất cho vùng nghiên cứu Chương trình “Đánh giá khả thích nghi đất đai” thiết kế với giao diện tiếng Việt, dễ hiểu, tạo thuận lợi cho người sử dụng Chương trình khai thác tiết kiệm thời gian cho đánh giá khả thích nghi đất đai nhờ tự động hóa công đoạn thực (2) Các vấn đề tồn tại: Đề tài chưa đề cập nhiều đến đánh giá kinh tế xã hội Cần bổ xung chức năng: Biểu mẫu nhập liệu yêu cầu sử dụng đất bảng danh sách loại hình sử dụng đất, biên tập đồ tự động để chương trình mang tính ứng dụng cao Chưa xây dựng hướng dẫn cụ thể cho chương trình (3) Hướng phát triển đề tài : Nghiên cứu để bổ xung tồn đề tài nhằm nâng cao tính ứng dụng đề tài MỤC LỤC Các từ viết tắt Danh sách hình Danh sách bảng CHƯƠNG MỞ ĐẦU I Đặt vấn đề II Nội dung nghiên cứu Muïc tieâu Nhiệm vụ Phương pháp thực Phaïm vi nghiên cứu Ý nghóa khoa học đề tài Quy trình thực CHƯƠNG TỔNG QUAN VỀ TÌNH HÌNH NGHIÊN CỨU CÓ LIÊN QUAN 10 I Tình hình nghiên cứu ứng dụng hệ thống thông tin địa lý 10 Nghiên cứu ứng dụng hệ thống thông tin địa lý giới 10 Nghiên cứu ứng dụng hệ thống thông tin địa lý Việt Nam 12 II Đánh giá đất đai 13 Đánh giá đất đai giới 13 Đánh giá đất đai Việt Nam 14 III Ứng dụng GIS đánh giá đất đai 17 Ứng dụng GIS đánh giá đất đai giới 17 Ứng dụng GIS đánh giá đất đai Việt Nam 18 CHƯƠNG PHÂN TÍCH KHÔNG GIAN VÀ ĐÁNH GIÁ ĐẤT ĐAI 20 I Phân tích không gian GIS 20 Khái niệm GIS 20 Cơ sở liệu GIS 21 Phân tích không gian GIS 25 Các phép phân tích không gian 26 Phaân tích lớp liệu 29 Phân tích nhiều lớp liệu 33 Tiến trình thực phân tích liệu GIS 35 i II Đánh giá đất đai 37 Khái niệm đánh giá đất đai 37 Noäi dung phương pháp đánh giá đất đai 38 CHƯƠNG 4: XÂY DỰNG GIẢI THUẬT 44 I Khaùi quát mô hình 44 Dữ liệu nhập mô hình 44 Các sản phẩm mô hình 47 II Tiến trình thực giải thuật 47 Xây dựng đồ đơn vị đất đai 47 Xây dựng đồ khả thích nghi đất đai 51 Xây dựng đồ đề xuất sử dụng đất 56 CHƯƠNG 5: ĐẶC TẢ VÀ CÀI ĐẶT CÁC THUẬT TOÁN TRONG CHƯƠNG TRÌNH 59 I Ngôn ngữ Avenue, phần mềm ArcView 59 Vài nét ngôn ngữ Avenue phần mềm ArcView 59 Định dạng liệu 60 II Đặc tả cài đặt thuật toán chương trình 60 Thuật toán chồng xếp lớp liệu (OVERLAY) – T1 60 Thuật toán loại bỏ vùng có diện tích nhỏ diện tích giới hạn với vùng lân cận có biên lận cận dài (ELIMINATE) – T2 66 Thuật toán chiếu thuộc tính (PROJECTION) – T3 69 Thuật toán kết nối quan hệ thuộc tính (JOIN_N) – T4 71 Thuật toán chọn giá trị lớn ii miền thuộc tính (MAX) – T5 75 Thuật toán xóa ranh vùng cận kề có thuộc tính (DISSOLVE) – T6 77 CHƯƠNG 6: ÁP DỤNG THỬ NGHIỆM 81 I Giao diện chương trình 81 II Thử nghiệm chương trình 82 Tổng quan điều kiện tự nhiên tỉnh Long An 82 Dữ liệu nhập 94 Chạy thử nghiệm 103 Đánh giá kết chương trình 117 III Kết luận 117 Các kết đạt 117 Caùc vấn đề tồn 119 Hướng phát triển đề tài 119 PHUÏ LUÏC 120 Mã nguồn thuật toán chương trình “đánh giá khả thích nghi” 120 TÀI LIỆU THAM KHẢO 136 iii InFtab = nil theInputIDField = nil av.PurgeObjects ' *** CALCULATE *** theRecordNumber = '8 ADD AREA FIELD av.ClearStatus av.ShowMsg("Calculating preliminary areas ") AreaField = theWorkFTab.FindField("Area") if (AreaField = nil) then AreaField = Field.Make("Area", #FIELD_DOUBLE, 20, 6) theWorkFTab.AddFields({AreaField}) end theWorkFTab.Calculate("[Shape].ReturnArea", AreaField) '9 QUERY FTAB FOR THOSE POLYGONS SMALLER THAN MINIMUM VALUE test = theWorkFTab.Query("[Area] < 0" + themaxsize, theWorkFTab.GetSelection, #VTAB_SELTYPE_NEW) theWorkFTab.UpdateSelection '10 MAKE DICTIONARY OF IDS AND AREAS theSmallPolyDictionary = Dictionary.Make(theWorkFTab.GetNumSelRecords) for each aRecord in theWorkFTab.GetSelection theID = theWorkFTab.ReturnValue(NewField, aRecord) theArea = theWorkFTab.ReturnValue(AreaField, aRecord) if (theSmallPolyDictionary.Get(theArea) = nil) then theSmallPolyDictionary.Add(theArea, theID) else while (theSmallPolyDictionary.Get(theArea) nil) theArea = theArea * 0.9999999 if (theSmallPolyDictionary.Get(theArea) = nil) then theSmallPolyDictionary.Add(theArea, theID) break end end end end '11 WORK THROUGH SELECTED POLYGONS, SMALLEST TO LARGEST, AND DISSOLVE THEM WITH ADJACENT POLYGONS theSortedList = theSmallPolyDictionary.ReturnKeys theSortedList.Sort(True) ' FOR DEBUGGING 'TestList = {} 'for each AValue in theSortedList ' TestList.Add(theSmallPolyDictionary.Get(aValue).AsString+", "+aValue.AsString) 'end 'msgBox.ListAsString(TestList, "", "") theProblemList = {} theRecordCount = theSortedList.Count TheReportString = NL+ "KÕt qu¶:" +NL + 124 " " +NL+ " Cã "+ theRecordCount.AsString+" vùng bị loại bỏ" +NL+" "+NL+NL for each aSmallPolyArea in theSortedList theRecordNumber = theRecordNumber + theSmallID = theSmallPolyDictionary.Get(aSmallPolyArea) test = theWorkFTab.Query("["+NewFieldName+"] = "+theSmallID.AsString, theWorkFTab.GetSelection, #VTAB_SELTYPE_NEW) theWorkFTab.UpdateSelection theSingleRecord = theWorkFTab.GetSelection.GetNextSet(-1) thePoly = theWorkFTab.ReturnValue(theShapeField, theSingleRecord) theOriginalReportID = theWorkFTab.ReturnValue(thePolygonIDField, theSingleRecord) '12 CHECK SIZE OF POLYGON; IT MIGHT BE LARGE ENOUGH NOW IF IT'S BEEN MERGED WITH A SMALLER ONE if (thePoly.ReturnArea < theMaxSize.AsNumber) then theBitmapA = theWorkFTab.GetSelection.Clone theWorkFTab.SelectByShapes({thePoly}, #VTAB_SELTYPE_NEW) theWorkFTab.UpdateSelection theBitmapB = theWorkFTab.GetSelection.Clone theBitmapA.XOr(theBitmapB) '13 SELECTS ALL ADJACENT POLYGONS, NOT ORIGINAL POLYGON theWorkFTab.SetSelection(theBitmapA) theWorkFTab.UpdateSelection ' FOR DEBUGGING ' ShouldStop = msgBox.YesNo("Stop Routine", "", True) ' if (shouldStop) then break end '14 IF USER WANTS BORDER (NOT JUST POINT) ADJACENCY, DE-SELECT ANY POLYGONS THAT ONLY TOUCH AT A SINGLE POINT if (theAdjacencyOption = "optBorder") then theCheckBitmap = theWorkFTab.GetSelection.Clone for each theCheckPolygon in theWorkFTab.GetSelection theTestShape = theWorkFTab.ReturnValue(theShapeField, theCheckPolygon) theIntPointCount = theTestShape.PointIntersection(thePoly).AsList.Count if (theIntPointCount = 1) then theCheckBitmap.Clear(theCheckPolygon) end end theWorkFTab.SetSelection(theCheckBitmap) theWorkFTab.UpdateSelection end '15 IDENTIFY POLYGON TO DISSOLVE WITH if (theWorkFTab.GetNumSelRecords = 0) then ' IF POLYGON IS NOT NEXT TO ANY OTHER POLYGONS theProblemList.Add(theOriginalReportID) theStepString = theRecordNumber.AsString+") Polygon "+theOriginalReportID.AsString+ " (Size = "+aSmallPolyArea.AsString+") has no adjacent polygons to merge with "+NL theReportString = theReportString+theStepString ' theReportLineList.Add(theStepString) else theDissolvePoly = theWorkFTab.ReturnValue(theShapeField, theWorkFTab.GetSelection.GetNextSet(-1)) theDissolveID = theWorkFTab.ReturnValue(NewField, theWorkFTab.GetSelection.GetNextSet(1)) 125 theDissolveReportID = theWorkFTab.ReturnValue(thePolygonIDField, theWorkFTab.GetSelection.GetNextSet(-1)) theDissolveSize = theDissolvePoly.ReturnArea for each AdjacentPolygon in theWorkFTab.GetSelection theTestPoly = theWorkFTab.ReturnValue(theShapeField, AdjacentPolygon) theTestID = theWorkFTab.ReturnValue(NewField, AdjacentPolygon) theTestReportID = theWorkFTab.ReturnValue(thePolygonIDField, AdjacentPolygon) if (theSizeOption = "optSmallest") then if (theTestPoly.ReturnArea < theDissolveSize) then theDissolvePoly = theTestPoly theDissolveSize = theTestPoly.ReturnArea theDissolveID = theTestID theDissolveReportID = theTestReportID end elseif (theSizeOption = "optLargest") then if (theTestPoly.ReturnArea > theDissolveSize) then theDissolvePoly = theTestPoly theDissolveSize = theTestPoly.ReturnArea theDissolveID = theTestID theDissolveReportID = theTestReportID end end 'if end '16 UNION ORIGINAL AND DISSOLVE POLYGON SHAPES INTO NEW POLYGON SHAPE theNewPoly = thePoly.ReturnUnion(theDissolvePoly) theNewPoly.Clean '17 DELETE RECORD OF ORIGINAL POLYGON AND REPLACE DISSOLVE POLYGON SHAPE WITH NEW POLYGON SHAPE theWorkFTab.Query("["+NewFieldName+"] = "+theSmallID.AsString, theWorkFTab.GetSelection, #VTAB_SELTYPE_NEW) theWorkFTab.UpdateSelection theWorkFTab.RemoveRecord (theWorkFTab.GetSelection.GetNextSet(-1)) theWorkFTab.Query("["+NewFieldName+"] = "+theDissolveID.AsString, theWorkFTab.GetSelection, #VTAB_SELTYPE_NEW) theWorkFTab.UpdateSelection theWorkFTab.SetValue(theShapeField, theWorkFTab.GetSelection.GetNextSet(-1), theNewPoly) theStepString = theRecordNumber.AsString+") NhËp vïng "+theOriginalReportID.AsString+ " (KÝch th−íc = "+aSmallPolyArea.AsString+") vµo víi vïng "+theDissolveReportID.AsString +" (kÝch th−íc = "+ theDissolveSize.AsString+")"+NL theReportString = theReportString+theStepString ' theReportLineList.Add(theStepString) ' FOR DEBUGGING ' theTestGraphic = GraphicShape.Make(theDissolvePoly) ' theGraphicsList.Add(theTestGraphic) ' theGraphicsList.Invalidate ' ShouldStop = msgBox.YesNo("Stop Routine", "", True) ' if (shouldStop) then break end end ' END CHECKING IF POLYGON HAS ANY NEIGHBORS else theStepString = theRecordNumber.AsString+") Polygon "+theOriginalReportID.AsString+ 126 " (Size = "+thePoly.ReturnArea.AsString+") previously combined with smaller polygon; now exceeds max size."+NL theReportString = theReportString+theStepString ' theReportLineList.Add(theStepString) end ' END CHECKING TO SEE IF POLYGON IS LARGE ENOUGH end ' END WORKING THROUGH LIST OF SMALL POLYGONS theWorkFTab.GetSelection.ClearAll theWorkFTab.UpdateSelection theWorkFTab.Calculate("[Shape].ReturnArea", AreaField) theWorkFTab.SetEditable(False) theTheme = FTheme.Make (theWorkFTab) theView.AddTheme(theTheme) for each thm in theView.getThemes thm.setactive(false) thm.setvisible(false) end theTheme.setactive(true) theTheme.Setvisible(true) '18 SHOW LENGTH OF TIME IT TOOK TO RUN ANALYSIS EndTime = Date.Now geowait.close ''run script to change the legend appearance of the eliminate theme 'casefname = av.run("LE_ELIMINATE.Change", {}) 'themedesc = theTheme.getsrcname.getfilename.getbasename.asstring 'apos = themedesc.indexof(".") 'themedesc = (themedesc.left(apos)) + " - " + casefname.asstring 'theTheme.setname(themedesc) msgBox.Report(theReportString, "Thông báo") 'if (theProblemList.Count>0) then ' MsgBox.ListAsString(theProblemList, ' "The following polygons were smaller than the limit but had no adjacent polygons to dissolve with ", ' "WARNING:") 'end 'D setEnabled controls theDialog.open 'setEnabled controls (set dim or actived controls) 'theCbx_selectTheme.SetEnabled(false) theTxl_area.SetEnabled(false) theTxl_outputFile.SetEnabled(false) theBtn_outputFile.SetEnabled(false) theLbt_doEliminate.SetEnabled(false) theDialog.close '==================================================================== '==================================================================== 127 Mã nguồn thuật toán PROJECTION 'LE_FREQUENCY.Lbt_doFrequency1.click ' theProject = av.GetProject theDialog = self.GetDialog 'get controls in LE_FREQUENCY dialog _ theCbx_inputFile = theDialog.FindByName("Cbx_inputFile") theLbx_classFieldOut = theDialog.FindByName("Lbx_classFieldOut") theTxl_caseField = theDialog.FindByName("Txl_caseField") theChk_yeSIOIN_N = theDialog.FindByName("Chk_yeSIOIN_N") theTxl_outputFile = theDialog.FindByName("Txl_outputFile") theLbx_sumFieldOut = theDialog.FindByName("Lbx_sumFieldOut") theChk_goJOIN_NDialog = theDialog.FindByName("Chk_goJOIN_NDialog") ' _ get controls in LE_ELIMINATE dialog inVTab = theCbx_inputFile.GetSelection 'inVtab is Ftab of LMU theme inName = inVTab.GetName.AsTokens(".").get(1) fieldList = theLbx_classFieldOut.GetList sumList = theLbx_sumFieldOut.GetList for each f in sumList 'if (FieldNameList.FindByValue(f.GetName) -1) then if (FieldList.FindByValue(f) -1) then 'MsgBox.Error("there are the same field in classify field and sum Field list","") MsgBox.Error("Cã tr−êng gièng danh sách trờng cho phân loại tính tổng","Báo lỗi") return nil end end 'get case item name case_it = theTxl_caseField.GetText 'get output filename out_fn = theTxl_outputFile.GetText.AsFileName outVTab = av.Run("LE_FREQUENCY.frequency2",{inVTab,out_fn,case_it,fieldList,sumList}) if (outVTab = nil) then return nil end outTableName = outVTab.GetName if (av.GetProject.FindDoc(outTableName) Nil) then av.GetProject.RemoveDoc(av.GetProject.FindDoc(outTableName)) end outTable = Table.Make(outVTab) outTable.SetName(outTableName) outTable.GetWin.Open 'EDIT 'Open the theme with Legend by case field inFileName = theCbx_inputFile.GetSelection.AsString '*.dbf file 'getting the filename without the extension aPos = inFileName.IndexOf(".") inFileNameNoExt = inFileName.Left(aPos) aThemeName = (inFileNameNoExt + ".shp").AsFileName 128 For each d in theProject.GetDocs if (d.Is(View)) then theView = d break end end themeList = theView.GetThemes for each t in themeList if (t = theView.findtheme(aThemeName.AsString)) then theTheme = t 'theView = d break end end ViewDocWin = theView.GetWin ViewDocWin.open 'Open the original View Document ViewDocWin.Open 'Delete the newly created suit theme from the view (as need to refresh the vtab values) ThemeList2 = theView.GetThemes ThemeList2Clone = ThemeList2.DeepClone LmuSrcName = ThemeList2Clone.get(0).GetSrcName TheView.DeleteTheme(ThemeList2.get(0)) 'Re-add the newly created theme (result of is the Vtab is updated when querying the view) ReopenTheme = Theme.Make(LmuSrcName) TheView.AddTheme(ReopenTheme) ReOpenTheme.SetVisible(TRUE) ReOpenTheme.SetActive(TRUE) 'ReOpenTheme.SetName(ReopenTheme.getName.AsString + " _ B§ đơn vị đất đai") Lmu_idField = theTxl_caseField.GetText av.Run("LE.Legend_makeAutomatic",{Lmu_idField}) av.Run("LE.ChangeLegendFont_VietNam_Auto",{}) 'EDIT theDialog.close '==================================================================== '==================================================================== Mã nguồn thuật toaùn JOIN_N 'LE_JOIN_N.Lbt_doJOIN_N.click ' -theProject = av.GetProject 'get controls in LE_JOIN_N dialog _ TheDialog = self.getDialog theCbx_lmuTable = TheDialog.FindByName("Cbx_lmuTable") theCbx_lmuField = TheDialog.FindByName("Cbx_lmuField") theLbx_lmuFields = TheDialog.FindByName("Lbx_lmuFields") theLbx_sLevelTables = TheDialog.FindByName("Lbx_sLevelTables") theLbx_JOIN_NFields = TheDialog.FindByName("Lbx_JOIN_NFields") ' get controls in LE_JOIN_N dialog ToVtab = theCbx_lmuTable.GetSelection 129 lmuFields = theLbx_lmuFields.GetList sLTableList = theLbx_sLevelTables.GetList sLFieldList = theLbx_JOIN_NFields.GetList TheDialog.close for each i in (lmuFields.count - 1) toField = lmuFields.Get(i) fromVtab = sLTableList.Get(i).getVtab fromField = sLFieldList.Get(i) 'Join the tables ToVtab.Join(toField, fromVtab, fromField) end 'remove all table in the project theProject = av.GetProject tableList = {} for each d in theProject.GetDocs if (d.Is(Table)) then tableList.Add(d) end end for each t in tableList if (t.GetVTab.IsBeingEditedWithrecovery) then doSave = MsgBox.YesNoCancel("Save Edits to the table "+t.GetName+ "?", "Stop Editing", True) if (doSave = nil) then continue end if (t.GetVtab.StopEditingWithRecovery(doSave).Not) then MsgBox.Info("Unable to Save Edits to Table " + t.GetName + ", please use the Save Edits As option", "") continue end end av.GetProject.RemoveDoc( t ) end av.PurgeObjects ' - remove all table in the project 'opend the tables aTable = Table.make(toVtab) aTable = aTable.GetWin.Open 'opend View aview = theProject.findDoc("C¸c líp d÷ liƯu") if (aView.IsActive.Not) then aView.GetWin.open end '==================================================================== '==================================================================== 130 Mã nguồn thuật toán MAX 'LE_SUIT.addSuitFieldAndLowSuit ' -'script adds fields (suit#,Suit#Leve and LcLimit#) and their respective values suitVtab = av.GetActiveDoc.GetvTab FieldNames = suitVtab.GetFields FieldNamesClone = FieldNames.DeepClone LCsUsed = SELF.Get(0) 'list of Landcharacter fields LUTSelection = SELF.Get(1) 'lu number 'make list of field to put to suit map FieldsDelete = List.Make FieldsRetain = List.Make for each i in FieldNamesClone 'for1 count = for each j in LCsUsed 'for2 Fieldname = i.AsString 'a single Fieldname LUTname = (j.AsString + "_" + LUTSelection.AsString) 'LC's used plus LUT selected joined as a fieldname Result = (Fieldname=LUTname).AsString 'comparing the above variables if(Result = "false") then ' if result is false, then add to the counter count = count +1 end if(Result = "true") then ''if3 result is true, then add the field to the FieldsRetain list FieldsRetain.Add(FieldName) end if(count = (LCsUsed.count)) then 'if4 when the last field in the list is being compared if(Fieldname = "Shape") then 'if5 continue 'if it equals Shape, then continue end if (Fieldname.Contains("id") = TRUE) then 'if6 continue 'if the field has 'id' in it, then continue end FieldsDelete.Add(i.AsString) 'otherwise, add it to the FieldsDelete list end 'if4 end 'for2 end 'for1 'delete field no need any more and add field to suit map '3 field : Suit# (number,1), Suit#Level (Char,30), Lc#Limit(char,50) 'and setvalue to these field DeleteList = {} SuitField = {} SuitLevelField = {} LowFields = {} suitVtab.SetEditable(TRUE) if(suitVtab.isEditable) then 'if6 for each i in ((FieldsDelete.count)-1) 'for7:deleting fields listed in FieldsDelete 131 DeleteField = suitVtab.FindField(FieldsDelete.get(i).AsString) DeleteList.Add(DeleteField) suitVtab.RemoveFields(DeleteList) DeleteList.Remove(0) end 'for7 'adding fileld to suit# table if(suitVtab.CanAddFields) then 'if8 Suitfname = ("Suit" + LUTSelection.AsString) SuitField.Add(Field.Make(Suitfname, #FIELD_DECIMAL, , )) suitVtab.AddFields(SuitField) SuitLevelFname = ("Suit" + LUTSelection.AsString + "Level") SuitLevelField.Add(Field.Make(SuitLevelFname, #FIELD_CHAR, 30 , )) suitVtab.AddFields(SuitLevelField) Lowfieldsfname = ("LcLimit" + LUTSelection.AsString) LowFields.Add(Field.Make(Lowfieldsfname, #FIELD_VCHAR, 50, 0)) suitVtab.AddFields(LowFields) else MsgBox.error("Unable to add suitability fields to the attribute table.", "Error") suitVtab.SetEditable(false) return nil end 'if8 for each rec in suitVtab 'for9 if(FieldsRetain.count = 1) then 'if10:when only one LC was used in the process LUTField = suitVtab.FindField(FieldsRetain.get(0)) LUTFieldValue = suitVtab.ReturnValue(LUTField, rec) SuitField = suitVtab.FindField(Suitfname) suitVtab.SetValue(SuitField, rec , LUTFieldValue) LowFields = suitVtab.FindField(Lowfieldsfname) suitVtab.SetValue(LowFields, rec , LUTField.AsString) else 'finding the largest suit value HighestSuit = LowFields = "" for each x in ((FieldsRetain.count)-1) 'for11 LCField = suitVtab.FindField(FieldsRetain.get(x)) LCFieldValue = suitVtab.ReturnValueNumber(LCField, rec) if(LCFieldValue > HighestSuit) then 'if12 'when current value is higher than stored highest value HighestSuit = LCFieldValue LowFields = "" 'variables are updated with new higher values LowFields = LCField.AsString end 'if12 if(LCFieldValue = HighestSuit) then 'if13 'when the value is equal to the current highest value if((LowFields.Contains(LCField.AsString)) = FALSE) then 'if14 LowFields = LowFields + ", " + LCField.AsString 'if LowFields doesn't yet contain the field name, it is added end end 'if13 end 'for12 132 'the current record is updated with the highest suit value and the associated field 'setValue for Suit# field (NhËp gÝa trÞ cho tr−êng Suit#) SuitField = suitVtab.FindField(Suitfname) suitVtab.SetValue(SuitField, rec , HighestSuit) 'setValue for Lc#Limit field (NhËp gÝa trÞ cho tr−êng Lc#Limit) LowField = suitVtab.FindField(Lowfieldsfname) suitVtab.SetValue(LowField, rec , LowFields) if (suitVtab.ReturnValue (SuitField, rec) = 1) then 'if14 suitVtab.SetValue(LowField, rec , "") end 'if14 'setValue for Suit#Level field (NhËp gÝa trÞ cho tr−êng Suit#Level) SuitLevelField = suitVtab.FindField(SuitLevelFname) if (suitVtab.ReturnValue (SuitField, rec) = 1) then 'if15 suitVtab.SetValue(SuitLevelField, rec , "1.ThÝch nghi cao") elseif (suitVtab.ReturnValue (SuitField, rec) = 2) then suitVtab.SetValue(SuitLevelField, rec , "2.ThÝch nghi TB") elseif (suitVtab.ReturnValue (SuitField, rec) = 3) then suitVtab.SetValue(SuitLevelField, rec , "3.ThÝch nghi kÐm") elseif (suitVtab.ReturnValue (SuitField, rec) = 4) then suitVtab.SetValue(SuitLevelField, rec , "4.Kh«ng thÝch nghi") elseif (suitVtab.ReturnValue (SuitField, rec) = 5) then suitVtab.SetValue(SuitLevelField, rec , "5.Vïng kh«ng NC") end 'if15 end 'if10 end 'for7 suitVtab.SetEditable(FALSE) else Msgbox.error("Unable to edit attribute table vtab to edit suitability table values", "Error") return nil end 'if6 '==================================================================== '==================================================================== Mã nguồn thuật toán DISSOLVE 'LE_DISSOLVE.Lbt_doDissolve.click ' -'script runs to dissolve boundaries of a suitability theme theProject = av.GetProject 'get controls in LE_DISSOLVE dialog theDialog = self.getDialog theCbx_themeList = theDialog.FindByName("Cbx_themeList") theCbx_fieldList = theDialog.FindByName("Cbx_fieldList") theBtn_outputFile = theDialog.FindByName("Btn_outputFile") theTxl_outputFile = theDialog.FindByName("Txl_outputFile") theLbt_doDissolve = theDialog.FindByName("Lbt_doDissolve") if(theCbx_themeList.getselection.asstring = "") then msgbox.error("A theme must be loaded in the view before a dissolve is possible", "Error") return nil end Distheme = theCbx_themeList.getselection disfield = theCbx_fieldList.getselection 133 if(disfield.asstring = "") then Msgbox.error("No field selected.", "Error") return nil end outputfile = theTxl_outputFile.gettext if(outputfile.asstring = "") then Msgbox.error("No output file selected/created.", "Error") return nil end outputfilename = theTxl_outputFile.gettext.asfilename.getbasename apos = outputfilename.indexof(".") if(apos>0) then outputnoext = outputfilename.left(apos) themedesc = outputnoext + ".shp - Dissolve" else themedesc = outputfilename.asstring + " - Dissolve" end thedialog.close geowait=av.finddialog("GeoWait") geowait.findbyname("changeme").setlabel(" and dissolves boundaries based on a field") geowait.open shpfield = distheme.getftab.findfield("shape") newftab = Distheme.GetFtab.Summarize(outputfile.asfilename, Shape, disfield, {shpfield}, {#VTAB_SUMMARY_SUM }) disthm = fTheme.make(newftab) For each d in theProject.GetDocs if (d.Is(View)) then themeList = d.GetThemes for each t in themeList if (t = d.findtheme(Distheme.AsString)) then suitTheme = t theView = d end end end end ViewDocWin = theView.GetWin ViewDocWin.open theView.AddTheme(disthm) disthm.setvisible(true) if(themedesc"") then disthm.setname (themedesc) end av.Run("LE_DISSOLVE.setLegendForSuitMap", {disfield}) geowait.close '==================================================================== '==================================================================== 134 NHỮNG CÔNG TRÌNH VỀ GIS VÀ ĐÁNH GIÁ ĐẤT ĐAI CÓ LIÊN QUAN ĐẾN ĐỀ TÀI MÀ TÁC GIẢ ĐÃ THAM GIA Chương trình điều tra đất trống đồi núi trọc nhằm mục tiêu mở rộng đất nông nghiệp vùng Đồng Tháp Mười, 1998 Chương trình điều tra đất trống đồi núi trọc nhằm mục tiêu mở rộng đất nông nghiệp vùng Tứ Giác Long Xuyên, 1998 Chương trình điều tra đất trống nhằm mục tiêu mở rộng đất nông nghiệp vùng Bán Đảo Cà Mau, 1998 Điều tra, bổ sung chỉnh lý đồ đất đánh giá đất đai tỉnh Bạc Liêu, 19981999 Quy hoạch sử dụng đất giai đoạn 2001 – 2010 đề xuất dự án ưu tiên phát triển nông nghiệp tỉnh Bạc Liêu, 2000 Điều chỉnh quy hoạch sản xuất nông - lâm – ngư - diêm nghiệp nghiệp vùng Nam Quốc Lộ 1A – Tỉnh Bạc Liêu, 2001 Điều chỉnh quy hoạch sản xuất nông - lâm - ngư nghiệp vùng Bắc Quốc Lộ 1A – Tỉnh Bạc Liêu, 2001 Quy hoạch chuyển đổi cấu sản xuất nông - lâm - ngư - diêm nghiệp Vùng Đông Nam Bộ, 2003 Quy hoạch chuyển đổi cấu sản xuất nông - lâm - ngư - diêm Vùng Đồng Bằng Sông Cửu Long, 2003 135 TÀI LIỆU THAM KHẢO [1] Lê Thái Bạt, Tôn Thất Chiểu CTV (1980), Một số kết điều tra đất, Viện Quy Hoạch Thiết Kế Nông Nghiệp, Hà Nội [2] Đinh Đại Gái (2002), Góp phần nghiên cứu đánh giá đất hình thành dạng đá bazan Vùng Đông Nam Bộ, Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam [3] Nguyễn Xuân Huy (1995), Cơ sở liệu, Trung tâm Công Nghệ Thông Tin địa Lý – DITAGIS [4] Nguyễn Xuân Huy (1994), Giáo trình công nghệ phần mềm, Hà Nội [5] Phạm Quang Khánh (1998), Đề cương đánh giá đất đai, Trường Đại Học Nông Lâm thành phố Hồ Chí Minh [6] Phạm Quang Khánh tác giả (1999), Quy hoạch sử dụng đất đai tỉnh Cà Mau, Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam [7] Nguyễn văn Nhân, Vũ Ngọc Hùng (2003), Báo thuyết minh đồ đất tỉnh Long An, Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam [8] Nguyễn Văn Nhân (1996), Đặc điểm đất đánh giá khả sử dụng đất sản xuất nông nghiệp vùng ĐBSCL, Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam [9] Trần An Phong (1995), Đánh giá trạng sử dụng đất theo quan diểm sinh thái phát triển lâu bền, NXB Nông Nghiệp [10] Trần Vónh Phước (2001), GIS số vấn đề chọn lọc, NXB Giáo Dục [11] Roger S.pressman, Ngô Trung Vịêt dịch (1997), Kỹ nghệ phần mềm, NXB Giáo Dục [12] Nguyễn Thế Thận, Trần Công Yên (2000), Hướng dẫn sử dụng MapInfo, NXB Xây Dựng [13] Nguyễn Thế Thận, Trần Công Yên (2000), Hướng dẫn sử dụng Arc/Info, NXB Xây Dựng [14] Vũ Cao Thái, Phạm Quang Khánh, Nguyễn Văn Khiêm (1997), Điều tra, đánh giá tài nguyên đất theo phương pháp FAO/UNESCO quy hoạch sử dụng đất địa bàn tỉnh, NXB Nông Nghiệp 136 [15] Bô Nông Nghiệp Phát triển Nông Thôn (1999), Quy trình đánh giá đất đai phục vụ sản xuất nông nghiệp, NXB Nông Nghiệp, Hà Nội [16] Bùi Quang Toản tác giả (1995), Nghiên cứu đánh giá quy hoạch sử dụng đất khai hoang Việt nam, Báo đề tài 02-15-02-01, Tập san nghiên cứu KHKT(1981-1985) - Viện Quy Hoạch Thiết Kế Nông Nghiệp [17] Graeme F BonHam – cater (1994), Geographic Information System for Geoscientists – Modelling with GIS, Pergramon [18] Yue-Hong Chou, Exploring Spatial Analysis in Geographic Infomation System, ONWORD [19] David Dent and Anthony Young (1987), Soil Survey and Land Evaluation, Geoge ALLAN & UNWIN [20] FAO (1976, 1983, 1985, 1987, 1992), A framework for land evaluation, LSBulletin [21] GIS by ISRI , Understanding GIS ; the ArcInfo Method [22] GIS by ISRI, ArcView GIS; Avernue; ArcView Dialog Disigner [23] A.J Smith, J Dumanski (1993), An International Framework for Evaluating Sustainable Land Management FAO [24] Website: http://www.esri.com/ [25] Website: http://www.gis.com/ [26] Website: http://wwwscas.cit.cornell.edu/landeval/ [27] Website: http://www2.una.edu/gepgraphy [28] Website: http://www.irri.org/ 137 LÝ LỊCH TRÍCH NGANG Họ tên học viên : TRẦN THỊ THU DUNG Ngày tháng năm sinh : 14 – 03 -1969 Địa liên lạc : 20 Võ Thị Sáu, Quận 1, Tp HCM Điện thoại : 8204030 Cơ quan: 20 Võ Thị Sáu, quận 1, Tp HCM Nơi sinh: Phú Thọ Trung Tâm Bản Đồ Tài Nguyên Tổng Hợp Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam QUÁ TRÌNH ĐÀO TẠO Từ 2001 – 2003: Học cao học, chuyên ngành Hệ Thống Thông Tin Địa Lý (GIS), Trường Đại Học Bách Khoa TP Hồ Chí Minh QUÁ TRÌNH CÔNG TÁC Từ năm 1994 đến nay: Công tác Phân Viện Quy Hoạch Thiết Kế Nông Nghiệp Miền Nam, Bộ Nông Nghiệp Phát Triển Nông Thôn 138 ... dựng? ?Mô hình áp dụng GIS đánh giá khả thích nghi đất đai phục vụ sản xuất nông nghi? ??p” Kết mô hình – chương trình ? ?Đánh giá khả thích nghi đất đai? ?? đưa vào sử dụng cho kết đồ thích nghi đồ đề xuất. .. ĐỀ TÀI : MÔ HÌNH ỨNG DỤNG GIS ĐÁNH GIÁ KHẢ NĂNG THÍCH NGHI CỦA ĐẤT ĐAI PHỤC VỤ SẢN XUẤT NÔNG NGHI? ??P NHIỆM VỤ VÀ NỘI DUNG: - Phân tích không gian GIS - Phương pháp luận đánh giá đất đai theo phương... 13 Đánh giá đất đai giới 13 Đánh giá đất đai Việt Nam 14 III Ứng dụng GIS đánh giá đất đai 17 Ứng dụng GIS đánh giá đất đai giới 17 Ứng dụng GIS đánh giá đất đai