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).

 

ppt185 trang | Chia sẻ: tranluankk2 | Ngày: 24/03/2022 | Lượt xem: 326 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ thống thông tin địa lý (GIS), để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
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:

  • pptbai_giang_he_thong_thong_tin_dia_ly_gis.ppt