Bài giảng Hệ thống thông tin địa lý (GIS)
Tại sao chúng ta phải biết nguồn gốc thông tin không gian?
Biết được nguồn gốc có thể giúp bạn hiểu được:
Tại sao hai bản đồ cùng kích thước mà lại không chồng được lên nhau.
Tại sao miền đo trên một bản đồ có thể khác với kích thước của cùng một miền trên bản đồ khác.
Tại sao một đối tượng có thể xuất hiện trên một bản đồ, nhưng không xuất hiện trên bản đồ khác.
Và các vấn đề với dữ liệu không gian
Nguyên tắc đầu tiên
Làm cách nào để nhận dữ liệu đo được trên trái đất lên bản đồ.
Cách nào để mô hình hóa trái đất để mọi thứ trên trái đất đều được thể hiện trên bản đồ.
Cách đưa thông tin 3 chiều (chiều dài, chiều rộng và chiều cao) thành 2 chiều (chiều dài và chiều rộng)
-> Liên quan đến khoa đo đạc (geodesy).
n request block1 else request block2 end Dạng 3: if ( expression1 ) then request block1 elseif ( expression2 ) then request block2 [else] request block3 end 162 Ch2 - Hệ tọa độ Ví dụ Ví dụ 1 kiểm tra điều kiện đơn giản : if (result = nil) then return nil end Ví dụ 2 kiểm tra hai điều kiện if ( theView.GetThemes.count = 0) then MsgBox.Info ( "there are no themes", "") elseif ( theView.GetActiveThemes.count = 0) then MsgBox.Info ( "there are no active themes", "") end Ví dụ 3 Maximizes môt View nếu đang được chọn , hiện ra thông báo nếu đó là Project đang được chọn , và đóng cửa sổ nếu là loại khác . if ( av.GetActiveDoc.Is ( View )) then av.GetActiveDoc.GetWin.Maximize elseif ( av.GetActiveDoc.Is ( Project ) then MsgBox.Info ( "Please open a view", "") else av.GetActiveDoc.GetWin.Close end 163 Ch2 - Hệ tọa độ Câu lệnh For Each for each variable in collection [ by increment ] request block end Example for each i in 1..100 MsgBox.Info ( i.AsString , "") End theView = av.GetActiveDoc for each t in theView.GetActiveThemes t.EditTable end 164 Ch2 - Hệ tọa độ Câu lệnh Exit Chức năng kết thúc tất cả các scripts. Câu lệnh Exit Ví dụ : Script kết thúc nếu tên thư mục không ghi được . newDir = MsgBox.Input ( "Specify directory", "Directory", "") if ( newDir = nil) then exit elseif ( newDir.AsFileName.IsDir.Not ) then MsgBox.Error ( newDir.AsFileName.GetFullName++"is not a directory", "") exit elseif ( File.IsWritable(newDir.AsFileName).Not ) then MsgBox.Error ( newDir.AsFileName.GetFullName++"is not writable", "") exit else theProject.SetWorkDir ( newDir.AsFileName ) end 165 Ch2 - Hệ tọa độ Câu lệnh Continue Chức năng bỏ qua lần lặp trong câu lệnh lặp , nó bỏ qua các câu lệnh còn lại trong vòng lặp . Câu lệnh continue Ví dụ Script kiểm tra mỗi trường của mỗi Theme trong View, nếu trường hiện tại là kiểu số thì sẽ bỏ qua, bằng cách nhảy qua request SetVisible . theView = av.GetActiveDoc for each t in theView.GetThemes for each f in t.GetFtab.GetFields if ( f.IsTypeNumber ) then continue end f.SetVisible(true ) end t.GetFtab.Refresh end 166 Ch2 - Hệ tọa độ Câu lệnh Break Chức năng kết thúc thực hiện trong các câu lệnh lặp For Each hoặc While . Cú pháp break Chú ý: Câu lệnh Break chỉ hợp trong vòng lặp For Each hoặc While. 167 Ch2 - Hệ tọa độ Ví dụ Khi biến đếm = 5 thì kết thúc vòng lặp . Câu lệnh tiếp theo được thực thi sau câu lệnh Break là câu lệnh in ra thông báo “Complete”. for each num in 1..10 if (num = 5) then break end msgbox.info("Num is"++num.asString,"ArcView Example") end msgbox.info ( "Complete", "") 168 Ch2 - Hệ tọa độ Câu lệnh Return Có thể dùng để trả về một đối tượng khi gọi Script. Dùng câu lệnh Return để kết thúc thực thi script hiện tại . Cú pháp return anObject 169 Ch2 - Hệ tọa độ Ví dụ Ví dụ 1: dùng câu lệnh Return thay vì dùng câu lệnh Exit để kết thúc Script trừ khi bạn gặp những lỗi nghiêm trọng . MyView = av.GetProject.FindDoc ( "View1" ) if ( myView = nil) then MsgBox.Error ( "couldn't find view", "") return nil end Ví dụ 2: Một script gọi một script khác và nhận giá trị trả về . 'calling script results = av.run("GetAction ", "Green") msgbox.info(results , "Driving Instructions") Giá trị trả về khi gọi script trên 'script " GetAction " if (Self = "RED") then return "Stop" elseif (Self = "Green") then return "GO" else return "Use caution" end 170 Ch2 - Hệ tọa độ Câu lệnh While Lặp lai công việc nào đó khi biểu thức điều kiện là true. Với vòng lặp While phải đảm bảo điều kiện dừng sai một một số vòng lặp hữu hạn . Câu lệnh while ( expression) request block end 171 Ch2 - Hệ tọa độ Ví dụ Ví dụ thông báo người sử dụng , nếu người sử dụng chọn Yes thì biểu thức = true và ArcView chạy script TestScript . while ( msgbox.yesno("Run the script again?","ArcView",TRUE )) av.Run("TestScript",nil ) ' TestScript is another script created in the same project. end Có thể dùng câu lện Break để kết thúc vòng lặp . while (true) again = MsgBox.YesNo ( "do it again", "DO IT", TRUE ) if (not again) then break end end 172 Ch2 - Hệ tọa độ Biểu thức Boolean Biểu thức Boolean mang một trong hai giá trị True hoặc False. Được sử dụng trong kiểm tra biểu thức điều kiện của các câu lệnh như If(expression ) hoặc While expression . Ba từ khóa hữu ích trong việc kết hợp các biểu thức là : and, or, not. 173 Ch2 - Hệ tọa độ String String là một chuỗi các ký tự có độ dài cố định . Chuỗi được phân cách bởi ký tự “. myString = “Hello World” String có thể bao gồm các ký tự đặc biệt . NL: newline . TAB: tab. CR: Carriage return . myString = “Hello World” + NL + “Have a Nice Day” Cộng hai chuỗi dùng toán tử : + hoặc ++. Toán tử ++ chèn thêm một khoảng trắng giữa hai chuỗi . 174 Ch2 - Hệ tọa độ String String có các phương thức : Contains , Count and IndexOf So sánh hai chuỗi dùng các toán tử : =, , =. Chuyển đổi đối tượng string tới đối tượng khác trong Avenue với các phương thức : AsAscii , AsFileName , AsList , AsNumber , AsDate , AsTime , AsEnum , AsToken . Bạn có thể thực thao tác với string cùng các phương thức : BasicProper , Extract, Lcase , Left, Middle, Proper, Right, Translate, Trim, and Upcase 175 Ch2 - Hệ tọa độ Number Trong Avenue, biểu thức tính toán được thực hiện từ trái qua phải . x = 5 + 3 * 3 theo bạn kq là 14 hay 24 Dùng dấu ngoặc để thực hiện thứ tự ưu tiên của biểu thức : x = 5 + (3*3) Avenue sử dụng ký hiệu dạng hậu tố cho các phương thức để thực hiện các chức năng kiểu số . x = -7.abs Chuyển đổi tới các đối tượng kiểu khác : AsString , Asdays , AsYears , AsHours , AsMinutes , 176 Ch2 - Hệ tọa độ Number Một khoảng các giá trị số I = 1..25 Định dạng số Chữ d miêu tả dạng số Example: “ d.dd ” Định nghĩa một định dạng kiểu số cho ứng dụng Number.SetDefFormat(“d.ddd ”) ‘app defalt aScript.SetNumberFormat(“d,ddd’)’Script default aNumber.SetFormat(“dd ”) ‘object Bỏ định dạng aNumber.SetFormat (“ ”) 177 Ch2 - Hệ tọa độ Number Các request number GetDefFormat : String GetEuler : Number GetPi : Number MakeNull : Number MakeRandom ( min, max ) : Number SetDefFormat ( aFormatString ) Định dạng Number GetFormat : String SetFormat ( aFormatString ) : Number SetFormatPrecision ( num ) : Number 178 Ch2 - Hệ tọa độ Number Chuyển đổi dạng Number (convert) .. anotherNumber : Interval @ Y : Point AsChar : String AsDate : Date AsDays : Duration AsDegrees : Number AsHexString : String AsHours : Duration AsMinutes : Duration AsRadians : Number AsSeconds : Duration AsString : String AsYears : Duration 179 Ch2 - Hệ tọa độ Number Các toán tử Number * anotherNumber : Number + anotherNumber : Number - anotherNumber : Number / anotherNumber : Number Negate : Number ^ anotherNumber : Number Phân loại Number = anotherNumber : Boolean IsInfinity : Boolean IsNull : Boolean Max anotherNumber : Number Min anotherNumber : Number 180 Ch2 - Hệ tọa độ Number Các hàm Number Abs : Number ACos : Number ASin : Number ATan : Number Ceiling : Number Cos : Number Floor : Number Ln : Number Log ( aBase ) : Number Mod anotherNumber : Number Round : Number Sin : Number Sqrt : Number Tan : Number Truncate : Number 181 Ch2 - Hệ tọa độ Dates và Time Các đối tượng Date có thể chứa ngày tháng hiện tai hoặc ngày tháng chỉ định với một định dạng nhất định . today = Date.Now today.SetFormat ( "M, d, yyyy " ) MsgBox.Info ( today.AsString , "") today.SetFormat ( " dddd MMMM d, yyyy " ) MsgBox.Info ( today.AsString , "") 182 Ch2 - Hệ tọa độ Các định dạng Date M - the month as an integer from 1 to 12 MM - same as 'M', but with a leading zero for single digit month numbers MMM - the short form of the month name ('short' is determined by locale) MMMM - the long form of the month name d - the day of the month as an integer from 1 to 31 (may have leading blank) dd - same as 'd', but with a leading zero for single digit dates ddd - the short form of the day name ('short' is determined by locale) dddd - the long form of the day name y - the year without century yy - same as 'y', but with a leading zero for single digit year numbers yyy - the year with century yyyy - the year with century yyyyy - the year with century, not restricted to four digits c - the century, without a leading zero cc - the century, with a leading zero for single digit centuries w - week of the year (Week 0 is first week with a Thursday) ww - week of the year, two digits with leading zeros D - numeric day of the week (Sunday = 1), one digit always AD - AD or BC string depending upon the year CE - CE or BCE string depending upon the year J - Julian Day (days since January 1, 4713 BC) j - day of the year jj - day of the year, three digits with leading zeros 183 Ch2 - Hệ tọa độ Các định dạng Time m - the minute as an integer from 0 to 59 s - the seconds value as an integer from 0 to 59 s.s - the seconds with milliseconds, 00.000 h - the hour as an integer from 1 to 12 hh - same as 'h', but with leading zero instead of blank hhh - the hour from 0 to 23 hhhh - same as ' hhh ', but with leading zero instead of blank AMPM - locale specific AM or PM string TZ - the locale specific time zone string ITZ - ISO format time zone string (+0800, -0500, etc.) Ex: 2DaysAgo = today - 2.AsDays today.IncrementByDays(-2) 3DaysFromToday = today + 3.AsDays today.IncrementByDays(3) 184 Ch2 - Hệ tọa độ Các phần tham khảo Lists Dictionaries Stacks Enumerations Object tags SELF Nil Message Boxes 185 Ch2 - Hệ tọa độ
File đính kèm:
- bai_giang_he_thong_thong_tin_dia_ly_gis.ppt