Tài liệu Đề tài Nghiên cứu chuyển đổi phần mềm grass từ nền unix lên windows: KH
OA
C
NT
T –
Đ
H
KH
TN
Lời Cảm Ơn
Lời Cảm Ơn
W X
Luận văn của chúng em sẽ rất khó hoàn thành nếu không có sự truyền đạt kiến
thức quí báu và sự hướng dẫn tận tình của Thầy Dương Anh Đức. Chúng em xin chân
thành cám ơn sự chỉ bảo của các thầy.
Chúng con xin gửi tất cả lòng biết ơn, sự kính trọng đến ông bà, cha mẹ, cùng
toàn thể gia đình, những người đã nuôi dạy, đã cho chúng con niềm tin và nghị lực để
vượt qua mọi khó khăn.
Chúng em xin trân trọng cám ơn quý Thầy cô trong Khoa Công nghệ thông tin
trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy, truyền đạt
những kiến thức quý báu và tạo điều kiện cho chúng em được thực hiện luận văn này.
Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của các
anh chị đi trước và tất cả bạn bè. Các anh chị, các bạn luôn có mặt trong những thời
điểm khó khăn nhất, tiếp thêm động lực và ý chí, giúp chúng tôi hoàn thành được luận
văn.
Mặc dù đã cố gắng nỗ lực hết sứ...
157 trang |
Chia sẻ: hunglv | Lượt xem: 1260 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Nghiên cứu chuyển đổi phần mềm grass từ nền unix lên windows, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
KH
OA
C
NT
T –
Đ
H
KH
TN
Lời Cảm Ơn
Lời Cảm Ơn
W X
Luận văn của chúng em sẽ rất khĩ hồn thành nếu khơng cĩ sự truyền đạt kiến
thức quí báu và sự hướng dẫn tận tình của Thầy Dương Anh Đức. Chúng em xin chân
thành cám ơn sự chỉ bảo của các thầy.
Chúng con xin gửi tất cả lịng biết ơn, sự kính trọng đến ơng bà, cha mẹ, cùng
tồn thể gia đình, những người đã nuơi dạy, đã cho chúng con niềm tin và nghị lực để
vượt qua mọi khĩ khăn.
Chúng em xin trân trọng cám ơn quý Thầy cơ trong Khoa Cơng nghệ thơng tin
trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy, truyền đạt
những kiến thức quý báu và tạo điều kiện cho chúng em được thực hiện luận văn này.
Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của các
anh chị đi trước và tất cả bạn bè. Các anh chị, các bạn luơn cĩ mặt trong những thời
điểm khĩ khăn nhất, tiếp thêm động lực và ý chí, giúp chúng tơi hồn thành được luận
văn.
Mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn luận văn khơng khỏi
cịn nhiều thiếu sĩt. Chúng em rất mong nhận được sự thơng cảm và chỉ bảo tận tình
của quý Thầy cơ và các bạn.
Tp.HCM, 7/2004
Nhĩm sinh viên thực hiện
Nguyễn Quý Minh – Phạm Anh Vũ
Trang 1
KH
OA
C
NT
T –
Đ
H
KH
TN
Lời nĩi đầu
Lời Nĩi Đầu
[ \
Ngày nay, trong tất cả các lãnh vực của đời sống kinh tế, xã hội, cơng nghệ
thơng tin được xem là một trong những ngành cơng nghệ mũi nhọn, đĩng vai trị hết
sức quan trọng, cĩ thể tạo ra những bước đột phá mạnh mẽ.
Các ứng dụng GIS ngày càng phát huy vai trị quan trọng trong việc hỗ trợ quản
lý, qui hoạch đặc biệt là đối với các tổ chức, chính phủ. Vấn đề qui hoạch ở Việt Nam,
cũng như ở nhiều quốc gia khác, đang gặp rất nhiều khĩ khăn, tốn nhiều thời gian và
tiền bạc, nhất là đối với các thành phố lớn, trọng điểm như TP Hồ Chí Minh, Hà Nội,
Hải Phịng ... Giải pháp cần thiết là một ứng dụng GIS hỗ trợ. Việc bắt tay xây dựng từ
đầu một ứng dụng GIS cần rất nhiều thời gian, tiền bạc và cơng sức nhưng chưa chắc
thành cơng. Trên thị trường cũng cĩ những ứng dụng GIS thương mại, cho phép xây
dựng ứng dụng trên nền thư viện cung cấp sẵn như ArcView GIS, ArcGIS .. , tuy nhiên
sẽ phải đối mặt với vấn đề bản quyền, tốn rất nhiều tiền bạc khi triển khai trên diện
rộng.
GRASS là một phần mềm GIS cĩ chức năng, sức mạnh bằng hoặc vượt các sản
phẩm thương mại nhưng điều đặc biệt là một ứng dụng mã nguồn mở, tức người sử
dụng cĩ thể tự mình tịan quyền cài đặt, sữa chữa phù hợp với nhu cầu và đặc điểm
riêng của mình mà khơng phải trả chi phí bản quyền phần mềm. Điều hạn chế hiện nay
là GRASS chỉ được phát triển trên nền UNIX. Nếu cĩ thể chuyển đổi GRASS sang
Windows, ta cĩ thể xây dựng được nhiều ứng dụng GIS với chi phí rẻ, phù hợp để phổ
biến trên diện rộng do Windows là hệ điều hành dễ sử dụng, thân thiện và cĩ số lượng
người dùng nhiều nhất hiện nay.
Với ý tưởng trên, chúng em đã tập trung thực hiện đề tài “NGHIÊN CỨU
CHUYỂN ĐỔI PHẦN MỀM GRASS TỪ NỀN UNIX LÊN WINDOWS”.
Trang 2
KH
OA
C
NT
T –
Đ
H
KH
TN
Lời nĩi đầu
Nội dung của luận văn được chia làm 5 chương:
Chương 0: Mở đầu giới thiệu chung về đề tài, ý nghĩa và các mục tiêu của đề
tài; trình bày các giải pháp và hướng nghiên cứu đã được thực hiện trong và ngồi
nước.
Chương 1: .OpenGIS – Khái niệm chung và Các mơ hình dữ liệu, giới thiệu
chung về các khái niệm GIS, OpenGIS, các mơ hình dữ liệu trên GIS.
Chương 2: Hệ Thống Hỗ trợ Phân tích Tài nguyên Địa lý, trình bày về phần
mềm mã nguồn mở GRASS, cách thức cài đặt và khởi tạo, cách thức sử dụng và lập
trình trên GRASS.
Chương 3: Quá trình chuyển đổi GRASS từ Unix lên mơi trường Window,
các kỹ thuật cài đặt trong GRASS, mơ hình và cấu trúc chi tiết của GRASS, các bộ thư
viện trung tâm.
Chương 4: Tổng kết tĩm tắt lại các vấn đề đã được đặt ra trong luận văn, cách
giải quyết, kết quả đạt được và đề ra một số hướng phát triển trong tương lai.
Trang 3
KH
OA
C
NT
T –
Đ
H
KH
TN
Mục lục
Mục Lục
Lời Cảm Ơn ................................................................................................................................ 1
Lời Nĩi Đầu ................................................................................................................................ 2
Mục Lục...................................................................................................................................... 4
Danh sách các hình vẽ ................................................................................................................ 6
Chương 0 : Mở Đầu .................................................................................................................... 7
Chương 1 : OpenGIS – Khái niệm chung và Các mơ hình dữ liệu .......................................... 8
1.1 Giới thiệu về GIS .............................................................................................................. 8
1.1.1 Định nghĩa GIS .......................................................................................................... 8
1.1.2 Các thành phần của GIS........................................................................................... 10
1.1.3 Các mơ hình dữ liệu của GIS.................................................................................. 11
1.1.4 Vấn Đề Dữ Liệu Đối Với GIS ................................................................................. 12
1.2 Khái Quát Về OpenGIS .................................................................................................. 14
1.2.1 Tổ chức OGC........................................................................................................... 14
1.2.2 Định nghĩa OpenGIS ............................................................................................... 16
Chương 2 : Hệ Thống Hỗ trợ Phân tích Tài nguyên Địa lý..................................................... 17
2.1 Sơ lược về GRASS ......................................................................................................... 17
2.2 Kiến trúc GRASS............................................................................................................ 19
2.3 Định dạng dữ liệu .......................................................................................................... 20
2.4 Tổ chức lưu trữ dữ liệu của GRASS............................................................................... 23
2.4.1 GISDBASE :............................................................................................................ 23
2.4.2 LOCATION : ........................................................................................................... 23
2.4.3 MAPSETS ............................................................................................................... 24
2.4.4 REGION và MASK................................................................................................ 29
2.4.5 Các biến mơi trường sử dụng trong GRASS ........................................................... 31
2.5 Dữ liệu RASTER ............................................................................................................ 32
2.5.1 Ý niệm sơ lược......................................................................................................... 32
2.5.2 Hệ thống tập tin raster............................................................................................. 34
2.5.3 Các thao tác quan trọng ........................................................................................... 34
2.6 Dữ liệu VECTOR (VECTOR DATA)............................................................................ 35
2.6.1 Ý niệm sơ lược......................................................................................................... 35
2.6.2 Hệ thống tập tin vector............................................................................................ 36
2.6.3 Các thao tác quan trọng ........................................................................................... 37
2.7 Dữ liệu điểm (POINT/SITE DATA) .............................................................................. 38
2.7.1 Ý niệm sơ lược......................................................................................................... 38
2.7.2 Hệ thống tập tin site ................................................................................................ 39
2.7.3 Các thao tác quan trọng ........................................................................................... 40
2.8 Các thư viện được cung cấp bởi GRASS (src/libes)....................................................... 41
2.8.1 Danh sách................................................................................................................. 41
2.8.2 Giới thiệu sơ bộ hàm và thư viện............................................................................. 43
2.9 Cơ chế bổ sung và quản lý mã nguồn của GRASS......................................................... 95
Trang 4
KH
OA
C
NT
T –
Đ
H
KH
TN
Mục lục
2.9.1 Mã nguồn chính thức (thư mục src)......................................................................... 96
2.9.2 Mã nguồn ALPHA (thư mục src.alpha)................................................................... 96
2.9.3 Mã nguồn đĩng gĩp (thư mục src.contrib) .............................................................. 96
2.9.4 Mã nguồn cĩ liên quan (thư mục src.related) .......................................................... 97
2.9.5 Mã nguồn GARDEN (src.garden) ........................................................................... 97
2.9.6 Các script (src/script/shell) ...................................................................................... 97
2.10 Hướng dẫn cài đặt và sơ lược cách sử dụng ................................................................. 97
2.10.1 Cài đặt GRASS trên LINUX ................................................................................. 97
2.10.2 Cài đặt GRASS trên Windows thơng qua giả lập Cygwin .................................... 99
Chương 3 : Quá trình chuyển đổi GRASS5 từ Linux lên Windows..................................... 101
3.1 Sự khác biệt giữa Windows và Unix/Linux.................................................................. 101
3.1.1 Tổng quan về hệ điều hành Windows.................................................................... 101
3.1.2 Tổng quan về hệ điều hành UNIX......................................................................... 103
3.1.3 So sánh tổng quát về lập trình đa nhiệm trên hai mơi trường................................ 105
3.1.4 So sánh về hệ thống file của hai mơi trường ......................................................... 109
3.1.5 Giao diện người dùng ............................................................................................ 112
3.1.6 Shell và script......................................................................................................... 113
3.2 Sơ lược về phần mềm GRASS ..................................................................................... 113
3.3 Sơ lược về mã nguồn của GRASS 5.0.2....................................................................... 114
3.4 Mơi trường sử dụng để chuyển đổi GRASS5 ............................................................... 115
3.5 Các vấn đề chính khi chuyển đổi lên Windows........................................................... 116
3.5.1 Khởi tạo các biến mơi trường cần thiết................................................................. 116
3.5.2 Dữ Liệu GRASS và Cấu trúc của dữ liệu GRASS ............................................... 119
3.5.3 Cấu trúc chung của source code GRASS.............................................................. 121
3.5.3.1 Cài đặt bộ thư viện trung tâm ............................................................................. 122
3.5.3.2 Cài đặt các nhĩm lệnh xử lý của Grass............................................................... 124
3.5.3.3 Các Driver dùng để hiển thị của Display............................................................ 129
3.5.3.4 Cơ chế SendMessage trong GRASS5................................................................ 132
3.5.3.5 Khái niệm hệ thống đồ họa XWindow trong Linux .......................................... 143
3.5.3.6 Cài đặt và sử dụng các hàm X (Xlib) trên Window32....................................... 147
Chương 4 : Tổng Kết .............................................................................................................. 152
4.1 Kết Luận ....................................................................................................................... 152
4.2 Hướng Phát Triển ......................................................................................................... 152
Tài Liệu Tham Khảo............................................................................................................... 153
Phụ Lục ................................................................................................................................... 154
Trang 5
KH
OA
C
NT
T –
Đ
H
KH
TN
Danh sách các hình vẽ
Danh sách các hình vẽ
Hình 1 - 1 Minh họa về GIS ..................................................................................... 11
Hình 2 - 1 Mơ hình kiến trúc GRASS ...................................................................... 20
Hình 2 - 2 Minh họa cấu trúc lưu trữ của GISDBASE trên đĩa................................ 23
Hình 2 - 3 Minh họa cấu trúc lưu trữ của LOCATION trên đĩa............................... 24
Hình 2 - 4 Minh họa cấu trúc lưu trữ của MAPSET trên đĩa.................................... 25
Hình 2 - 5 Minh họa cơ chế MASK của GRASS ..................................................... 31
Hình 2 - 6 Minh họa dữ liệu điểm – POINT/SITE ................................................... 39
Hình 2 - 7 Hình ảnh sử dụng GRASS5 trên Linux................................................... 99
Hình 2 - 8 Hình ảnh sử dụng GRASS5 trên Windows thơng qua giả lập Cygwin. 100
Hình 3 - 1 Kiến trúc của hệ điều hành Windows theo họ NT................................ 103
Hình 3 - 2 Các dịng hệ điều hành phát triển trên nền UNIX ................................ 104
Hình 3 - 3 Kiến trúc của hệ điều hành UNIX ........................................................ 105
Hình 3 - 4 Mơ hình minh họa cơ chế Send Event trong GRASS5 ........................ 138
Hình 3 - 5 Kiến trúc thư viện XLIB....................................................................... 151
Trang 6
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 0: Mở đầu
Chương 0 : Mở Đầu
Các ứng dụng GIS ngày càng phát huy vai trị quan trọng trong việc hỗ trợ quản
lý, qui hoạch đặc biệt là đối với các tổ chức, chính phủ. Vấn đề qui hoạch ở Việt Nam,
cũng như ở nhiều quốc gia khác, đang gặp rất nhiều khĩ khăn, tốn nhiều thời gian và
tiền bạc, nhất là đối với các thành phố lớn, trọng điểm như TP Hồ Chí Minh, Hà Nội,
Hải Phịng ... Giải pháp cần thiết là một ứng dụng GIS hỗ trợ. Từ nhu cầu nĩi trên,
chúng em đã đầu tư xây dựng đề tài “NGHIÊN CỨU CHUYỂN ĐỔI PHẦN MỀM
GRASS TỪ NỀN UNIX LÊN WINDOWS”.
Đề tài phải giải quyết một số cơng việc chính:
• Nghiên cứu GIS và chuẩn OpenGIS.
• Nghiên cứu sự khác nhau giữa hệ điều hành Unix và Windows.
• Dựa vào những hiểu biết này, xem xét việc xây dựng một ứng dụng GIS
trên nền phần mềm mã nguồn mở GRASS.
• Triển khai việc chuyển đổi GRASS từ mơi trường Unix sang mơi trường
Windows.
Trang 7
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
Chương 1 :
OpenGIS –
Khái niệm chung và Các mơ hình dữ liệu
Chương này trình bày khái quát về GIS và những vấn đề tồn tại liên quan đến trao đổi
dữ liệu GIS trong mơi trường mạng dẫn đến nhu cầu xuất hiện OpenGIS. Các khái
niệm và chủ đề liên quan đến OpenGIS, vai trị của tổ chức OGC (Open GIS
Consortium), mơ hình tham chiếu ORM (OpenGIS Refrerence Model), và các bộ đặc
tả về OpenGIS được đề xuất bởi OGC là những phần chính được đề cập đến trong
chương này.
1.1 Giới thiệu về GIS
1.1.1 Định nghĩa GIS
Hệ thống thơng tin địa lý, gọi tắt là GIS (Geographic Information System) ra đời từ đầu
thập niên 60. Tuy nhiên mãi đến thập niên 80, GIS mới thực sự được phát triển nhanh
chĩng. Cho đến nay, tuỳ theo cách tiếp cận mà người ta cĩ nhiều định nghĩa khác nhau
về GIS. Những định nghĩa này bổ sung cho nhau giúp ta hiểu đầy đủ hơn các khía cạnh
của GIS. Sau đây là một số định nghĩa của GIS được trích theo Peter & Rachael
(1998):
GIS là một tập các cơng cụ mạnh dùng cho việc thu nhập, lưu trữ cũng như
truy tìm, biến đổi và hiển thị các dữ liệu khơng gian từ thế giới thực (Burrough,
1986)
•
•
•
GIS là một hệ thống dùng cho việc nắm bắt, kiểm tra, thao tác, phân tích và
hiển thị các dữ liệu qui chiếu khơng gian liên quan đến Trái đất (Department of
Environment, 1987)
GIS là cơng nghệ thơng tin cho phép lưu trữ, phân tích, và hiển thị cả dữ liệu
Trang 8
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
khơng gian lẫn dữ liệu phi khơng gian (Parker, 1988)
GIS là hệ thống cơ sở dữ liệu trong đĩ phần lớn dữ liệu biểu thị khơng gian, và
tập các thủ tục thao tác trên những dữ liệu này nhằm trả lời những truy vấn về
các thực thể khơng gian chứa trong cơ sở dữ liệu (Smith et al,. 1987)
•
•
•
•
•
•
•
•
•
GIS là tập các thủ tục thủ cơng hoặc dựa trên máy tính được dùng để lưu trữ và
thao tác các dữ liệu tham chiếu địa lý (Aronoff, 1989)
GIS là tập các chức năng được thực hiện một cách tự động nhằm cung cấp
những năng lực cấp cao đối với sự lưu trữ, truy tìm, thao tá và hiển thị các dữ
liệu vị trí địa lý (Ozemoy, Smith, & Sicherman, 1981)
GIS là một thực thể tổ chức, phản ánh cấu trúc tổ chức cho phép tích hợp cơng
nghệ với cơ sở dữ liệu và các chuyên gia, và tổ chức này liên tục hỗ trợ tài
chính (Carter, 1989)
GIS là hệ thống hỗ trợ quyết định liên quan đến sự tích hợp dữ liệu quy chiếu
khơng gian trong một mơi trường giải quyết vấn đề (Cowen, 1988)
Thơng qua các định nghĩa trên, ta thấy được ba khía cạnh quan trọng của một
hệ thống GIS bao gồm:
Tập các cơng cụ hoặc thủ tục cho phép thực hiện các chức năng lưu trữ, truy
tìm, biến đổi, phân tích và hiển thị dữ liệu khơng gian địa lý.
Cơ sở dữ liệu là thành phần quan trọng chức các dữ liệu khơng gian kết hợp dữ
liệu phi khơng gian.
Tổ chức nhằm phối hợp kỹ thuật và con người để cĩ thể duy trì và phát triển hệ
thống nhằm đưa ra những quyết định hợp lý.
Trang 9
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
1.1.2 Các thành phần của GIS
Cĩ nhiều mơ hình GIS tuỳ theo nhu cầu của người dùng. Mơ hình đầy đủ của GIS bao
gồm sáu thành phần: phần cứng, phần mềm, dữ liệu, qui trình, con người và tổ chức.
Những thành phần này cần phải kết hợp cân đối nhau để hệ thống làm việc hiệu quả.
Phần cứng GIS bao gồm hệ thống máy tính hoặc mạng máy tính cho phép
nhập, xuất, lưu trữ, truyền và hiển thị dữ liệu khơng gian.
•
•
•
•
•
•
Phần mềm GIS bao gồm những cơng cụ thực hiện năm chức năng chính là
nhập và kiểm tra dữ liệu, lưu trữ quản lý dữ liệu, xuất và thể hiện dữ liệu, biến
đổi phân tích dữ liệu, và giao tiếp với người sử dụng.
Dữ liệu GIS bao gồm dữ liệu khơng gian và dữ liệu phi khơng gian với dung
lượng rất lớn, cần được thu nhập và lưu trữ theo một cấu trúc chuẩn để thuận
tiện cho việc trao đổi và bảo quản.
Các qui trình xử lý được xác lập trong quá trình phân tích và thiết kế hệ thống
GIS cho một tổ chức với các mục tiêu cụ thể. Khả năng xây dựng và triển khai
các qui trình ảnh hưởng đến tính hữu hiệu của hệ thống GIS.
Con người là yếu tố quyết định sự thành cơng của hệ thống GIS. Con người
bao gồm các kỹ thuật viên, chuyên viên cơng nghệ thơng tin, nhà quản trị hệ
thống và người sử dụng các kết quả của GIS để ra quyết định.
Tất cả những thành phần trên cần được đặt trong một tổ chức thích hợp, cĩ các
cơ chế, chính sách và qui trình hợp lý.
Trang 10
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
Hình 1 - 1 Minh họa về GIS
1.1.3 Các mơ hình dữ liệu của GIS
Trong GIS, các thực thể trong thế giới thực cĩ thể được biểu diễn bằng những mơ hình
dữ liệu khác nhau nhằm mơ tả các thuộc tính, vị trí, thời gian và quan hệ khơng gian
giữa chúng. Các thực thể khi được biểu diễn trong mơ hình dữ liệu thường được gọi là
các đối tượng. Để biểu diễn vị trí và quan hệ của các đối tượng trong khơng gian địa lý,
người ta dùng mơ hình vector hoặc mơ hình raster. Mơ hình phân cấp, mơ hình mạng
hoặc mơ hình quan hệ thì được dùng để biểu diễn các thuộc tính của các đối tượng.
Trong cơ sở dữ liệu địa lý, các thuộc tính sẽ được liên kết với các đối tượng tương ứng
trong mơ hình vector hoặc raster. Mỗi một mơ hình đều cĩ ưu điểm và nhược điểm
riêng, và cĩ thể cĩ nhiều cấu trúc dữ liệu, mỗi cấu trúc dữ liệu cĩ thể được lưu trữ bằng
nhiều định dạng khác nhau.
Trang 11
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
Mơ hình vector
Trong mơ hình vector, mỗi đặc trưng địa lý trên mặt đất được xác định bằng những
điểm, đường và vùng trong mặt phẳng toạ độ Descartes. Mỗi điểm được xác định bởi
cặp toạ độ (x,y), mỗi đường được tuyến tính hố thành nhiều đoạn biểu diễn bằng một
chuỗi những cặp toạ độ (xi, yi), mỗi vùng được xác định bởi một đường khép kính và
được biểu diễn bằng một chuỗi các cặp tọa độ (xi, yi) cĩ các tọa độ điểm đầu và điểm
cuối trùng nhau.
Mơ hình raster
Trong mơ hình raster, khơng gian được chia thành những phần tử nhỏ cịn được gọi là
tế bào. Mỗi tế bào được xem như đồng nhất, cùng một thuộc tính và được biểu diễn
như một điểm. Kích thước của mỗi tế bào được đặc trưng bởi độ phân giải.Cĩ thể hình
dung dữ liệu raster như là một tấm lưới phủ lên một địa thế nào đĩ trong thế giới thực,
và mỗi ơ trong lưới cĩ một mã số đặc trưng cho một ý nghĩa nào đĩ của vùng nằm bên
trong ơ đĩ.
Một đặc điểm của cấu trúc raster là một lưới raster như vậy chỉ biểu diễn được một
thuộc tính àno đĩ của đối tượng thơi, vì mỗi tế bào trong lưới chỉ được gán bởi duy
nhất một giá trị thuộc tính. Do vậy, người ta thường tạo nhiều lớp lưới raster khác nhau
để biểu diễn nhiều thuộc tính cho cùng một đối tượng, mỗi lớp cho mỗi thuộc tính.
1.1.4 Vấn Đề Dữ Liệu Đối Với GIS
Hiện nay trên thị trường cĩ rất nhiều sản phẩm phần mềm GIS. Một số phần mềm GIS
được xây dựng trên mơ hình dữ liệu vector (mơ hình thơng dụng), một số khác xây
dựng trên mơ hình raster, và một số khác nữa xây dựng trên cả hai mơ hình. Với mỗi
mơ hình được chọn, các hãng sản xuất phần mềm GIS lại cĩ những biễu diễn vật lý
riêng của mình ở thiết kế bên trong nhằm tối ưu hĩa việc lưu trữ, xử lý cũng như hiển
Trang 12
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
thị dữ liệu. Bên cạnh đĩ, các tổ chức cũng đưa ra những dạng thức riêng của họ để
thuận tiện cho việc ghi nhận và trao đổi dữ liệu địa lý của tổ chức.
Để lưu trữ dữ liệu khơng gian địa lý theo kiểu vector, phần mềm GIS ArcInfo dùng
dạng thức tập tin .shp, AutoCAD dùng .dwg, Autodesk Map dùng .dxf, MapInfo dùng
.mif, MicroStation dùng .dng, … Cịn tổ chức US Geological Survey dùng dạng thức
DLG (Digital Line Graph), Chính phủ US dùng SDTS (Spatial Data Transfer System),
tổ chức US Census Bureau dùng TIGER (Topologically Integrated Geographic
Encoding and Referencing Files), … (cĩ thể tham khảo thêm tại Đặng Văn Đức, 2001,
trang 202-204).
Tương tự với kiểu raster, nhiều dạng thức tập tin khác nhau cũng được sử dụng cho
việc lưu trữ dữ liệu, đặc biệt là những dữ liệu bản đồ được số hĩa từ các thiết bị chuyên
dụng hoặc từ các ảnh chụp viễn thám. Chẳng hạn, các dạng thức PCX (PC PaintBrush
Exchange), TIFF (Tagged Image File Format) thường được dùng cho các ảnh raster tạo
được từ máy quét hoặc các chương trình vẽ PC, dạng thức ADRG (Arc Digitized
Raster Graphics) được dùng bởi Quân đội US lưu các ảnh raster của bản đồ giấy, dạng
thức BIL (Band Interleaved by Line) và BIP (Band Interleaved by Pixel) được dùng
cho các hệ thống viễn thám.
Về việc liên kết dữ liệu khơng gian địa lý với dữ liệu thuộc tính (cịn gọi là dữ liệu phi
khơng gian) trong hệ GIS cũng cĩ nhiều mơ hình khác nhau. Chẳng hạn, MapInfo lưu
dữ liệu khơng gian vào tập tin dạng .mif, dữ liệu thuộc tính vào tập tin dạng .mid, và cả
hai tập tin này đều thuộc về MapInfo. Kiểu lưu trữ này của MapInfo được xem là kiến
trúc tích hợp của hệ GIS (Đặng Văn Đức, 2001, trang 202). Cịn ArcInfo lưu dữ liệu
khơng gian vào tập tin dạng .dhp, và dùng tập tin dang .dbf vay mượn từ cơ sở dữ liệu
quan hệ thương mại để lưu dữ liệu thuộc tính. Đây được xem là kiến trúc đối ngẫu của
hệ GIS (Đặng Văn Đức, 2001, trang 199). Ngồi ra, một mẫu kiến trúc tích hợp khác
của hệ GIS nữa là một số cơ sở dữ liệu quan hệ thương mại truyền thống nay được mở
Trang 13
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
rộng thêm để cĩ thể hỗ trợ việc lưu trữ và xử lý dữ liệu khơng gian địa lý. Ví dụ cơ sở
dữ liệu Oracle nay cĩ thêm phần Oracle Locator và Oracle Spatial.
Sự đa dạng về mơ hình và cấu trúc dữ liệu dùng trong GIS một mặt cho thấy được sự
sáng tạo của con người nhằm đáp ứng nhu cầu sử dụng và phát triển các ứng dụng GIS,
nhưng mặt khác cũng kéo theo những khĩ khăn nhất định trong việc truyền thơng, trao
đổi cũng như tích hợp dữ liệu GIS.
Để giải quyết vấn đề trao đổi dữ liệu GIS, một cách truyền thống người ta thường xây
dựng thêm các thành phần phần mềm làm nhiệm vụ chuyển đổi giữa các dạng thức dữ
liệu, thường được gọi là các bộ chuyển đổi (converter). Các bộ chuyển đổi này hoặc
được tích hợp trực tiếp vào các phần mềm GIS thương mại và thể hiện ở các chức năng
import/export, hoặc được cung cấp bởi một bên “thứ ba” trung gian nào đĩ.
Ngày này với sự phát triển của mạng máy tính nĩi chung và mạng Internet nĩi riêng,
các nhu cầu thừa kế, trao đổi, tích hợp và khai thác dữ liệu GIS từ nhiều nguồn khác
nhau giữa các tổ chức, cộng đồng và quốc gia trong mơi trường mạng ngày càng gia
tăng và cĩ ý nghĩa. Việc thi hành các tác vụ chuyển đổi dữ liệu theo kiểu truyền thống
khơng được xem là hiệu quả và thuận tiện cho lắm đối với người sử dụng. Người ta cần
tìm ra giải pháp mang tính hệ thống và chuẩn mực hơn nhằm đêm lại sự thuận lợi lâu
dài và bền vững cho những người khai thác GIS.
1.2 Khái Quát Về OpenGIS
1.2.1 Tổ chức OGC
Tổ chức Liên hiệp OpenGIS, gọi tắt là OGC (Open GIS Consortium), là một tổ chức
phi lợi nhuận và mang tính quốc tế, được thành lập vào nằm 1994 nhằm giải quyết các
vấn đề liên quan đến sự trao đổi chia sẽ các dữ liệu khơng gian địa lý và khả năng làm
việc phối hợp giữa các phần mềm GIS. Các hoạt động của OGC tạo ra những ảnh
hưởng cĩ ý nghĩa đến cộng đồng GIS và việc thiết kế các hệ thống GIS trong tương lai.
Trang 14
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
Nhận xét về vấn đề dữ liệu đối với GIS, OGC cho rằng:
“Hiện trên Web và trong các kho lưu trữ độc lập cĩ nhiều dữ liệu khơng gian địa lý,
nhưng chúng quá phức tạp, khơng đồng nhất và khơng tương thích nhau. Người dùng
cần phải cĩ kiến thức chuyên mơn và các phần mềm GIS chuyên biệt để bao phủ hoặc
kết hợp các lớp bản đồ khác nhau của cùng một vùng địa lý. Việc chuyển đổi dữ liệu
thường nặng nề và mất nhiều thời gian, nhưng kết quả lại khơng được như ý. Chỉ cĩ
giao tiếp chung là cách cho phép sự bao phủ và kết hợp các loại thơng tin địa lý phức
tạp khác nhau xảy ra một cách tự động trên Internet, bất chấp những khác biệt nằm
phía dước các hệ thống phần mềm GIS. OGC cung cấp cấu trúc hình thức để đạt được
sự thống nhất về các giao tiếp chung này.” (David Blasby)
Trên cơ sở nhận định này, mục tiêu bao trùm và dài hạn của OGC là:
“The full integration of geospatial data and geoprocessing resources into mainstream
computing and the widespread use of interoperable geoprocessing software and
geodata products throughtout the information infrastructure.” (Open GIS Consortium
Inc., 1999, Topic 0)
Tạm dịch:
“Tích hợp hồn chỉnh các dữ liệu khơng gian địa lý và các cách xử lý thơng tin địa lý
vào một luồng tính tốn chính, và sử dụng phổ biến các sản phẩm dữ liệu địa lý và
phần mềm xử lý thơng tin địa lý trong suốt cơ sở hạ tầng về thơng tin.” (Open GIS
Consortium., 1999, Topic 0)
Theo ESRI (2003), việc tích hợp vào luồng tính tốn chính mang ý nghĩa mở rộng
phạm vi trao đổi ứng dụng GIS ở mức tổ chức lớn hơn, chia sẽ dữ liệu khơng gian địa
lý khơng chỉ giữa các cơng nghệ GIS mà cịn với các ứng dụng khơng phải GIS trên
những nền tảng khác nhau, và khả năng làm việc phối hợp giữa các chuẩn GIS với các
chuẩn IT cơng nghiệp.
Trang 15
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: OpenGis – Các khái niệm
Cơng việc của OGC là xây dựng và cơng bố các đặc tả mang tính mở cho các giao tiếp,
lược đồ và kiến trúc nhằm thúc đẩy khả năng tương thích giữa các kho dữ liệu khơng
gian địa lý, các ứng dụng và dịch vụ GIS khơng đồng nhất.
1.2.2 Định nghĩa OpenGIS
Các đặc tả mở được tạo bởi OGC được gọi là các đặc tả OpenGIS (Open GIS
Specifications). Vậy Open GIS là gì?
OpenGIS được định nghĩa là:
“Open and interoperable geoprocessing” or “The ability to share heterogeneous
geodata and geoprocessing resources transparently in a networked environment.”
(David, 2000)
Tạm dịch:
“Việc xử lý dữ liệu địa lý phải cĩ tính mở và cĩ khả năng làm việc liên thơng” hoặc
“Khả năng chia sẻ một cách trong suốt các dữ liệu địa lý khơng đồng nhất và các tài
nguyên xử lý về mặt địa lý trong mơi trường mạng.” (Dương Anh Đức)
Hai khái niệm “mở” (open) và “khả năng làm việc liên thơng” (interoperability) là hai
khái niệm trung tâmcủa OpenGIS.
Mở được hiểu là nhiều thành phần tham gia soạn thảo các đặc tả, và các kết
quả đặc tả được tự do tham khảo và sử dụng.
•
• Khả năng làm việc liên thơng là khả năng tương thích của các ứng dụng nhằm
khắc phục những trở ngại do sự khơng dồng nhất các mơi trường xử lý cũng
như sự khơng đồng nhất về dữ liệu.
Tĩm lại, cĩ thể nĩi rằng các đặc tả OpenGIS được xây dựng nhằm giúp cho việc truy
cập các dữ liệu khơng gian địa lý và các dịch vụ xử lý dữ liệu trở nên trong suốt trong
mơi trường làm việc mạng.
Trang 16
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Chương 2 :
Hệ Thống Hỗ trợ Phân tích Tài nguyên Địa lý
Chương 2 giới thiệu về phần mềm GRASS (The Geogaphic ResourcesAnalysis
Support System), là một hệ thống hỗ trợ phân tích tài nguyên địa lý. Đề cập một cách
khái quát về khía cạnh sử dụng cũng như trong lãnh vực lập trình .
2.1 Sơ lược về GRASS
Là một hệ thống thơng tin địa lý (GIS – Geographic information system), phát triển
theo chuẩn của OpenGIS, nguyên gốc được thiết kế và phát triển bởi những nhà nghiên
cứu tại Phịng Thí nghiệm Xây dựng của quân đội Mỹ (US Army Construction
Engineering Research Laboratory - USACERL) và ngày nay, nĩ được hỗ trợ bởi nhĩm
phát triển GRASS cĩ tổng hành dinh tại ITC-irst, Trento Italy) và Đại học Baylor,
Waco (Mỹ).
GRASS là một phần mềm mã nguồn mở (GNU – General Public Licence), được phát
hành lần đầu năm 1985. Phát triển trong hơn 20 năm qua, kích thước GRASS vào
khoảng 100 MB và là một bộ thư viện lớn để phục vụ việc xây dựng các ứng dụng
GIS. GRASS được viết bằng ngơn ngữ C (khoảng 1,5 triệu dịng mã lệnh) và cĩ thể
được biên dịch trên các hệ điều hành phát triển trên nền Unix như SUN Solaris,
SunOS, HP, SCO, Linux, DEC Alpha v.v.. và cĩ thể chạy trên Windows thơng qua mơi
trường giả lập Cygwin (chương trình giả lập LINUX/UNIX trên nền Windows)
GRASS cĩ khả năng lưu trữ, phân tích và hiển thị một cách sinh động dữ liệu khơng
gian đã được số hố. Hiện tại, phiên bản GRASS đã ra đến 5.x và là một trong mười
phần mềm mã nguồn mở cĩ qui mơ lớn nhất hiện nay . Đã cĩ nhiều tổ chức, chính phủ,
trường học và cơng ty sử dụng thư viện GRASS để phát triển những ứng dụng chuyên
biệt cho riêng mình.
Trang 17
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Những đối tượng GRASS hướng đến là các nhà qui hoạch, sinh thái học, địa chất học,
địa lý học và những kỹ sư trắc địa vẽ bản đồ, tuy nhiên người sẽ trực tiếp sử dụng
GRASS lại là các lập trình viên. Hầu hết các đối tượng GRASS hướng đến đều cĩ
trình độ tin học hạn chế, họ tự mình khơng thể xây dựng một chương trình tin học phức
tạp liên quan đến GIS để phục vụ cơng việc của bản thân, tuy rằng cơng việc chuyên
mơn rất cần sự hỗ trợ của những phần mềm tin học như vậy. GRASS cung cấp một bộ
thư viện để xây dựng ứng dụng GIS tương đối đầy đủ gọi là GISLIB (khoảng trên 800
hàm), và bản thân GRASS cũng dựa trên bộ thư viện này để phát triển một số chức
năng cơ bản về GIS. Việc xây dựng một hệ GIS thật sự rất phức tạp nếu bắt tay từ đầu,
và vì thế, nhờ sự hỗ trợ của bộ thư viện này lập trình viên sẽ cĩ thể nhanh chĩng xây
dựng được các ứng dụng GIS hỗ trợ cho các đối tượng người dùng trên một cách dễ
dàng và nhanh chĩng.
GRASS được thiết kế và phát triển cho nhiều mức độ sử dụng khác nhau, ở thời điểm
hiện tại cĩ thể phân chia như sau :
• Mức chuyên biệt hố : cho những người dùng mới học cách sử dụng, trình
độ tin học khơng cao. GRASS hiện tại hỗ trợ giao tiếp người dùng thơng
qua giao diện đồ họa được viết bằng script TCL/TK. Cho phép xây dựng
nên các command truy vấn thơng qua menu, dialog. Giao diện này thực chất
là lớp vỏ bọc cho những command chuyên biệt bên dưới.
• Mức command, gõ lệnh trực tiếp : đây là mức thơng dụng nhất và được sử
dụng nhiều nhất. Trên mơi trường LINUX/UNIX việc gõ command sẽ giúp
thao tác nhanh với hệ điều hành rất nhiều so với giao tiếp giao diện đồ họa.
GRASS ở mức giao tiếp này hỗ trợ người dùng gõ command trực tiếp để
truy vấn và sử dụng.
• Mức lập trình : đây là những developer, cĩ trình độ tin học cao. Sử dụng
những bộ thư viện được cung cấp sẵn của GRASS để phát triển nên những
Trang 18
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
ứng dụng cho bản thân. Ràng buộc là các developer phải sử dụng những
hàm đã được hỗ trợ (nếu cĩ) để mở rộng và phát triển, khơng viết lại những
gì đã cĩ để tránh trùng lắp và bug
• Mức xây dựng thư viện : đây là cơng việc của nhĩm phát triển GRASS đang
làm. Họ cĩ trách nhiệm duy trì sự ổn định, phát hiện sửa chữa những lỗi và
đảm bảo một nền tảng thư viện hàm tốt để các ứng dụng được phát triển và
mở rộng trên đĩ.
GRASS hỗ trợ các chức năng chính yếu :
• Phân tích dữ liệu Raster (Raster Analysis)
• Phân tích dữ liệu Vector (Vector Analysis)
• Phân tích dữ liệu Điểm (Point Analysis)
• Xử lý hình ảnh (Image Process)
• Phân tích DTM ( DTM – Analysis)
• Hiển thị thơng tin (Screen Displaying)
• Tạo lập bảng đồ (map creation)
• Hỗ trợ SQL ( PostgreSQL, MySQL ..)
• Các module khác (được các nhĩm khác xây dựng và gắn vào)
2.2 Kiến trúc GRASS
Ở mức độ tổng quan, cĩ thể mơ tả kiến trúc của bộ thư viện GRASS như hình vẽ sau :
Trang 19
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
GRASS GIS LIB
Dữ liệu
RASTER
Dữ liệu
VECTOR
Dữ liệu
POINT
Xử lý
hình ảnh
Phân tích
DTM
Quản lý cơ
sở dữ liệu
Những
module khác
Lớp 0
Lớp 1
Lớp 2
Hình 2 - 1 Mơ hình kiến trúc GRASS
GRASS được viết theo bằng C nên hồn tồn khơng cĩ yếu tố hướng đối tượng trong
kiến trúc. Các chức năng được đĩng lại thành các gĩi. Theo chiều mũi tên, các gĩi
được phân thành kiến trúc lớp như trên, những gĩi thuộc lớp cao sẽ sử dụng các chức
năng do các gĩi ở lớp thấp cung cấp.
Những module khác cĩ thể là các hỗ trợ phụ thêm cho GRASS như giao tiếp ODBC
với hệ quản trị cơ sở dữ liệu Postgres, cung cấp nơi lưu trữ, truy vấn cho cơ sở dữ liệu
khơng gian...
2.3 Định dạng dữ liệu
GRASS lưu trữ dữ liệu theo một tổ chức thư mục được phân cấp được qui ước và mỗi
loại dữ liệu cĩ định dạng lưu trữ xác định. Dữ liệu vector (vector data) được lưu theo
định dạng nhị phân, dữ liệu điểm (site / point data) được lưu theo định dạng ASCII và
dữ liệu ảnh (raster/imagery data) được lưu theo định dạng nhị phân và được nén. Về
phương diện lập trình GRASS được cung cấp thư viện GIS Library dùng để giao tiếp
với cơ sở dữ liệu của GRASS. Thư viện GIS Library cung cấp đủ các hàm khiến cho
lập trình viên cĩ thể khơng cần phải hiểu cấu trúc của CSDL lưu bên dưới. Thư viện
Trang 20
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
GRASS dùng các biến mơi trường (environment variable) để thiết lập các thơng số cho
các hàm thư viện GIS Library truy xuất.
GRASS hỗ trợ 3 định dạng dữ liệu :
Dữ liệu Raster : là kiểu dữ liệu dạng pixel, cĩ thể là các ảnh TIFF, GIF, PPM, ảnh
chụp vệ tinh …
Hỗ trợ import các định dạng :
1. ASCII (X Y Z , Z trong khoảng -2E7 đến 2 E7)
2. TIFF (8 bit)
3. GIF (8 bit)
4. PPM (24 bit)
5. SUN Raster (8 bit)
6. NHAP ( ảnh khơng gian)
7. BIL/BSQ (ảnh vệ tinh)
8. LANDSAT TM, MSS (ảnh vệ tinh)
9. SPOT (ảnh vệ tinh)
Hỗ trợ kết xuất từ Raster ra các định dạng như :
1. ASCII (X Y Z , Z trong khoảng -2E7 đến 2 E7)
2. PPM (24 bit)
3. PPM/3 (24 bit)
4. TGA (24 bit)
5. TIFF (8 bit)
Trang 21
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Dữ liệu Vector : dữ liệu thể hiện hình dạng vật lý bên ngồi của đối tượng như :
dịng sơng, đường xá, hồ nước hoặc cánh đồng … Được định dạng theo kiểu vector.
Hỗ trợ import các định dạng như :
1. ASCII vectorformat
2. ARC/INFO (các file cĩ phần mở rộng .arc, .line, .point và .textlabel )
3. DXF
4. DXF3D
5. DLG
6. IDRISI
7. TIGER
Hỗ trợ kết xuất từ dữ liệu vector ra các định dạng
1. ASCII vectorformat
2. ARC/INFO
3. DXF
4. IDRISI
5. MOSS
Dữ liệu điểm (Point data): trong GRASS được gọi là “sites”. Dữ liệu điểm cĩ thể là
độ cao, lượng mưa ở một toạ độ xác định. Gọi là điểm vì thơng tin thể hiện cho một toạ
độ xác định trên bản đồ
Định dạng hỗ trợ import và kết xuất là : ASCII format
Trang 22
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
2.4 Tổ chức lưu trữ dữ liệu của GRASS
2.4.1 GISDBASE :
Cơ sở dữ liệu trong GRASS sử dụng kiến trúc thư mục kiểu UNIX. Mức cao nhất được
gọi là GISDBASE, người dùng phải cung cấp thơng tin này khi đăng nhập sử dụng
GRASS và thơng tin sẽ được chứa trong biến mơi trường GISDBASE. Truy xuất lại
thơng tin này, ta dùng hàm G_gisdbase
2.4.2 LOCATION :
Thư mục con của GISDBASE là Location, cĩ thể xem Location là những cơ sở dữ liệu
độc lập nhau của các vùng khác nhau và GISDBASE là tập các cơ sở dữ liệu mà
GRASS hiện đang được dùng để quản lý.
Người dùng phải xác lập Location sẽ làm việc khi đăng nhập sử dụng GRASS, thơng
tin này sau đĩ sẽ được chứa trong biến mơi trường LOCATION_NAME, và được trả
về khi sử dụng hàm G_location để truy vấn.
Trong một phiên làm việc, GRASS chỉ cĩ thể làm việc với một Location duy nhất
trong số những Location mà GISDBASE quản lý.
LOCATION .1 LOCATION .2 LOCATION .1 LOCATION .4
GISDBASE
Hình 2 - 2 Minh họa cấu trúc lưu trữ của GISDBASE trên đĩa
Trang 23
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
2.4.3 MAPSETS
Thư mục con của Location là mapset (tập bản đồ). Người dùng phải đăng ký mapset sẽ
sử dụng trong Location cho GRASS khi đăng nhập. Mapset được chọn sẽ đựơc lưu
trong biến mơi trường MAPSET và giá trị biến mơi trường này được truy xuất thơng
qua G_mapset
MAPSET .1 MAPSET .2 …. PERMANENT
LOCATION
Hình 2 - 3 Minh họa cấu trúc lưu trữ của LOCATION trên đĩa
Người dùng chỉ được sửa đổi đối với những mapset được tạo ra bởi chính người dùng.
Đối với những mapset khác, người dùng chỉ cĩ thể xem nhưng khơng được thực hiện
việc sửa đổi (tuy nhiên, nếu chủ nhân của mapset khơng cho xem, bằng cách đặt quyền
sử dụng file thơng qua Unix File System, thì ta cũng khơng xem được các mapset này).
Vậy đường dẫn đến một Mapset là : GISDBASE/LOCATION/MAPSET. Thơng tin
này cĩ thể lấy ra thơng qua hàm G_location_path
Cấu trúc Mapset bao gồm : các file và các thư mục con khác (được gọi là các element,
trong sơ đồ các element được vẽ với dấu /).
Trang 24
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
SEARCH_PATH WIND cats/ cell/
MAPSET
paints/ ….
Hình 2 - 4 Minh họa cấu trúc lưu trữ của MAPSET trên đĩa
Các file trong mapset
• GROUP : nhĩm hình ảnh hiện tại (current imagery group), được dùng bởi
các hàm xử lý hình ảnh (imagery function).
• SEARCH_PATH : đường dẫn tìm kiếm của Mapset (mapset search path),
đựơc tạo và sửa đổi bởi lệnh g.mapsets. Nĩ chứa bên trong danh sách các
mapset cĩ thể được sử dụng để tìm kiếm các file cơ sở dữ liệu. Khi người
dùng gõ vào tên một một file cơ sở dữ liệu mà khơng ghi rõ thuộc mapset
nào, thơng tin đĩ sẽ được tìm kiếm trong file SEARCH_PATH này.
• WIND : khu vực hiện tại (current region), file được tạo và sửa đổi bởi
lệnh g.region, nội dung của WIND được lấy ra bởi lệnh G_get_window.
• Các ELEMENTS : Các element này khơng được tạo khi mapset được tạo
mà các command của GRASS sẽ tạo động khi nĩ tham chiếu đến (ví dụ :
g.ask). Vì các element khơng chắc chắn đã tồn tại, nên ta phải luơn kiểm tra
sự hiện diện của nĩ trước khi thực hiện các thao tác.
Trang 25
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Các elements Chức năng
cell file nhị phân raster (số nguyên – INT)
fcell file nhị phân raster (số thực –
FLOAT/DOUBLE)
cellhd file header cho các raster map
cats Thơng tin được phân loại của các raster
map (category raster map information)
colr Bảng màu của raster map
colr2 Bảng màu thứ hai của raster map
cell_misc Những file linh tinh khác phục vụ cho
raster map
hist File lưu các thơng tin “lịch sử” của
raster map
dig Dữ liệu nhị phân vector (binary vector
data)
dig_ascii Dữ liệu dưới dạng ascii của vector (ascii
vector data)
dig_att các thuộc tính vector được hỗ trợ
(vector attribute support)
Trang 26
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
dig_cats danh mục các label của vector được hỗ
trợ (vector category label support)
dig_plus đồ hình vector được hỗ trợ (vector
topology support)
reg các đăng ký (registration)
arc các file ARC/INFO là những file khơng
được tạo tự động. Dùng cho việc trao
đổi dữ liệu (data-exchange)
bdlg File nhị phân dlg, dùng cho việc trao
đổi dữ liệu
dlg file ascii dlg, dùng cho việc trao đổi dữ
liệu
dxf file ascii DXF, dùng cho việc trao đổi
dữ liệu
camera dùng bởi hàm i.ortho.photo, là file đặc
tả camera
icons những file biểu tượng, được dùng bởi
hàm p.map
group dữ liệu hỗ trợ cho các nhĩm hàm xử lý
hình ảnh
Trang 27
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
site_lists danh sách các site của module liên quan
Windows vùng được định nghĩa trước (predefine
region)
COMBINE dùng trong script r.combine
WEIGHT dùng trong script r.weight
Mỗi location đều cĩ những dữ liệu mapset thuộc loại cố định (PERMANENT
MAPSET). Mapset này chứa các file dữ liệu raster và vector nguyên gốc khơng được
phép sửa đổi và các file đặc biệt khác.
• MYNAME : mơ tả thơng tin về location. Cĩ thể truy xuất thơng qua hàm
G_myname
• DEFAULT_WIND : mơ tả region mặc định cho location, được trả về thơng
qua hàm G_get_default_window. File này được dùng để khởi tạo WIND file
khi GRASS tạo mới một mapset trong Location.
• PROJ_INFO : chứa các thơng tin về project
• PROJ_UNITS : chứa thơng tin về các unit của project
Ràng buộc khi sử dụng cơ sở dữ liệu mapset
Dựa trên ba ràng buộc cơ bản :
1. Người sử dụng chỉ được chọn mapset đĩ để làm việc nếu đĩ là chủ nhân của
mapset đĩ
2. GRASS chỉ tạo và sử đổi file chỉ trên mapset hiện tại được chọn
Trang 28
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
3. Tất cả các file trong các mapset đều cĩ thể được đọc bởi những người sử dụng
khơng phải chủ nhân của nĩ (thơng qua MAPSET SEARCH_PATH để truy
xuất), nếu chủ nhân của các mapset này “chia sẻ” , cho phép các user khác được
xem (thơng qua cơ chế UNIX file permission)
2.4.4 REGION và MASK
GRASS cung cấp hai cơ chế cho phép người dùng lựa chọn khu vực sẽ quan sát và
phân tích dữ liệu của họ, được gọi là lựa chọn theo kiểu “khu vực” (region) và lựa chọn
theo kiểu “mặt nạ” (mask). Người sử dụng định nghĩa một khu vực hình chữ nhật để
tạo ra một “lựa chọn theo kiểu khu vực” (region) và sau đĩ cĩ thể tuỳ ý giới hạn lại bớt
khu vực được chọn đĩ bằng một “mặt nạ” (mask). Dữ liệu về region và mask sẽ được
tự động lưu trữ vào cơ sở dữ liệu GRASS trong MAPSET hiện tại được người sử dụng
chọn lựa.
Các module của GRASS tự động làm việc với những dữ liệu nằm trong region đã được
chọn, nếu cĩ thêm mask thì chỉ những dữ liệu trong region sau khi vượt được qua lớp
“mặt nạ“ sẽ được chọn để xử lý.
REGION
Để chọn khu vực làm việc, người sử dụng thao tác qua lệnh g.region, hoặc d.zoom, và
những thơng tin này sau đĩ được lưu trong file WIND của MAPSET. File này khơng
chỉ xác lập sự giới hạn của khu vực địa lý được chọn trong một khuơn viên hình chữ
nhật mà dựa trên độ phân giải của khu vực đĩ, một cách ngầm định GRASS sẽ phân
khu vực thành những cell hình chữ nhật cĩ cùng kích thước.
File WIND chứa những thơng tin sau :
north: 4660000.00
south: 4570000.00
east : 770000.00
Trang 29
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
west : 710000.00
e-w resol: 50.00
n-s resol: 100.00
rows: 900
cols: 1200
proj: 1
zone: 18
north, south, east, west : tọa độ bốn gĩc định ra khu vực làm việc
rows, cols : số lượng dịng và cột được chia ra trong khu vực làm việc
e-w resol, n-s resol : Độ phân giải theo chiều rộng và chiều dài của khu vực làm việc.
Đây chính là kích thước của mỗi cell được chia nhỏ ra từ khu vực làm việc ban đầu. e-
w resol là chiều dài của cell và n-s resol là chiều rộng của cell.
proj, zone :
proj giúp xác định loại toạ độ được sử dụng :
0 : khơng sử dụng tọa độ (x,y), loại bản đồ image
1 : UTM
2 : State Plane
3 : Kinh độ, vĩ độ (Latitude Longitude)
zone xác định trường của proj, trong ví dụ trên là zone 18
Trang 30
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
MASK
Bên cạnh việc chọn khu vực làm việc (region), người sử dụng cĩ thể dùng lệnh r.mask
để tạo mặt nạ. Mặt nạ này sẽ được lưu thành file MASK trong thư mục MAPSET hiện
tại của người dùng.
Mặt nạ hoạt động như một bộ lọc khi đọc dữ liệu từ file raster.
3 4 4
3 3 4
2 3 3
0 4 4
3 3 0
2 0 0
0 1 1
1 1 0
1 0 0
INPUT MASK OUTPUT
+ =
Hình 2 - 5 Minh họa cơ chế MASK của GRASS
GRASS 5 Khơng hỗ trợ mặt nạ dấu chấm động..
2.4.5 Các biến mơi trường sử dụng trong GRASS
Các module của GRASS được viết độc lập với cơ sở dữ liệu được sử dụng bởi người
dùng, cơ sở dữ liệu đĩ được lưu ở đâu, cũng như vị trí các module làm việc của
GRASS .. Các thơng tin này cũng rất cần cho quá trình xử lý, GRASS sẽ tạo các biến
mơi trường để ghi nhận và lấy ra khi cần thiết.
Khi được khởi động bằng lệnh grass5.0, GRASS lập tức khởi tạo thơng tin cho các
biến mơi trường sau
• GISBASE : là đường dẫn tuyệt đối đến thư mục chứa cài đặt của GRASS.
• GIS_LOCK : biến này ghi nhận đường dẫn đến file gis_lock, là file
GRASS dùng để đảm bảo cơ chế lock (khố) của chương trình.
• GISRC : chỉ đến thư mục lưu trữ file .grassrc5, là file chứa thơng tin về tất
cả các biến mơi trường. Khi được khởi động, GRASS sẽ đọc từ file
.grassrc5 để khởi tạo các biến mơi trường khác được lưu trong đĩ.
Trang 31
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
• GISDBASE: biến này ghi nhận đường dẫn đến thư mục cài đặt cơ sở dữ
liệu của GRASS, thơng tin biến này được đọc lên từ file .grassrc5 và được
GRASS khởi tạo thành biến mơi trường
• LOCATION_NAME: biến này ghi nhận đường dẫn đến thư mục
LOCATION sẽ làm việc, thơng tin biến này được đọc lên từ file .grassrc5
và được GRASS khởi tạo thành biến mơi trường.
• MAPSET : biến này ghi nhận đường dẫn đến thư mục MAPSET sẽ làm
việc, thơng tin biến này được đọc lên từ file .grassrc5 và được GRASS khởi
tạo thành biến mơi trường.
• MONITOR : Monitor đang được chọn để hiện thi hiện tại
• PAINTER : thiết bị hiện thị đang được chọn
• DIGITIZER : digitizer đang được chọn
Các biến mơi trường được lưu trong .grassrc5 được gọi là biến mơi trường GRASS và
được thao tác thơng qua hai hàm thư viện : G_getenv và G_setenv. Hai hàm này đảm
bảo các thơng tin biến mơi trường GRASS được lưu xuống file khi cĩ sự thay đổi.
2.5 Dữ liệu RASTER
2.5.1 Ý niệm sơ lược
Dữ liệu dạng này cĩ thể xem là được kết hợp lại từ một ma trận các ơ. Nĩ cĩ thể là một
bản đồ giấy, một ảnh vệ tinh, hoặc một bản đồ cĩ được do tổng hợp từ nhiều bản đồ
khác.
Bản đồ được phân rã thành ma trận, gồm nhiều ơ, mỗi ơ được gọi là một grid cell. Ơ
grid cell là đơn vị nguyên tố của bản đồ, thể hiện một dữ liệu đã được qui ước và đánh
số thành danh mục.
Ví dụ : Raster map sau
Trang 32
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
2
2
2 2
2
3 3 3
3
3
3
3
33
3
3
3
1
1
1
1
1
1
1
3
3
4
4
4
4 4
4
4
4
4
4
Raster map về sự phân bố đất đai
Với danh mục được qui định là
1 : Thành thị
2 : Đồng cỏ
3 : Rừng
4 : Đầm lầy
Mỗi ơ, bên cạnh dữ liệu thể hiện tọa độ, cịn đi kèm theo dữ liệu thể hiện ý nghĩa của
cell (trong bản đồ ví dụ bên trên là các giá trị 1, 2, 3, 4). Người dùng cĩ thể gán màu
sắc tương ứng cho từng lọai giá trị cell tùy thích (trong ví dụ trên màu đen cho giá trị
1). Từ đĩ sẽ cĩ hai khả năng xảy, hoặc là ta giữ nguyên màu sắc nguyên thủy của ơ từ
bản đồ gốc được đưa vào để hiện thị, hoặc là ta gán giá trị màu thể hiện cho từng giá trị
ơ (điều này cĩ thể làm thay đổi hình ảnh được hiện thị lên của bản đồ so với bản đồ gốc
được nhập vào).
Trang 33
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
2.5.2 Hệ thống tập tin raster
Để phục vụ cho một bản đồ raster map, thơng tin được phân rã và lưu trên nhiều file.
Các file này cĩ tên giống nhau nhưng được chứa trong những thư mục khác nhau trong
thư mục mapset ( tên thư mục sẽ thể hiện nội dung thơng tin phân rã của file đĩ).
Thư mục Thơng tin
cell File nhị phân thể hiện thơng tin của các raster cell ( được thể
hiện bằng số nguyên int)
fcell File nhị phân thể hiện thơng tin của các raster cell ( được thể
hiện bằng số thực float/double)
cellhd các file header của raster
cats Danh mục (category information) của các raster map
colr bảng màu của raster map
colr2 bảng màu thay thế của raster map
hist File lưu vết, lịch sử của raster map
cell_mísc Những thơng tin khác (linh tinh, khơng thật sự quan trọng)
Ví dụ : raster map về đất đai (soils), cĩ thể cĩ các file sau : cell/soils, cellhd/soils,
colr/soils, và cats/soils.
Những thư mục phân rã này được gọi là các “thành phần dữ liệu” (database elements).
2.5.3 Các thao tác quan trọng
Nhận dữ liệu từ một tập tin bên ngồi (import data)
Tùy theo lọai dữ liệu, ta dùng các lệnh sau
Trang 34
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Dữ liệu là file ảnh định dạng ppm
$d.in.ppm
Dữ liệu là file ảnh định dạng ASCII
$d.in.ascii
Kết xuất dữ liệu (export data)
Tùy theo lọai dữ liệu muốn kết xuất, ta dùng các lệnh sau
Dữ liệu kết xuất là file ảnh định dạng ppm
$d.out.ppm
Dữ liệu kết xuất là file ảnh định dạng ppm
$d.out.ascii > textfile.asc
Hiện thị dữ liệu raster
d.rast
2.6 Dữ liệu VECTOR (VECTOR DATA)
2.6.1 Ý niệm sơ lược
Dữ liệu vector được sử dụng đối với những đối tượng cĩ kiến trúc và hình thể, nghĩa là
trong thực tế các đối tượng này cĩ hình dạng và kích thước xác định. GRASS sử dụng
dữ liệu vector để “mã hố” đường biên bao bọc hình dạng của kiến trúc hoặc vật thể
cần thể hiện.
Ví dụ : những đối tượng mà dữ liệu vector cĩ thể dùng để “mã hố” là hệ thống
đường xá, cầu cống, núi non, hồ nước, cánh đồng, sơ đồ qui hoạch thành phố ...
Nĩi chung, những đối tượng dạng này cĩ đặc điểm là hình dạng của chúng cĩ
thể dùng những đường liền nét để thể hiện.
Trang 35
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
2.6.2 Hệ thống tập tin vector
Bản đồ Vector trong GRASS được lưu trữ thành các cung. Cung được tạo thành từ một
loạt toạ độ (x, y). Hai điểm đầu cuối của một cung được gọi là nốt ( node). Hai cặp
(x,y) kề nhau trong cung được gọi là một phân đoạn (segment) của cung.
Những cung cĩ thể biệt lập hoặc kết hợp với nhau tạo nên những hình thể trên
bản đồ : đường thẳng ( sơng ngịi, đường xá ...) , các khu vực ..
Các cung tạo nên những đường liền nét (sơng ngịi, đường xá .. ) được gọi là các
“đường liền” (lines)
Các cung phân ranh nên một vùng, khu vực được gọi là các “đường ranh bao
bọc” (area lines).
Mỗi loại thơng tin hiện thị trên bản đồ vector được gán với một con số nguyên gọi là số
chỉ mục tương tự kỹ thuật dùng cho raster map layer (category number).
Thơng tin của một bản đồ vector trong GRASS được chứa trong nhiều file dữ liệu.
Tương tự như raster map layer, các file này cĩ tên trùng nhau nhưng được chứa trong
các thư mục con khác nhau trong thư mục mapset, mỗi file này biểu thị cho một thơng
tin đã được phân rã.
Thư mục Chức năng
dig file nhị phân, chứa thơng tin cung
dig_ascii file ascii, chứa thơng tin cung
dig_att file phân loại các thuộc tính ( category
attribute file)
dig_cats Tên các danh mục phân loại của vector
Trang 36
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
(vector category labels)
dig_plus File chỉ mục của dữ liệu vector
vector pointer/ index file
reg digitizer registration points : những
điểm đã được đăng ký
Ví dụ: bản đồ vector về đất đai (soils) cĩ thể được lưu trữ theo cấu trúc sau : dig/soils,
dig_plus/soils, dig_ascii/soils, dig_cats/soils và reg/soils ..
Vector file cịn được gọi là file số hố (digit file), vì nĩ được tạo và thao tác bởi thư
viện các hàm digit : v.digit ..
2.6.3 Các thao tác quan trọng
Nhận dữ liệu từ một tập tin bên ngồi (import data)
Dùng lệnh
$v.in.arc
Kết xuất dữ liệu (export data)
Theo định dạng ARC/INFO
Dùng lệnh
$v.out.arc
và trả lời các tham số cho lệnh
Theo định dạng DFX
Dùng lệnh
Trang 37
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
$v.out.dfx
và trả lời các tham số cho lệnh
Hiện thị dữ liệu vector
Dùng lệnh
$d.vect
và trả lời các tham số cho lệnh
Kết xuất sang các định dạng dữ liệu khác của GRASS
Ta dùng lệnh sau để kết xuất sang dữ liệu định dạng vector
$v.to.vect
Ta dùng lệnh sau để kết xuất sang dữ liệu định dạng vector
$v.to.rast
2.7 Dữ liệu điểm (POINT/SITE DATA)
2.7.1 Ý niệm sơ lược
Trong nghiên cứu về mơi trường, cĩ những loại dữ liệu chỉ liên quan đến một vị
trí hay một khu vực rất nhỏ : số liệu về lượng mưa ghi nhận được một trạm quan
sát, số liệu về độ cao đo được tại một điểm ... Khi biểu hiện lên trên bản đồ,
người ta dùng một chấm để thể hiện, kèm theo đĩ là màu sắc và các số liệu.
Những dữ liệu dạng này được gọi là dữ liệu điểm (point data) và GRASS cĩ
thêm một tên gọi khác là dữ liệu nơi chốn (site data). Loại dữ liệu này cĩ thể
hiểu một cách nơm na là dữ liệu “khơng cĩ hình thể”, tức là trong thực tế nĩ
khơng cĩ hình dạng cụ thể và ta qui ước dùng một điểm để biểu diễn nĩ.
Trang 38
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Hình 2 - 6 Minh họa dữ liệu điểm – POINT/SITE
2.7.2 Hệ thống tập tin site
Dữ liệu điểm được lưu trong các tập tin định dạng ASCII, gọi là các tập tin site
hoặc tập tin danh sách (list file). Những tập tin này được xử lý bởi các mơ-đun
xử lý dữ liệu nơi chốn (module sites) trong thư viện GRASS.
Trường name : Dịng này chứa tên của file site, và được in trên tất cả các báo
cáo được tạo bởi module s.menu. Chữ name phải được viết thường. Dịng thơng
tin name này cĩ thể được để trống vì s.menu sẽ tự động thêm tên mặc định là tên
của file site.
Trường desc : Dịng này chứa mơ tả về file site, chữ desc buộc phải viết
thường. Dịng thơng tin này sẽ được in trên tất cả các báo cáo được tạo bởi
module s.menu. Nĩ cĩ thể được bỏ qua, trong trường hợp này, file site sẽ khơng
cĩ mơ tả
Các trường point : Những dịng cịn lại là những record point. Mỗi site được
mơ tả bởi một record point và cấu trúc của một record như sau
east|north[|dim]...|#cat %double [%double] @string [@string]
hoặc mơ tả về ngày giờ như sau :
east|north[|dim]...|time %double [%double]
Trang 39
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Ví dụ :
name | sample
desc | sample site list
728220 | 5182440 | #27 %1.34 %23.13 @"pH 7.1"
727060 | 5181710 | #28 %2.32 %22.21 @"pH 6.8"
725500 | 5184000 | #29 %4.73 %17.34 @"pH 5.5"
719800 | 5187200 | #30 %3.65 %27.79 @"pH 6.2"
2.7.3 Các thao tác quan trọng
Nhận dữ liệu từ một tập tin bên ngồi (import data)
Ta dùng lệnh sau :
$s.in.ascii
File dữ liệu file theo định dạng UNIX ASCII ( nghĩa là ký tự phân cách dịng
sẽ là \r thay vì \r\n như trong DOS ASCII). Nếu sử dụng file DOS ASCII, ta
cĩ thể dùng lệnh của UNIX để convert lại như sau :
$dos2unix file.asc
Kết xuất dữ liệu ra tập tin dạng text ASCII
Ta dùng lệnh
$s.out.ascii > file.asc
Trong lệnh trên, cĩ một chỉ thị rất LINUX/UNIX đĩ là “>” dùng để chuyển
nội dung vào một file.
Hiện thị dữ liệu điểm
Ta dùng lệnh
Trang 40
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
$d.sites
Kết xuất sang các định dạng dữ liệu khác của GRASS
Ta dùng lệnh sau để kết xuất sang dữ liệu định dạng vector
$s.to.vect
Ta dùng lệnh sau để kết xuất sang dữ liệu định dạng raster
$s.to.rast
2.8 Các thư viện được cung cấp bởi GRASS (src/libes)
2.8.1 Danh sách
Tên thư viện Ý nghĩa
D Thư viện hiển thị
bitmap
Thư viện xử ly bitmap cho X Windows
Bitmap
btree Xử lý b-cây
bwidget Thư viện tcl/tk mở rộng
coorcnv Thư viện hỗ trợ chuyển đổi toạ độ và dữ
liệu
datetime Thư viện xử lý ngày giờ
dbmi Giao diện làm việc với các driver của
các hệ quản trị cơ sở dữ liệu
Trang 41
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
dig_atts
Thư viện để đọc và ghi từ các file thuộc
tính của bản đồ (attribute files)
digitizer Thư viện “thơ”, đơn giản nhất cung cấp
xử lý chung cho digitizer
display Thư viện hiện thị của driver CELL
dlg Thư viện xử lý cho các file DLG
dspf Thư viện các file hiện thị G3D
geom Tính tốn hình học (geometrical
calculations), tính tốn cho các phép
tốn số nguyên lớn (long –interger), ..
gis Thư vịên GIS chính yếu của GRASS
gmath
Các chức năng xử lý tính tốn chung
(ma trận, fft ..)
ibtree B Cây cho xử lý số nguyên (phát triển
từ thư viện btree)
icon Thư viện xử lý các biểu tượng (icon).
imagery Thư viện xử lý hình ảnh
image3 Mở rộng của thư viện imagery
libimage Thư viện xử lý hình ảnh , hỗ trợ save
Trang 42
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
ảnh ở dạng SGIs RGB.
linkm
Thư viện hỗ trợ xây dựng, quản lý danh
sách liên kết (linked-list)
lock
Cơ chế khố của GRASS đối với các
monitor dùng hiện thị và các file
ogsf
Được chuyển từ thư viện gsurf, cần cho
NVIZ
proj Thư viện quản lý project
raster Thư viện hỗ trợ xử lý dữ liệu raster của
GRASS
rowio row in/out library
segment Thư vịên segment
vask Thư viện quản lý curses
vect32 Thư viện làm việc với dữ liệu vector
vect32_64
Thư viện làm việc với dữ liệu vector
32/64 bit của GRASS, được phát triển
trên nền vect32
2.8.2 Giới thiệu sơ bộ hàm và thư viện
Thư viện GIS ( thư viện trung tâm của GRASS)
Trang 43
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
GIS Library là thư viện chính yếu và quan trọng nhất của hệ thống GRASS. Các
chương trình sử dụng GRASS để phát triển buộc phải sử dụng thư viện này để giao tiếp
với các file CSDL.
Các hàm được cung cấp trong thư viện này theo nhĩm, khơng theo thứ tự alphabet. Các
hàm này cĩ tiền tố bắt đầu là G_ (chữ G viết tắt cho Global)
Để sử dụng thư viện này trong lập trình, ta phải
#include
Khởi tạo: ta bắt buộc phải thực hiện thao tác khởi tạo trước khi cĩ thể sử dụng bất
cứ hàm nào của thư viện GIS, bằng cách gọi hàm
int G_gisinit (char *program_name)
Ví dụ :
int main (int argc, char **argv)
{
G_gisinit(argv[0]);
}
Cơ chế báo lỗi của thư viện
Hàm Chức năng
int
G_fatal_error (char *message, ...)
In thơng điệp báo lỗi lên màn hình và
thĩat.
Nếu cĩ file GIS_ERROR_LOG trong
Trang 44
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
GISBASE, lỗi sẽ được ghi nhận lại
trong file
int
G_warning (char *message, ...)
In thơng điệp lỗi lên màn hình và tiếp
tục
Nếu cĩ file GIS_ERROR_LOG trong
GISBASE, lỗi sẽ được ghi nhận lại
trong file
void
G_set_error_routine (int (*handler)(
))
Thay đổi cơ chế xử lý lỗi của thư viện
(nếu khơng muốn xử lý lỗi thơng qua
hai hàm trên)
Người lập trình cung cấp một cơ chế xử
lý lỗi thơng qua một hàm cĩ prototype :
int handler (char *message, int fatal)
fatal cĩ giá 1 (error) và 0 (Warning)
message là message lỗi.
Sau đĩ truyền cho hàm như sau :
G_set_error_routine (handler);
int
G_unset_error_routine (void)
Reset lại cơ chế xử lý lỗi cũ của thư
viện ( sử dụng hai hàm G_fatal_error
và G_warning)
Trang 45
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_sleep_on_error (int flag)
flag = 1: in ra thơng điệp lỗi và sleep
int
G_suppress_warnings (int flag)
- Dùng để “triệt hạ” hàm G_Warning
nếu muốn. (ta sử dụng lại code chương
trình đã được viết trước đĩ và khơng
muốn hiện thị các message lỗi)
flag = 0:G_Warning sẽ khơng cịn in ra
message được nữa
flag = 1 :G_Warning sẽ in ra message
được nữa
- Hàm này khơng triệt được
G_fatal_error
Truy xuất biến mơi trường và thơng tin liên quan đến cơ sở dữ liệu của GRASS
Hàm Chức năng
char *
G_location (void)
Trả về đường dẫn đến location hiện tại của
database đang làm việc.
Trang 46
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
char *
G_location_path (void)
char *
G_mapset (void)
Trả ra đường dẫn đến mapset đang làm việc
trong location hiện tại.
char *
G_myname (void)
Trả ra dịng tiêu đề của location đang làm việc (
nĩ đọc từ file MYNAME của MAPSET
PERMANENT)
char *
G_gisbase (void)
Trả ra thư mục cài đặt GRASS.
Thư mục cài đặt GRASS sẽ cĩ các thư mục con
sau
bin : Chứa các command cĩ thể gọi trực tiếp
bởi các user
etc : Module và file dữ liệu được sử dụng bởi
các GRASS command
txt : File hướng dẫn
menu : Những file được sử dụng bởi để tạo
menu trong grass3
Ví dụ : để gọi lệnh sroff trong thư mục etc, ta
làm như sau
char command[200];
sprintf (command, "%s/etc/sroff", G_gisbase( )
Trang 47
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
);
system (command);
char *
G_gisdbase (void)
Trả ra thư mục cài đặt các cơ sở dữ liệu của
GRASS. (GRASS cĩ thể cĩ nhiều cơ sở dữ liệu
nhưng chúng phải được cài đặt nằm trong thư
mục chung này)
Hàm truy xuất biến mơi trường GISDBASE
int
G_getenv (char *name)
int
G_ _getenv (char *name)
truy xuất giá trị biến mơi trường của GRASS (
biến mơi trường GRASS là những biến mơi
trường được quan trọng đối với thư viện và nĩ
được lưu trong file .grassrc5 )
Nếu khơng truyền name là tên biến mơi trường:
+ G_getenv : sẽ báo lỗi và gọi exit để thốt
+ G__getenv : chỉ báo lỗi nhưng khơng thốt
int
G_setenv (char *name, char
*value)
int
G_ _setenv (char *name,
char *value)
Gán giá trị cho biến mơi trường của GRASS.
Thơng tin này sẽ lập tức được ghi nhận vào file
.grassrc5, để lần sau khi chạy GRASS nĩ sẽ
được load lên lại.
Nếu giá trị value là NULL,việc gán biến mơi
trường sẽ khơng được thực hiện.
Trang 48
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Truy vấn cơ sở dữ liệu GRASS
Hàm Chức năng
char *
G_ask_old (char *prompt, char
*name, char *element, char *label)
Người sử dụng được yêu cầu nhập tên
của một file cơ sở dữ liệu đã cĩ.
char name[50];
char *mapset;
mapset = G_ask_old ("", name,
"paint/labels", "labels");
if (mapset = = NULL)
exit(0); /* user canceled the request */
Kết quả hiện ra:
Enter the name of an existing labels file
Enter 'list' for a list of existing labels
files
Hit RETURN to cancel request 4
>
char *
Người sử dụng được yêu cầu nhập tên
của một file cơ sở dữ liệu chưa cĩ trước
Trang 49
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
G_ask_new (char *prompt, char
*name, char *element, char *label)
đĩ trong mapset. Tên này được dùng để
tạo mới file.
char *
G_ask_any (char *prompt, char
*name, char *element, char *label,
int warn)
Trả ra tên file hợp lệ.
Người sử dụng nhập vào một tên file,
Warn = 1 : nếu file đĩ đã tồn tại, người
sử dụng sẽ được hỏi cĩ muốn ghi đè lên
khơng ?
Warn = 0 : file đĩ được chấp nhận và
khơng cĩ thơng điệp hỏi lại dù rằng
trước đĩ cĩ một file đã mang tên đĩ
trong mapset.
char *
G_fully_qualified_name (char *name,
char *mapset)
Trả ra đường dẫn đến file cĩ tên là
“name” trong mapset.
Tìm file dữ liệu trong CSDL
Trang 50
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Hàm Chức năng
char *
G_find_file (char *element, char
*name, char *mapset)
Tìm một file dữ liệu của cơ sở dữ liệu
char name[50];
char *mapset;
if ((mapset =
G_find_file("paint/labels",name,""))
== NULL)
/* not found */
Kiểm tra coi file đĩ cĩ tồn tại trong mapset
hiện tại hay khơng, ta làm như sau :
char name[50];
if
(G_find_file("paint/labels",name,G_mapset(
))
== NULL)
/* not found */
int
G_legal__lename (char *name)
Kiểm tra tên file dữ liệu cĩ hợp lệ khơng.
1 : hợp lệ
-1 : khơng hợp lệ
int Mở một file dữ liệu để đọc.
Trang 51
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
G_open_old (char *element, char
*name, char *mapset)
File đữ liệu cĩ tên là “name”, nằm trong
“mapset” của Location hiện tại và thuộc
thành phần dữ liệu “element” (thư mục con
element của mapset) .
Hàm dùng open() để cài đặt mở file, trả ra –
1 nếu khơng cĩ file, ngược lại trả ra id của
file được mở.
FILE *
G_fopen_old (char *element, char
*name, char *mapset)
Mở một file dữ liệu để đọc.
Các tham số cĩ nội dung giống hàm
G_open_old
Hàm này fopen() với tham số “r” để cài đặt,
trả ra NULL nếu khơng cĩ file, ngược lại trả
ra con trỏ FILE đến file đã được mở.
int
G_open_update (char *element,
char *name)
Mở file cĩ tên name trong “element” của
mapset hiện tại theo mode cho phép đọc và
ghi.
Hàm dùng open() để cài đặt mở file, trả ra –
1 nếu khơng cĩ file, ngược lại trả ra id của
file được mở.
Trang 52
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
FILE *
G_fopen_append (char *element,
char *name)
Mở file cĩ tên name trong “element” của
mapset hiện tại theo mode append.
Hàm này fopen() với tham số “r” để cài đặt,
trả ra NULL nếu khơng cĩ file, ngược lại trả
ra con trỏ FILE đến file đã được mở.
int
G_open_new (char *element, char
*name)
Tạo mới và mở file dữ liệu “name” theo
mode write only, trong thư mục “element”
của mapset hiện tại.
Dùng hàm open() để cài đặt. Trả ra –1 nếu
thất bại
FILE *
G_fopen_new (char *element, char
*name)
Tạo mới và mở file dữ liệu “name” theo
mode write only, trong thư mục “element”
của mapset hiện tại
Dùng hàm fpen() để cài đặt. Trả ra NULL
nếu thất bại
int
G_rename (char *element, char
*old, char *new)
Đổi tên một file dữ liệu trong thư mục
element của mapset.
Kết quả trả về
1 nếu thành cơng
Trang 53
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
0 nếu file old khơng tồn tại
-1 nếu thất bại
int
G_remove (char *element, char
*name)
Xố file trong thư mục element của mapset
hiện tại.
Kết quả trả về
1 nếu thành cơng
0 nếu file khơng tồn tại
-1 nếu thất bại
Cấp phát bộ nhớ
int
G_free(void *buf)
Giải phĩng bộ nhớ được cấp phát bằng hàm
thư viện của GRASS
void *
G_realloc (void *ptr, int size)
Thay đổi kích thước vùng nhớ đã được cấp
phát trước đĩ bằng hàm thư viện của
GRASS
ptr trỏ đến vùng nhớ đã được cấp trước đĩ
size kích thước mới (tính theo bytes)
Kết quả trả về NULL nếu thất bại, ngược lại
Trang 54
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
là con trỏ đến vùng nhớ đã được cấp phát
void *
G_calloc (int n, int size)
Cấp phát một vùng nhớ cĩ kích thước
n*size bytes, khởi tạo vùng nhớ với giá trị
0.
Kết quả trả về NULL nếu thất bại, ngược lại
là con trỏ đến vùng nhớ đã được cấp phát
double *
G_alloc_vector(int n)
Cấp phát vùng nhớ cho một mảng số double
cĩ n phần tử, khởi tạo zero cho tất cả phần
tử.
foat *
G_alloc_fvector(int n)
Cấp phát vùng nhớ cho một mảng số float
cĩ n phần tử, khởi tạo zero cho tất cả phần
tử.
double **
G_alloc_matrix(int rows, int cols)
Cấp phát vùng nhớ cho một ma trận double
cĩ rows dịng và cols cột, khởi tạo zero cho
tất cả phần tử.
float **
G_alloc_fmatrix(int rows, int cols)
Cấp phát vùng nhớ cho một ma trận float cĩ
rows dịng và cols cột, khởi tạo zero cho tất
cả phần tử.
int
G_free_fmatrix(foat **m)
Giải phĩng vùng nhớ cho ma trận float đã
cấp
int
G_free_matrix(double **m)
Giải phĩng vùng nhớ cho ma trận double đã
cấp
Trang 55
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_free_vector(double *v)
Giải phĩng vùng nhớ cho mảng double đã
cấp
REGION
Khái niệm về vùng (region) đã được trình bày trong phần trước, cĩ thể xem nĩ là một
ma trận hai chiều với kích thước xác định và được phân thành nhiều cell (ơ) nhỏ đều
nhau.
Về logic, cĩ hai loại vùng (region) khác nhau trong GRASS : loại thứ nhất là vùng
(region) được xác lập cho CSDL, do người sử dụng thiết lập cho mapset hiện tại. Loại
thứ hai là vùng (region) xử lý được thiết lập cho module của chương trình, nĩ sẽ điều
khiển quá trình ghi và đọc dữ liệu vào file raster và file site. Những bảng đồ kiểu
vector (vector map) khơng cĩ loại region xử lý được thiết lập cho module.
Thơng tin về một region được lưu trong cấu trúc Cell_header, định nghĩa trong file
“gis.h”
Vùng (region) được xác lập cho CSDL
Hàm Chức năng
int
G_get_window (struct Cell_head
*region)
Đọc region được lưu trong file WIND
của MAPSET hiện tại vào trong struct
region.
int
G_put_window (struct Cell_head
Ghi thơng tin của vùng (region) chứa
trong cấu trúc region truyền cho hàm
Trang 56
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
*region) vào file WIND của MAPSET hiện tại
int
G_get_default_window (struct
Cell_head *region)
Lấy thơng tin mặc định về region của
LOCATION hiện tại được chọn.
Vùng (region) được xác lập ở mức module
Được sử dụng khi cần đọc và ghi dữ liệu raster cũng như site.
Khi khởi tạo, vùng được xác lập ở mức module và vùng được xác lập cho CSDL là
cùng một giá trị, tuy nhiên lập trình viên cĩ thể thay đổi tuỳ biến, thơng qua
Hàm Chức năng
int
G_set_window (struct Cell_head
*region)
Thiết lập region ở mức module xử lý.
Việc thiết lập này khơng làm thay đổi
nội dung của file WIND lưu cấu hình
của region ở mức dữ liệu. Vùng xử lý
được thiết lập này chỉ tồn tại trong quá
trình xử lý của module.
int
G_get_set_window (struct Cell_head
*region)
Lấy ra giá trị đã được thiết lập thơng
qua hàm G_set_window bên trên
Trang 57
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Cơ sở dữ liệu lưu theo kinh-vĩ độ
GRASS hỗ trợ lưu toạ độ theo kinh độ và vĩ độ. Tọa độ x là kinh độ và y là vĩ độ.
Vấn đề phát sinh là việc tính diện tích, chiều dài và xác lập một khu vực theo phép
Euclide cho những loại dữ liệu của GRASS trước đĩ sẽ khơng cịn đúng cho loại dữ
liệu này nữa.
Trái đất thì cong và bản đồ hiện thị thì lại cĩ dạng phằng và khơng cĩ thơng tin nào để
biểu thị cho độ cong của trái đất. Hai điểm dù thuộc cùng một kinh độ hoặc vĩ độ
nhưng chưa chắc khi vẽ lên bản đồ thì chúng thuộc một đường thẳng vì lý do là độ
cong của trái đất.
GRASS cung cấp thư viện GISLIB để giải quyết các vấn đề trên
Kinh độ và vĩ độ được tính theo “độ”. Vĩ độ Bắc nằm từ 0 đến 90 độ, vĩ độ Nam nằm
từ 0 đến – 90 độ. Kinh độ thì khơng cĩ giới hạn về độ đo vì kinh độ xuất phát từ hai
cực của trái đất.
Toạ độ được thể hiện theo định dạng ASCII và theo những mẫu sau :
Vĩ độ : dd:mm:ssN hoặc dd:mm:ssS
Kinh độ : dd:mm:ssE hoặc dd:mm:ssW
Độ phân giải của lưới hiện thị (grid resolution) : dd.mm.ss
Ví dụ :
80:30:24N là toạ độ của vĩ độ, cĩ nghĩa là 80 độ (degree), 30 phút (minutes) và
24 giây (second) Bắc
120:15W là tọa độ của kinh độ, cĩ nghĩa là 120 độ (degree), 15 phút (minute)
Tây của đường kinh tuyến chính.
Trang 58
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Đĩ là phương pháp mà GRASS dùng để mã hố toạ độ theo kinh độ và vĩ độ. GRASS
cung cấp trong thư viện những hàm để thực hiện sự chuyển đổi giữa toạ độ thực về toạ
độ mã hố này
Hàm Chức năng
int
G_format_easting (double east, char
*buf, int projection)
int
G_format_northing (double north,
char *buf, int projection)
int
G_format_resolution (double
resolution, char *buf, int projection)
Chuyển toạ độ được thể hiện trong biến
east về dạng ASCII và lưu trong buf.
Tọa độ biến east là toạ độ Đơng.
Chuyển toạ độ được thể hiện trong biến
north về dạng ASCII và lưu trong buf.
Tọa độ biến east là toạ độ Bắc
Chuyển độ phân giải về dạng mã hố
ASCII và lưu kết quả trong buf
int
G_scan_easting (char *buf, double
*easting, int projection)
int
G_scan_northing (char *buf, double
*northing, int projection)
Chuyển giá trị mã hố ASCII về toạ độ
ban đầu, hàm dùng chuyển cho tọa độ
Đơng
Chuyển giá trị mã hố ASCII về toạ độ
ban đầu, hàm dùng chuyển cho tọa độ
Bắc
Trang 59
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_scan_resolution (char *buf, double
*resolution, int projection)
Chuyển dạng mã hố ASCII của độ
phân giải về giá trị ban đầu
Ví dụ minh hoạ
double north ;
char buf[50] ;
G_scan_northing(buf, north, G_projection( )); /* ASCII to double*/
G_format_northing(north, buf, G_projection( )); /* double to ASCII */
G_format_northing(north, buf, -1); /* double to ASCII */
Tính tốn diện tích bản đồ kiểu RASTER
Những phép tốn hỗ trợ thực hiện việc tính tốn trên bản đồ kiểu raster
Dù lưới được xây dựng từ kinh độ và vĩ độ sẽ khơng chính xác khi thực hiện việc tính
tốn đối với diện tích (do trái đất cong, một điểm thuộc cùng kinh độ chưa chắc là
thẳng hàng, điều tương tự đối với vĩ độ), tuy nhiên với cùng một vĩ độ, các ơ của lưới
được tạo ra bởi vĩ độ đĩ và các kinh độ là bằng nhau về kích thước.
Trang 60
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Dựa vào điều này GRASS cung cấp các hàm thư viện sau
Hàm Chức năng
double
G_area_of_cell_at_row (int row)
Trả ra diện tích (area) được tính bằng
m2 của một ơ lưới tại một dịng. Giá trị
này dùng để đo diện tích cho những ơ
lưới thuộc cùng một dịng.
int
G_begin_cell_area_calculations
(void)
Phải được gọi trước khi gọi hàm
G_area_of_cell_at_row
int
G_begin_zone_area_on_ellipsoid
(double a, double e2, double s)
Khởi tạo cho việc tính diện tích một
ellipse cĩ trục nhỏ là a, tâm sai e2 và s
là gia số cho biết phần ellipse sẽ được
tính diện tích ( s =1.0 tính tồn bộ, 0.5
cho một nữa ellipse..)
double
G_area_for_zone_on_ellipsoid
(double north, double south)
Diện tích nằm giữa khu vực được xác
định bởi vĩ độ Bắc và Nam, và lấy theo
gia số s được truyền cho hàm
G_begin_zone_area_on_ellipsoid bên
trên
Trang 61
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_begin_zone_area_on_sphere
(double r, double s)
Khởi tạo việc tính diện tích cho một mặt
cầu, với r là bán kính và s là gia số cho
phép tính một phần của mặt cầu đĩ (ý
nghĩa s tương tự hàm
G_begin_zone_area_on_ellipsoid )
double
G_area_for_zone_on_sphere (double
north, double south)
Tính diện tích mặt cầu của khu vực
nằm giữa vĩ tuyến Bắc và Nam.
Tính diện tích đa giác
Cĩ một vấn đề mắc phải đối với hệ toạ độ theo kinh độ và vĩ độ mà các hệ toạ độ
phẳng khơng gặp đĩ là : đối với loai bản đồ vector chẳng hạn, dữ liệu đa giác được
lưu là những toạ độ (x,y), đường thẳng tạo thành đa giác sau đĩ được phát sinh bằng
cách nối liền các tọa độ này. Đối với tọa độ theo kinh độ và vĩ độ, do hình dạng trái đất
trịn nên ta khơng thể sử dụng đường thẳng để nối liền các toạ độ và tạo ra đa giác. Bề
mặt đa giác cần tính cĩ thể xem là nằm trên bề mặt của một ellipse xác định.
GRASS cung cấp những hàm để tính diện tích cho những đa giác cả trong trường hợp
dùng toạ độ phẳng và toạ độ theo kinh độ - vĩ độ.
Hàm Chức năng
int
G_begin_polygon_area_calculations
Khởi động việc tính diện tích cho một
đa giác
double Tính diện tích cho một đa giác.
Trang 62
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
G_area_of_polygon (double *x,
double *y, int n)
Kết quả trả về cĩ đơn vị tính là mét
vuơng.
Truyền vào mảng các toạ độ x, mảng
các toạ độ y và n là số cặp điểm (x,y)
đựơc truyền vào.
int
G_begin_ellipsoid_polygon_area
(double a, double e2)
Khởi động việc tính diện tích cho một
ellipse cĩ trục chính là a và tâm sai là
e2
double
G_ellipsoid_polygon_area (double
*lon, double *lat, int n)
Tính diện tích của đa giác được định n
cặp điểm theo toạ độ kinh độ vĩ độ,
được truyền vào riêng biệt theo hai
mảng lat (vĩ độ) và long (kinh độ)
Đơn vị của kết quả tính là met vuơng
Tính khoảng cách
Việc tính khoảng cách giữa hai điểm cũng gặp khĩ khăn như đối với tính diện tích bên
trên khi dùng toạ độ theo kinh độ và vĩ độ. GRASS cung cấp hàm để làm việc cho cả
toạ độ phẳng và toạ độ theo kinh độ và vĩ độ
Hàm Chức năng
int
G_begin_distance_calculations (void)
Khởi động việc tính tốn khoảng cách
Trang 63
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
double
G_distance (double x1, y1, x2, y2)
Trả ra khoảng cách giữa hai điểm cĩ toạ
độ là x1,y1 và x2,y2. Đơn vị tính là mét
int
G_begin_geodesic_distance (double a,
double e2)
Bắt đầu việc tính tốn dựa trên một
ellipse cĩ trục lớn a và tâm sai e2. Chỉ
dùng tính đối với toạ độ theo kinh độ và
vĩ độ.
double
G_geodesic_distance (double lon1,
double lat1, double lon2, double lat2)
Đo khoảng cách giữa hai toạ độ được
tính theo kinh độ và vĩ độ. Đơn vị tính
của khoảng cách là mét.
Xử lý đối với file dữ liệu RASTER
File dữ liệu RASTER là trái tim và linh hồn của GRASS (heart and soul). Do đĩ mà
GRASS cung cấp cả một thư viện hàm để xử lý cho raster file, bao gồm :
• Xác định file dữ liệu raster sẽ được xử lý (do người dùng xác lập đường dẫn
hay được module tự xác định)
• Định vị file raster trong cơ sở dữ liệu.
• Mở file raster
• Cấp phát buffer để giao tiếp IO
• Các thao tác mở , ghi , đọc và đĩng
• Hỗ trợ tạo lập file raster
File raster là file nhị phân chứa cấu trúc CELL (được định nghĩ trong file header gis.h)
Trang 64
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Hàm Ý nghĩa
char *
G_ask_cell_old (char *prompt, char
*name)
Yêu cầu người dùng nhập vào tên của
file raster đã tồn tại trong bất kỳ mapset
nào trong cơ sở dữ liệu
char *
G_ask_cell_in_mapset (char
*prompt, char *name)
Yêu cầu người dùng nhập vào tên của
file raster đã tồn tại trong mapset hiện
tại trong cơ sở dữ liệu
char *
G_ask_cell_new (char *prompt, char
*name)
Yêu cầu người dùng nhập vào tên của
file raster chưa cĩ trong mapset hiện tại
trong cơ sở dữ liệu
char *
G_find_cell (char *name, char
*mapset)
Tìm file raster cĩ tên là “name” trong
một “mapset”. Biến mapset là “” sẽ cĩ ý
nghĩa là tìm kiếm trong tồn bộ các
mapset hiện hữu trong CSDL. Nếu tìm
thấy trả ra đường dẫn đến mapset đĩ,
khơng thì trả ra NULL.
char name[50];
char *mapset;
if ((mapset = G_find_cell(name,"")) =
= NULL)
/* not found */
Trang 65
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
FILE *
G_open_cell_new (char *name)
Tạo lập và mở theo mode write một file
raster mới.
CELL *
G_allocate_cell_buf (void)
Cấp phát bộ nhớ cho một cấu trúc
CELL. Cấu trúc này là cấu trúc dùng để
ghi/đọc vào/từ file raster.
int
G_zero_cell_buf (CELL *buf)
Gán giá trị 0 cho tất cả các trường trong
CELL
int
G_get_map_row (int fd, CELL *cell,
int row)
Đọc một row từ file raster
int
G_get_map_row_nomask (int fd,
CELL *cell, int row)
Đọc một row từ file raster và khơng sử
dụng “mặt nạ”.
int
G_put_map_row (int fd, CELL *buf)
Ghi vào file raster
int fd, row, nrows, ncols;
CELL *buf;
fd =G_open_cell_new(name);
if (fd < 0) ERROR}
buf = G_allocate_cell_buf();
Trang 66
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
ncols =G_window_cols();
nrows = G_window_rows();
for (row = 0; row < nrows; row++)
{
/* prepare data for this row into buf */
/* write the data for the row */
G_put_map_row(fd, buf);
}
int
G_close_cell (int fd)
Đĩng một file raster
int
G_unopen_cell (int fd)
Nếu cĩ lỗi phát sinh trong quá trình xử
lý, ta dùng hàm này để đĩng file raster
lại.
Các xử lý khác dành cho RASTER
Như đã đề cập bên trên, một bản đồ cĩ nhiều file dữ liệu khác nhau, cĩ cùng tên với
bản đồ phối hợp với nhau để thể hiện, dữ liệu raster cũng vậy. Những file này được gọi
là những “file hỗ trợ”, supported files, đối với RASTER những file hỗ trợ bao gồm :
• File header
• File danh mục (category)
• File lưu bảng màu
Trang 67
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
• File lưu vết (history)
• File lưu phạm vi (range file)
• File histogram
Mỗi loại file hỗ trợ trên cĩ cấu trúc khác nhau và được thao tác bằng những nhĩm hàm
khác nhau thiết kế chuyên biệt cho chúng
Ví dụ : file header cĩ hàm
int G_get_cellhd (char *name, char *mapset, struct Cell_Head *cellhd)
dùng để đọc một cấu trúc header
Một số hàm dùng thao tác với các file hỗ trợ :
HÀM Ý NGHĨA
int
G_get_cellhd (char *name, char
*mapset, struct Cell_Head *cellhd)
Đọc thơng tin header của file raster cĩ
tên là name trong mapset vào cấu trúc
Cell_Head
char *
G_put_cellhd (char *name, struct
Cell_Head *cellhd)
Viết header của bản đồ cĩ tên là name
trong mapset hiện tại vào file header.
int
G_read_cats (char *name, char
*mapset, struct Categories *cats)
Đọc thơng tin của file danh mục
(category files) name trong mapset vào
trong cấu trúc cats.
Trang 68
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_write_cats (char *name, struct
Categories *cats)
Viết thơng tin trong cấu trúc cats vào
cho file raster cĩ tên name.
char *
G_get_cat (CELL n, struct
Categories *cats)
Tìm trong cấu trúc cats, tại danh mục n
và trả ra con trỏ đến một chuỗi qui ứơc
của danh mục đĩ.
int
G_init_cats (CELL n, char *title,
struct Categories *cats)
Để tạo mới một danh mục, trước hết nĩ
phải được khởi tạo bằng hàm này.
int
G_set_cat (CELL n, char *label,
struct Categories *cats)
Đặt chuỗi qui ước (label) cho danh mục
n trong cấu trúc cats (cấu trúc quản lý
các danh mục)
int
G_free_cats (struct Categories *cats)
Giải phĩng vùng nhớ được cấp phát cho
cấu trúc cats.
int
G_read_colors (char *name, char
*mapset, struct Colors *colors)
Đọc bảng màu của file raster cĩ tên
name của mapset vào biến cấu trúc
dùng quản lý bảng màu colors.
int
G_write_colors (char *name, char
*mapset, struct Colors *colors)
Ghi biến cấu trúc colors dùng quản lý
bản màu cho file raster name của
mapset
Trang 69
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_lookup_colors (CELL *raster,
unsigned char *red, unsigned char
*green, unsigned char *blue, set, int
n, struct Colors *colors)
Lấy ra mảng màu cho mảng các giá trị
raster. Hàm nhận vào một mảng (n phần
tử) các giá trị raster (CELL *raster) và
trả ra mảng các màu ( 3 mảng) tương
ứng cho các giá trị này.
int
G_get_color (CELL cat, int *red, int
*green, int *blue, struct Colors
*colors)
Tìm trong cấu trúc quản lý màu colors
của file raster và lấy ra 3 thành phần
màu RGB : red, green, và blue tương
ứng cho một giá trị CELL
int
G_init_colors (struct Colors *colors)
Khởi tạo cho cấu trúc colors.
int
G_free_colors (struct Colors *colors)
Giải phĩng bộ nhớ được cấp phát cho
cấu trúc colors.
int
G_read_history (char *name, char
*mapset, struct History *history)
Đọc thơng tin lưu vết (history info) của
một file raster trong mapset vào cấu trúc
quản lý lưu vết history.
int
G_write_history (char *name, struct
History *history)
Viết thơng tin lưu vết (history info) của
một file raster trong mapset vào cấu trúc
quản lý lưu vết history.
Trang 70
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_read_range (char *name, char
*mapset, struct Range *range)
Đọc thơng tin về phạm vi của một file
raster trong mapset và lưu vào cấu trúc
range.
int
G_write_range (char *name, struct
Range *range)
Ghi thơng tin về phạm vi của một file
raster trong mapset và lưu vào cấu trúc
range.
int
G_init_range (struct Range *range)
Khởi tạo cho một cấu trúc range
int
G_init_cell_stats (struct Cell_stats
*s)
Khởi tạo cho cấu trúc trạng thái của một
cell trong bản đồ raster Cell_stats
int
G_free_cell_stats (struct Cell_stats
*s)
Giải phĩng vùng nhớ được cấp cho
Cell_stats
int
G_update_cell_stats (CELL *data,
int n, struct Cell_stats *s)
Cập nhật mảng data (cĩ n giá trị) vào
cấu trúc quản lý Cell_stats.
Xử lý cho file Vector
Trang 71
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Thư viện GIS chứa một vài phương thức phục vụ cho việc xử lý file vector. Những
hàm này cung cấp các chức năng cho phép người sử dụng quản lý, xác định file vector
trong cơ sở dữ liệu, và một số chức năng khác..
HÀM Ý NGHĨA
int
G_read_vector_cats (char *name,
name *mapset, struct Categories
*cats)
Đọc thơng tin danh mục của file vector
tên là name trong mapset vào cấu trúc
quản lý danh mục cats
int
G_write_vector_cats (char *name,
struct Categories *cats)
Ghi thơng tin danh mục của file vector
tên là name trong mapset vào cấu trúc
quản lý danh mục cats
FILE *
G_fopen_vector_new (char *name)
Tạo mới một file vector trong mapset
hiện tại
FILE *
G_fopen_vector_old (char *name,
char *mapset)
Mở một file vector đã cĩ trước đĩ trong
mapset hiện tại.
int
G_find_vector (char *name, char
*mapset)
Tìm một file vector cĩ tên là name
trong mapset được chỉ định.
char name[50];
char *mapset;
Trang 72
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
if ((mapset = G_find_vector(name,ỵ ỵ))
= = NULL)
/* not found */
Xử lý cho file SITES
Các file site chứa các record mơ tả thơng tin liên quan đến “điểm”.
Cĩ ba loại record : record ghi chú (comment record), header record, và record dữ liệu
(data record). Những record được ghi trong những file sử dụng bảng mã ASCII và
phân cách nhau bằng ký tự newline của bẳng mã ASCII (0x0A, tương đương ký tự
‘\n’).
Các record được chia làm hai phần, phần 1 chứa thơng tin location (2, hoặc 3 field) và
phần 2 chứa các thơng tin thuộc tin của vùng location này. Các field cĩ chiều dài
khơng cố định nên do đĩ kích thước của các record cĩ thể khác nhau.
Trong phần 1, các field được phân cách bằng ký tự pipe ( | ) cĩ mã ASCII là 0x7c. Ký
tự pipe cuối cùng trong record là ký tự phân cách giữa phần 1 và phần 2
Trong phần 2, tùy vào loại thuộc tính sẽ sử dụng ký tự phân cách khác nhau
• Thuộc tính danh mục (Category attribute) : sử dụng ký tự # làm tiền tố, số
chỉ mục là số nguyên.
• Thuộc tính thập phân (decimal attribute) : sử dụng ký tự % làm tiền tố.
• Thuộc tính chuỗi (String attribute) : sử dụng tiền tố @ và chuỗi được bao
trong ngoặc kép “
• Thuộc tính mặc định : nếu khơng cĩ các tiền tố #,@ và %, kiểu của thuộc
tính mặc định là chuỗi (string)
Ví dụ :
Trang 73
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
name|time
desc|Example of using time as an attribute
time|Mon Apr 17 14:24:06 EST 1995
10.8|0|9.8|Fri Sep 13 10:00:00 1986 %31.4
11|5.5|9.9|Fri Sep 14 00:20:00 1985 %36.4
5.1|3.9|10|Fri Sep 15 00:00:30 1984 %28.4
Với dữ liệu trên, mỗi record dữ liệu
Trong phần I cĩ 3 thuộc tính xác lập toạ độ của vùng Location. (record 1 : 10.8 | 0 | 9.8
)
Trong phần 2 cĩ 5 thuộc tính chuỗi, và 1 thuộc tính thập phân ( record 1 : 5 thuộc tính
được hiểu mặc định là chuỗi là : Fri, Sep, 13, 10:00:00 và 1986; thuộc tính thập phân là
3.14)
HÀM Ý NGHĨA
char *
G_ask_sites_old (char *prompt,
char *name)
Yêu cầu người sử dụng nhập vào tên
của một file site trong danh sách các file
site đã cĩ sẵn.
char *mapset;
char name[50];
mapset = G_ask_sites_old("Enter site
list file to be processed", name);
Trang 74
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
if (mapset == NULL)
exit(0);
FILE *
G_sites_open_new (char *name)
Tạo mới file site
FILE *
G_sites_open_old (char *name, char
*mapset)
Mở một file site đã cĩ sẵn
Site *
G_site_new_struct
(RASTER_MAP_TYPE c, int n, int s,
int d)
Cấp phát bộ nhớ, tạo mới một cấu trúc
Site
void
G_site_free_struct (Site *site)
Giải phĩng vùng nhớ đã được cấp phát
trước đĩ.
int
G_site_get (FILE *fd, Site *s)
Đọc một site record từ file đã được mở.
int
G_site_put (FILE *fd, Site *s)
Ghi một site record vào .
Các hàm dùng vẽ cơ bản
Thư viện GIS cịn cung cấp các hàm dùng để thực hiện các thao tác vẽ đường thẳng và
đa giác cơ bản . Sau đây là một số hàm :
Trang 75
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
HÀM Ý NGHĨA
int
G_bresenham_line (int x1, int y1, int
x2, int y2, int (*point)( ) )
Hàm vẽ đường thẳng, sử dụng thuật
tốn Breshenham.
Trong đĩ, hàm dùng để vẽ 1 point phải
tự cài đặt và truyền vào thơng qua con
trỏ hàm
int (*point)()
int
G_setup_plot (double t, double b,
double l, double r, nt (*Move)( ), int
(*Cont)( ))
Hàm khởi tạo cho một quá trình vẽ.
Hàm này phải được gọi trước khi bắt
đầu gọi bất cứ hàm nào cĩ tên theo mẫu
G_plot_*
t,b,l và r là tọa độ các điểm top, bottom,
left và right của vùng vẽ.
Hàm nhận vào hai con trỏ hàm đến hai
hàm được người dùng tự cài đặt :
Move(x, y) di chuyển đến toạ độ (x,y)
Cont(x, y) vẽ đến toạ độ x,y từ toạ độ
trước đĩ.
Hàm này chịu trách nhiệm “xén” nếu
(x,y) nằm ngồi vùng được phép vẽ.
int
G_plot_line (double east1, double
Vẽ một đường thẳng, truyền vào toạ độ
tính theo kinh độ và vĩ độ.
Trang 76
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
north1, double east2, double north2)
int
G_plot_polygon (double *east, double
*north, int n)
Vẽ đa giác n cạnh, truyền vào toạ độ
tính theo kinh độ và vĩ độ
Sử dụng file tạm
Đơi khi trong quá trình xử lý của mình, các module cần lưu các thơng tin tạm vào một
file. Sau khi module đĩ được xử lý xong, các thơng tin tạm đĩ khơng cần nữa và file
lưu các thơng tin tạm sẽ được xố đi. Vấn đề cần giải quyết ở đây là cơ chế cung cấp
tên file dùng để lưu các thơng tin tạm này, tên file này buộc phải là duy nhất nghĩa là
khơng được trùng với các file cũng dùng các thơng tin tạm khác. GRASS cung cấp một
hàm đảm bảo điều này :
char *
G_temp_le ( )
Trả ra một tên file dùng lưu dữ liệu tạm
GRASS dựa vào id của process đang chạy để cung cấp tên cho file tạm, khi process
này khơng cịn chạy nữa, tiến trình quản lý cơ sở dữ liệu của GRASS sẽ tự động xố
những file tạm này đi.
Hỗ trợ các lệnh command
Mỗi lệnh (command) trong GRASS cĩ thể sẽ địi hỏi truyền các tham số vào. Người
dùng cĩ tràch nhiệm phải cung cấp đầy đủ các tham số này, nếu khơng, “lệnh” sẽ
khơng thực hiện được và sẽ cung cấp hướng dẫn sử dụng kèm theo thơng báo lỗi.
Trang 77
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
Để chuẩn hố qui trình cung cấp thơng tin và kèm theo thơng báo lỗi khi người dùng
cung cấp các tham số khơng đúng, GRASS hỗ trợ một số hàm cho lập trình viên và
khuyến cáo các lập trình viên nên tận dụng nĩ khi viết các lệnh mới.
Sử dụng hai cấu trúc
struct Option *opt; /* mơ tả các tùy chọn của lệnh */
Chi tiết :
opt->key Tên của tùy chọn
opt->description Dịng mơ tả cho user về tùy chọn này
opt->type Kiểu dữ liệu user sẽ cung cấp cho tùy chọn này
opt->required Lệnh cĩ bắt buộc phải cĩ option này ?
struct Flag *flag; /* Các cờ hiệu */
Chi tiết :
flag->key Một ký tự đơn dùng làm cờ hiệu
flag->description Thơng tin về cờ cho user
Hàm Ý nghĩa
struct Option *
G_define_option ( )
Cấp phát bộ nhớ cho một cấu trúc
option
struct Flag *
G_define_flag ( )
Cấp phát bộ nhớ cho một cấu trúc flag
Trang 78
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_parser (int argc, char *argv[ ])
Phân tích các tham số do user truyền
vào. Trả ra 0 nếu thoả mãn yêu cầu về
các tham số của lệnh.
int
G_usage ( )
In thơng tin hướng dẫn sử dụng lệnh
cho user. Khi check G_parser khơng
thành cơng, lập trình viên cĩ thể gọi
hàm này để hướng dẫn người sử dụng
Làm việc với UNIX/LINUX
Vì thư viện GRASS được phát triển và hỗ trợ mạnh cho LINUX/UNIX, nên nĩ cung
cấp một số hàm chuyên biệt để lập trình trên hệ điều hành này.
Lập trình đa tiến trình :
LINUX/UNIX cung cấp hàm fork() để tạo tiến trình con là một bản sao của tiến trình
cha. Việc tạo tiến trình con thơng thường dùng để chuyển các cơng việc của module về
“hậu trường”.
Kỹ thuật thường dùng trong LINUX/UNIX là gọi fork() để tạo ra một tiến trình con,
khi tiến trình con được tạo lập thành cơng, tiến trình cha lập tức gọi exit() để thốt và
từ đĩ trở đi, tiến trình con chạy “hậu trường” độc lập.
Tuy nhiên, GRASS gặp một vấn đề nhỏ với điều này, đĩ là trong UNIX/LINUX người
dùng cĩ thể sử dụng các thao tác bàn phím để kill một process đang chạy và vì thế cĩ
khả năng một module xử lý quan trọng đang làm việc ở “hậu trường” sẽ khơng đảm
bảo thực hiện đầy đủ nhiệm vụ được giao. GRASS giải quyết vấn đề này bằng cách
cung cấp hàm G_fork().
Trang 79
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
pid_t G_fork ( ) : Tạo một process con và trả ra id của nĩ. Hàm sẽ chuyển process con
được tạo ra vào một group process, đảm bảo khơng bị vơ ý kill bởi người dùng khi
chưa hồn thành nhiệm vụ.
Lập trình với socket trong UNIX
Các hàm cung cấp bởi GRASS cho cơng việc này đều cĩ dạng G_sock_*, đĩng gĩi
việc lập trình socket trên UNIX, đơn giản hĩa các thao tác cho lập trình viên
Hàm Ý nghĩa
char *
G_sock_get_fname (char *name)
Nhận vào name của kênh truyền dẫn và
trả ra đường dẫn full đến socket file
dùng để truyền dẫn.
int
G_sock_exists (char *name)
Truyền vào name là đường dẫn full đến
socket file của kênh truyền dẫn, kiểm
tra xem socket đĩ cĩ tồn tại
int
G_sock_bind (char *name)
Kết nối với một socket file.
int
G_sock_listen (int fd, unsigned int
queue)
“Nghe” trên một socket
int
G_sock_accept (int fd)
Chấp nhận một kết nối, tham số fd là
kết quả trả về của G_sock_listen
Trang 80
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
int
G_sock_connect (char *name)
Socket client tìm cách connect với
socket server
Thư viện VASK
VASK - viết tắt của cụm từ visual ask. Thư viện cung cấp một cách thức đơn giản để
giao tiếp với người sử dụng. Một trang màn hình chứa các thơng tin cùng các câu hỏi
được hiện thị và người dùng được yêu cầu nhập các thơng tin cần thiết cho chúng.
Cách thức giao tiếp với người dùng này thường thấy ở các module chương trình của
GRASS.
VASK là một thư viện hỗ trợ lập trình viên tạo ra sự giao tiếp này. Các hàm của thư
viện cĩ tiền tố bắt đầu là V_*
Hàm Ý nghĩa
int
V_clear ()
Khởi tạo
int
V_line (int num, char *text)
Viết một dịng text tại dịng num. Dịng
cĩ giá trị từ 0 đến 22. Dịng 0 là dịng
trên cùng của màn hình
int
V_const (Ctype *value, char type, int
Ctype cĩ kiểu là integer, long, float,
double hoặc char.
Trang 81
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Hệ thống hỗ trợ phân tích tài nguyên địa lý
row, int col, int len)
int
V_ques (Ctype *value, char type, int
row, int col, int len)
Type dùng các ký tự để xác định kiểu
dữ liệu của con trỏ value : ‘i’ (integer),
‘d’ (double), ‘f’ (float), ‘l’ (long) hoặc
‘s’ (char string).
Row cĩ giá trị từ 0 .. 22
Col cĩ giá trị từ 0 .. 79
Người dùng được yêu cầu nhập liệu, ơ
nhập liệu nằm tại vị trí col, row và cĩ
chiều dài len. Nội dung nhập liệu của
người dùng chứa trong biến value
int
V_call ()
Giao tiếp với người sử dụng.
Khi được gọi, nĩ sẽ lau màn hình và
hiện thị các nội dung đã đựơc chỉ định
bởi V_line, V_ques và V_const.
Ví dụ minh họa :
# define LEN 15
..
/* các biến*/
Các file đính kèm theo tài liệu này:
- Unlock-0012057-0012131.pdf