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



