Sau một thời gian thực hiện đồ án, tuy đó không phải là một thời gian dài nhưng cũng đã đem lại một số kết quả tốt và chứng tỏ được tính khả thi của đề tài. Các chức năng GIS chỉ là các thao tác cơ bản trên bản đồ. Mặc dù đây thực sự chỉ là một phần nhỏ trong một phạm vi ứng dụng rộng lớn của GIS. Nhưng đó cũng là bước đi đầu tiên nếu thành công thì sẽ đem lại nhiều thuận lợi trong các bước phát triển tiếp theo. Điều này giống như trong dân gian đã từng nói “Vạn sự khởi đầu nan”.
Nhìn ra trước mắt thì khó khăn cũng còn nhiều và con đường tìm kiếm giải pháp tối ưu nhất vẫn còn bỏ ngỏ.
Trên thế giới, đề tài này đã được tập trung phát triển bởi nhiều công ty GIS có tầm cỡ. Đã có những sản phẩm rất thành công trong lĩnh vực này. Tuy nhiên, chi phí bỏ ra để mua chúng là khá đắt. Đặc biệt là đối với Việt Nam, khi nhu cầu sử dụng GIS ngày một tăng, nhưng để bỏ ra một số tiền như vậy cũng là một khó khăn không nhỏ.
Vì vậy, làm thế nào để đáp ứng được các yêu cầu này trong hoàn cảnh của nước ta hiện nay cũng là một vấn đề cần thiết.
110 trang |
Chia sẻ: oanh_nt | Lượt xem: 1324 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Như chúng ta đã biết dữ liệu bản đồ có thể là dữ liệu Vector hoặc dữ liệu Raster. Việc truyền dữ liệu Vector có ưu điểm là giầu thông tin vì đây là loại dữ liệu mô tả từng thực thể dưới dạng điểm, đường,… Nhưng khi bản đồ có rất nhiều những thực thể như vậy thì lượng dữ liệu Vector có thể rất lớn (vài chục MB). Vì vậy khó có thể truyền được qua mạng Internet. Với dữ liệu Raster tức là các file ảnh (kích thước khoảng vài chục KB) thì không có những biến động lớn về kích thước và không phụ thuộc nhiều vào các thực thể trên bản đồ. Do đó dữ liệu truyền giữa IGIS-Server và IGIS-Client sẽ là dữ liệu ảnh Raster (ảnh nén GIF, JPG,…).
Phương pháp này có một số nhược điểm :
Tốn tài nguyên của IGIS-Server vì phải thực hiện chuyển đổi từ dữ liệu Vector sang dữ liệu Raster.
Dữ liệu ảnh không cho phép chọn từng thực thể trên bản đồ. Vì vậy, phải thực hiện tất cả các chức năng này tại IGIS-Server sau đó gửi trả lại kết quả cho IGIS-Client.
Việc soạn thảo trên bản đồ sẽ gặp nhiều khó khăn.
Tăng khả năng quá tải trên IGIS-Server khi phải thực hiện quá nhiều các thao tác cho mỗi IGIS-Client.
Tuy nhiên, trong điều kiện chất lượng đường truyền hiện nay, thì đây cũng là một phương pháp có thể chấp nhận được trên thực tế. Và việc cài đặt IGIS-Server phải đảm bảo hạn chế được các khó khăn này.
VI. Sơ đồ phân cấp chức năng
Sơ đồ phân cấp chức năng đặt ở trang sau. Sau đây sẽ giải thích rõ từng chức năng của hệ thống :
IGIS – Client : là ứng dụng nằm trên máy của người sử dụng. Trong đó được chia thành một số chức năng con.
Application Presentation (Trình diễn ứng dụng) : đây là một giao diện tương tác với người sử dụng đầu cuối (end user). Hiển thị thông tin, trình bày các chức năng, kiểm soát các sự kiện như bàn phím, chuột và nhận yêu cầu chức năng từ người sử dụng.
Build Requests (Xây dựng yêu cầu) : mỗi khi người sử dụng yêu cầu một chức năng nào đó của hệ thống và chức năng này chỉ được xử lý ở Server. Hoặc khi ứng dụng cần trao đổi một số thông tin với Server. Lúc này tất cả các thông điệp đó sẽ được chuyển đổi thành các request hay gói tin yêu cầu và được chuyển sang IGIS - Server.
IGIS-Client Communication (Truyền thông với IGIS-Server) : Đảm nhận vai trò kết nối tới IGIS – Server và truyền/nhận dữ liệu với IGIS-Server. Chức năng này cũng có thể thực hiện luôn việc mã hoá/giải mã, nén/giải nén dữ liệu khi cần thiết.
Process Responses (Xử lý kết quả) : Sau khi các gói tin trả lời (Response) từ IGIS-Server được gửi tới thì chức năng này sẽ nhận, phân tích và thực hiện. Kết quả cuối cùng có thể là một thông báo cho người sử dụng đầu cuối, hoặc hiển thị lên màn hình.
Hệ thống Internet- GIS
IGIS - Client
IGIS - Server
Manage GIS-Datas (Quản lý dữ liệu địa lý)
Application Presentation
(Trình diễn ứng dụng)
Analyse Requests
(Phân tích yêu cầu)
Buid Requests
(Xây dựng yêu cầu)
IGIS-Server Communication (Truyền thông với IGIS-Client )
IOGIS-Client Communication
(Truyền thông với IGIS-Server)
Process Requests
(Xử lý yêu cầu)
Process Responses
(Xử lý kết quả)
Sơ đồ phân cấp chức năng
IGIS-Server : là một server trung gian giữa IGIS-Client và Oracle. Bao gồm các chức năng con sau :
Manage GIS Datas (Quản lý dữ liệu GIS) : chức năng này quản lý các truy nhập tới CSDL địa lý nằm trên Oracle và quản lý dữ liệu GIS nhận được từ Oracle. Các dữ liệu GIS có thể nằm trên bộ nhớ của IGIS-Server hoặc tại Oracle. Vì vậy chức năng này cũng thực hiện việc đồng bộ hoá các thread mà truy nhập vào cùng một tài nguyên CSDL GIS.
Analyse Request (Phân tích yêu cầu) : thực hiện việc phân tích các yêu cầu nhận được từ IGIS-Client. Xác định các chức năng cần thực hiện.
IGIS-Server Communication (Truyền thông với IGIS-Client) : chức năng này thực hiện việc nghe các kết nối tới IGIS-Server, truyền/nhận dữ liệu từ IGIS-Client. Có thể thực hiện cả việc mã hóa/giải mã, nén/giải nén dữ liệu khi cần thiết.
VII. Biểu đồ luồng dữ liệu
VII.1 Biểu đồ luồng dữ liệu mức đỉnh
Trang Web có chứa dịch vụ GIS
Packets
(Request/Response)
Command (SQL)
End User
(Notification)
Result
Login Infos/yêu cầu chức năng GIS
Oracle
IGIS-SERVER
IGIS-CLIENT
Raster Images
Biểu đồ luồng dữ liệu mức đỉnh
Luồng dữ liệu giữa End User và GIS-Client :
Trang Web có chứa dịch vụ GIS : Đây là trang Web tích hợp ứng dụng IGIS-Client dưới dạng các Applet. Lúc này ứng dụng sẽ được khởi tạo và sẵn sàng
sử dụng.
Login Infos : là các thông tin đăng nhập hệ thống ví dụ User Name, Password
Yêu cầu chức năng GIS : Người sử dụng có thể yêu cầu thực hiện một chức năng nào đó của GIS như hiển thị bản đồ, phóng to, thu nhỏ bản đồ,…
Luồng dữ liệu giữa IGIS-Client và IGIS-Server :
Packets : là các gói tin truyền thông giữa IGIS-Client và IGIS-Server. Packet sẽ đóng gói các Request, Response hoặc Notification theo giao thức truyền thông (sẽ được trình bày sau).
Request : là gói tin yêu cầu một chức năng nào đó của GIS hoặc là các dữ liệu khởi tạo, được phát từ IGIS-Client tới IGIS-Server. Việc thành lập một request được thực hiện theo giao thức ứng dụng (sẽ được trình bày ở phần sau)
Response : là gói tin trả lời một Request mà IGIS-Server vừa nhận được. Hướng truyền từ IGIS-Server về phía IGIS-Client. Việc tạo lập một gói tin Response cũng được thực hiện bởi giao thức ứng dụng.
Notification : là các thông điệp trao đổi giữa IGIS-Client và IGIS-Server. Ví dụ IGIS-Server có thể gửi một tín hiệu kiểm tra sự sẵn sàng của IGIS-Client và IGIS-Client phải trả lời tín hiệu này.
Luồng dữ liệu giữa IGIS-Server và Oracle :
Command SQL : là lời gọi thực hiện một lệnh SQL phát ra từ IGIS-Server tới Oracle. Ví dụ lệnh SELECT, UPDATE,…
Result : Kết quả mà Oracle vừa thi hành một lệnh SQL.
Raster Images : Dữ liệu ảnh raster mà IGIS-Server tạo ra. ảnh này nên là một ảnh nén, ví dụ : ảnh JPG.
VII.2 Biểu đồ luồng dữ liệu mức dưới đỉnh
Biểu đồ luồng dữ liệu được vẽ ở trang sau. Sau đây sẽ giải thích các luồng dữ liệu có trong sơ đồ.
Request Data : Đây là các dữ liệu được gửi từ chức năng Application Presentation tới chức năng Build Request cần thiết cho việc tạo lập một Request. Ví dụ khi người sử dụng thực hiện thao tác đăng nhập vào hệ thống (login) thì Request Data chứa các thông tin như User Name, Password,…
Response Data : Dữ liệu này cần thiết cho việc hiển thị thông tin hoặc thông báo cho người sử dụng. Response Data được gửi từ chức năng Process Response tới Application Presentation. Ví dụ đó có thể là dữ liệu ảnh của bản đồ hoặc là kết quả vừa thực hiện một thao tác nào đó của hệ thống.
Yêu cầu chức năng : Đây là thông tin đã được phân tích từ gói tin Request được gửi tới chức năng Process Requests của IGIS-Server để thực hiện.
GIS-Data : Dữ liệu cần thiết cho việc thực hiện một chức năng GIS nào đó của hệ thống.
End User
Yêucầu trang Web có chứa dịch vụ GIS
Login Infos/
Yêu cầu chức năng GIS
Application Presentation
Response Data
Request Data
Process Responses
Build Requests
Response
Request
IGIS-Client Communication
Raster Images
Packets
IGIS-Server Communication
Response
Request
Process Requests
AnalyseRequests
Yêu cầu chức năng
GIS-Data
Manage GIS-Datas
Result
Command SQL
Oracle
`Biểu đồ lưồng dữ liệu mức dưới đỉnh
Chương VIII – Thiết kế tổng thể
I. Hệ thống cung cấp thông tin địa lý Internet-GIS
I.1 Các khái niệm chung :
Hệ thống Internet-GIS cung cấp cho người sử dụng các dịch vụ thông tin địa lý (GIS Service). Mỗi dịch vụ GIS sẽ gồm một danh sách các bản đồ mà người sử dụng có thể lựa chọn. Các dịch vụ GIS cũng được chia làm 2 phần là các dịch vụ chung (Public Service) và các dịch vụ riêng (Private Service).
Các Public Service là các dịch vụ mà tất cả mọi người sử dụng đều có thể được dùng mà không cần phải qua giai đoạn kiểm tra quyền sử dụng dịch vụ (login). Đây là các dịch vụ mà người cung cấp có ý định dành cho tất cả mọi người và đã được xác định sẵn.
Các Private Service là các dịch vụ riêng chỉ dành cho những người sử dụng có quyền sử dụng. Để có được quyền sử dụng các Private Service người sử dụng phải đăng ký trước với nhà cung cấp dịch vụ.
I.2 Quá trình hoạt động của hệ thống Internet-GIS
Quá trình hoạt động của hệ thống bao gồm một số bước sau :
I.2.1 Giai đoạn khởi tạo ứng dụng IGIS-Client
Khi người sử dụng dùng trình duyệt Web mở một trang Web có chứa dịch vụ GIS thông qua một địa chỉ URL. Trang Web này do Web Server quản lý và được nạp về máy của người sử dụng. Lúc này chương trình IGIS-Client sẽ được khởi tạo và bắt đầu chạy. Chương trình IGIS-Client sẽ tự động kết nối với chương trình IGIS-Server và thiết lập các thông tin ban đầu (ví dụ cấp phát bộ nhớ cho IGIS-Client, nạp danh sách các Public Service,…).
Sau khi khởi tạo, các Public Service luôn có trong danh sách các Service tại IGIS-Client và sẵn sàng sử dụng.
Còn để có các Private Service thì người sử dụng phải thực hiện bước đăng nhập vào hệ thống thông qua giai đoạn Login (Vào User Name, Password).
Màn hình hiển thị của chương trình IGIS-Client sẽ cung cấp một giao diện cho phép người sử dụng có thể lựa chọn các chức năng của hệ thống.
Để có thể thực hiện được bất kỳ chức năng nào của hệ thống thì phải có chương trình IGIS-Server đang chạy và sẵn sàng chấp nhận các kết nối từ IGIS-Client.
I.2.2 Giai đoạn kiểm tra quyền sử dụng (Login)
Khi người sử dụng chọn chức năng login, chương trình IGIS-Client sẽ hiện lên một hộp hội thoại (Dialog) yêu cầu vào các thông tin đăng nhập như User Name, Password.
Sau khi người sử dụng đã vào đầy đủ các thông tin này và yêu cầu thực hiện thì chương trình IGIS-Client sẽ tạo ra một request và gửi tới IGIS-Server.
Khi nhận được một request đăng nhập hệ thống từ IGIS-Client, chương trình IGIS-Server sẽ thực hiện giai đoạn kiểm tra các thông tin đăng nhập có trong request. Kết quả kiểm tra sẽ được IGIS-Server đóng gói thành gói tin response và được phát ngược trở về IGIS-Client.
Chương trình IGIS-Client sẽ kiểm tra tín hiệu trả lời response từ IGIS-Server.
Nếu kết quả không hợp lệ thì IGIS-Client sẽ thông báo cho người sử dụng và có thể yêu cầu đăng nhập lại.
Nếu kết quả hợp lệ thì IGIS-Client sẽ thực hiện nạp danh sách các Private Service từ IGIS-Server. Các Private Service này sẽ có trong danh sách Service tại máy của người sử dụng.
I.2.3 Giai đoạn sử dụng một chức năng GIS
Các Private Service chỉ sẵn sàng khi người sử dụng đã qua giai đoạn login thành công còn nếu không thì chỉ có các Public Service.
Khi người sử dụng yêu cầu một chức năng nào đó của GIS như hiển thị bản đồ, phóng to, thu nhỏ bản đồ, … thì IGIS-Client sẽ tạo ra một request yêu cầu chức năng gửi tới IGIS-Server
Khi nhận được request này, IGIS-Server sẽ phân tích, thực hiện và tạo ra một response gửi trả về IGIS-Client.
Khi nhận được response từ IGIS-Server, IGIS-Client sẽ xử lý kết quả. Nếu thao tác không thành công thì sẽ thông báo cho người sử dụng.
Có 2 phương pháp tổ chức thực hiện :
Chỉ cho phép thực hiện một chức năng cho tới khi có kết quả mới tiếp tục nhận chức năng khác. Hay khi chưa kết thúc thực hiện một chức năng thì IGIS-Client sẽ vô hiệu hoá tất cả các yêu cầu thực hiện chức năng nào đó của hệ thống từ người sử dụng.
Cho phép thực hiện nhiều chức năng khác nhau mà không cần phải đợi cho tới khi kết thúc thực hiện 1 chức năng nào đó. Hay trong lúc đang thực hiện một chức năng thì IGIS-Client vẫn cho phép người sử dụng lựa chọn thực hiện một chức năng khác.
Phương pháp thứ nhất không bao giờ xẩy ra xung đột còn với phương pháp thứ hai thì có thể xẩy ra xung đột. Bởi lẽ việc hoàn thành một chức năng không bao giờ được ngay tức thời nên các thao tác sau có thể không hợp lệ.
Xung đột mức ứng dung : Việc thực hiện các chức năng không khớp với nhau. Ví dụ khi người sử dụng thực hiện đóng một bản đồ, sau đó lại thực hiện việc thu nhỏ bản đồ.
Xung đột mức truyền thông : Các gói tin không đúng thứ tự. Nếu có 2 tiến trình cùng thực hiện nhận hoặc gửi dữ liệu lúc này sẽ có xung đột.
Vì vậy, khi áp dụng phương pháp nào đều phải đảm bảo tránh xung đột.
I.2.4 Giai đoạn kết thúc sử dụng
Khi người sử dụng đóng Browser hoặc chuyển sang một site khác hệ thống sẽ thực hiện pha cập nhật nếu cần và giải phóng các tài nguyên dành cho IGIS-Client bên máy IGIS-Server.
II. Mô hình hoá hệ thống
Như vậy hệ thống sẽ gồm 3 thành phần là IGIS-Client, IGIS-Server và hệ DBMS Oracle. Phần này sẽ cung cấp một mô hình tổng quan về toàn bộ hệ thống.
Internet
Oracle Server
Oracle Server
Oracle Server
IGIS-Server/
Web Server
IGIS-Client
IGIS-Client
IGIS-Client
IGIS-Client
Mô hình toàn bộ hệ thống Internet-GIS
Chương IX - Thiết kế chi tiết
Trong hệ thống gồm 2 quá trình trao đổi thông tin với nhau, đó là quá trình trao đổi thông tin giữa IGIS-Client và IGIS-Server và quá trình trao đổi thông tin giữa IGIS-Server và DBMS Oracle.
IGIS-Server
Oracle
IGIS-Client
I. Mô hình trao đổi dữ liệu giữa IGIS-Client và IGIS-Server
Như chúng ta đã biết giữa IGIS-Client và IGIS-Server trao đổi dữ liệu với nhau thông qua tầng Socket. Nhưng trước khi dữ liệu được gửi đi thì chúng phải có một khuôn dạng nhất định mà đã được quy định trước giữa hai bên truyền/nhận. Khuôn dạng đó được gọi là 1 gói tin Request. Bên nhận sau khi đã nhận được 1 gói tin Request sẽ phải biết cách lấy được dữ liệu từ Request và thực hiện thao tác yêu cầu. Sau khi thực hiện xong, nó cũng phải tạo thành một khuôn dạng chứa các kết quả. Đó chính là 1 gói tin Response. Gói tin Response này sẽ được bên nhận phân tích,xử lý và kết thúc một pha truyền thông.
Request
Build Request
Analyse and Process Response
Analyse Request
Process and Create Response
Response
Receiver
Sender
Sơ đồ minh hoạ một pha truyền thông
Như vậy, để trao đổi được thông tin với nhau giữa bên gửi và bên nhận phải ngầm quy ước với nhau một khuôn dạng dữ liệu chung. Việc quy ước đó ta có thể hiểu như một giao thức giữa 2 bên.
Tuy nhiên trong trường hợp ta cần xử lý một vài thao tác trước khi gửi một request hay response như nén hay mã hoá dữ liệu,… thì phải thực hiện thêm một số chức năng trung gian nữa như nén dữ liệu/giải nén dữ liệu, mã hoá dữ liệu/giải mã dữ liệu. Tập các chức năng này phải được thực hiện nhịp nhàng và ăn khớp với nhau giữa bên gửi và bên nhận.
Có thể hình dung toàn bộ quá trình trao đổi thông tin giữa 2 bên gửi và nhận như một kiến trúc phân tầng giống với kiến trúc phân tầng OSI. Tập các chức năng của pha thứ nhất chỉ quan tâm tới khuôn dạng của dữ liệu sẽ được đưa vào một tầng mà ta gọi là tầng ứng dụng (Application Layer) còn tập các chức năng của pha thứ 2 chỉ quan tâm tới các byte, bit của dữ liệu nên ta gọi là tầng truyền thông (Communication Layer). Sau đó là tầng Socket (Socket Layer)
Và giao thức trao đổi giữa 2 tầng ứng dụng ta gọi là giao thức tầng ứng dụng còn giao thức trao đổi giữa 2 tầng truyền thông ta gọi là giao thức tầng truyền thông.
Giao thức tầng ứng dụng (Request / Response)
IGIS - SERVER
APPLICATION
COMMUNICATION
SOCKET
APPLICATION
COMMUNICATION
SOCKET
IGIS - ClIENT
Giao thức tầng truyền thông (IGIS-Packets)
Giao thức tầng Socket
Internet
Mô hình trao đổi dữ liệu giữa IGIS-Client và IGIS-Server
Trong phần sau sẽ trình bày chi tiết giao thức tầng ứng dụng và giao thức tầng truyền thông. Còn giao thức tầng Socket được thực hiện theo giao thức mạng TCP/IP.
II. Giao thức trao đổi dữ liệu giữa IGIS-Client và IGIS-Server
Để gọi một cách ngắn gọn ta đặt tên giao thức tầng ứng dụng là IGIS-AP và giao thức tầng truyền thông là IGIS-CP.
II.1 Giao thức tầng ứng dụng (IGIS-AP)
II.1.1 Các trạng thái trong giao thức IGIS-AP
Quá trình trao đổi dữ liệu giữa 2 tầng ứng dụng IGIS-Client và IGIS-Server theo giao thức IGIS-AP trải qua 4 trạng thái sau :
Trạng thái Initialization : Đây là trạng thái khởi đầu khi IGIS-Client kết nối với IGIS-Server và thực hiện giai đoạn khởi tạo ứng dụng.
Trạng thái Public Transaction : Sau khi thực hiện xong giai đoạn khởi tạo hệ thống sẽ đi vào giai đoạn Public Transaction. Đây là giai đoạn người sử dụng được quyền sử dụng các dịch vụ chung hay public service mà hệ thống cung cấp.
Trạng thái Private Transaction : Đây là trạng thái khi người sử dụng thực hiện thành công chức năng chứng thực (Authentication) hay kiểm tra quyền sử dụng (login). Chỉ trong trạng thái này người sử dụng mới có thể sử dụng các dịch vụ riêng hay private public.
Trạng thái Finish : Khi kết thúc một phiên phục vụ, hệ thống sẽ đi vào trạng thái Finish nhằm mục đích cập nhật các dữ liệu nếu có và giải phóng tài nguyên.
Quá trình chuyển đổi trạng thái được minh hoạ bằng sơ đồ sau :
Public Transaction State
Start
Login Successfully
Initialization State
Quit
Finish
State
Private Transaction State
Sơ đồ chuyển đổi trạng thái theo giao thức IGIS-AP
Trong mỗi trạng thái sẽ có một tập lệnh và tham số để tạo thành một request và một response tương ứng. Một số lệnh có thể sử dụng trong các trạng thái khác nhau nhưng cũng có lệnh không được phép sử dụng khi chưa đi vào trạng thái hợp lệ.
II.1.2 Cấu trúc chung của một Request
Bất kỳ request nào đều gồm có phần lệnh, có hoặc không có phần tham số. Phần lệnh được tách riêng với nhau bởi dấu ‘?’ :
Command[?Arguments]+CRLF
Phần lệnh Command : mô tả một chức năng của hệ thống cần thực hiện
Phần tham số Arguments : mô tả các tham số của lệnh cần thực hiện. Trường hợp có nhiều tham số thì các tham số cách nhau bởi dấu ‘&’
Arguments :- arg1=value1&arg2=value2&arg3=value3…
CRLF là mã kết thúc dòng như trong bảng mã ASCII (CR=13,LF=10).
Nếu tham số có nhiều giá trị thì các giá trị cách nhau bởi dấu ‘+’
arg=value1+value2+…+valueN
Cấu trúc của Request gần giống với các yêu cầu theo giao thức HTTP nhằm mục đích phát triển hệ thống khi cần thiết.
Ví dụ : Set Parameters?ViewSize=439+258&ViewBkgnd=225+225+240
Tuy nhiên có thể có những request không cần theo đúng cấu trúc này.
Ví dụ : Authen?xyz/xyz
Đây là một request yêu cầu chứng thực với UserName=xyz và Password=xyz.
II.1.3 Cấu trúc chung của một Response
Một Response gồm phần mã kết quả vừa thực hiện lệnh và có thể có hoặc không có phần thông báo kết quả . Phân chia các dòng bằng CRLF.
Ví dụ kết quả trả lời một gói tin chứng thực có thể là :
000 hoặc 000 Invalid Username and Password
100 hoặc 100 Valid Username and Password
II.1.4 Nội dung các chức năng cần thực hiện của hệ thống Internet-GIS
Mỗi chức năng này được biểu diễn bằng một request và gửi tới IGIS-Server
Set Parameters : Thiết lập các thông số khởi tạo. Các thông sô này cần thiết cho việc tạo ảnh raster của bản đồ từ dữ liệu vector như kích thước hiện tại của View, mầu nền bản đồ,…
Get Services : Sử dụng để lấy các dịch vụ được cung cấp bởi IGIS-Server.
Authen : yêu cầu kiểm tra quyền sử dụng Private Service.
NewMap : thực hiện mở một bản đồ mới. Bản đồ hiện tại sẽ bị xoá hoặc yêu cầu cập nhật.
AddLayer : Nạp chồng một hoặc nhiều lớp vào bản đồ hiện tại. Nếu bản đồ hiện tại không chứa một lớp nào (bản đồ rỗng) thì lớp mới sẽ trở thành lớp đầu tiên của bản đồ.
RemoveLayer : Gỡ bỏ một hoặc nhiều lớp khỏi bản đồ hiện tại. Nếu không còn một lớp nào trong bản đồ thì sẽ được tô đầy bằng màu nền của View.
Zoom : Thực hiện một phép zoom bản đồ với một tỷ lệ xác định. Tuỳ thuộc vào tỷ lệ này mà bản đồ sẽ được phóng to hay thu nhỏ lại. Thao tác này sẽ thay đổi cả tỷ lệ hiển thị và khoảng cách offset của vị trí hiển thị.
PanMap : Di chuyển vùng hiển thị bản đồ sang một vị trí mới. Thao tác này chỉ thay đổi offset của vị trí hiển thị mà không làm thay đổi tỷ lệ bản đồ.
Goto Origin : Chuyển chức năng hiển thị bản đồ về trạng thái đầu tiên khi mở một bản đồ mới hoặc nạp chồng lớp đầu tiên vào bản đồ.
ViewEntireLayer : Thực hiện chức năng nhìn toàn bộ bản đồ trong View hiện tại.
GetInfo : Yêu cầu xem thông tin của một hoặc nhiều thực thể trên bản đồ tại một vị trí xác định.
ExecSQL : Thực hiện một lệnh SQL như insert, update, delete,… không có lệnh select.
II.1.5 Cấu trúc chi tiết của các Request và Response
Request
RESPONSE
Commands
Arguments
Set Parameters
(Initialization State Only)
ViewSize=CX+CY.
ViewBkgnd=R+G+B
MapBkgnd=R+G+B
MapBorder=R+G+B/NO
(CX,CY : độ rộng của View
R : Red, G: Green, B : Blue)
1xx [Msg] CRLF :- Error
000 [Msg] CRLF :- Success
Ví dụ lệnh Set Parameters:
IGIS-Client : Set Parameters?ViewSize=439+258&ViewBkgnd=225+225+240&MapBkgnd=255+255+255&MapBorder=NO
IGIS-Server : 000
Get Services
(Public/ Private Transaction State)
Public: Các dịch vụ chung (Public Transaction State Only)
Private : Các dịch vụ riêng (Private Transaction State)
All : Cả 2 dịch vụ (Private Transactinon State Only)
1xx [Msg] CRLF :- Error
000 [Msg] CRLF Service List :- Success
(Service List : mô tả ở cuối bảng)
Ví dụ lệnh Get Services:
IGIS-Client : Get Services?public
IGIS-Server : 000 1 Public Services
SName=Dich vu thong tin ban do
SID=3
HANOI : GEOMETRY
Authen
(Public/Private Transaction State)
UserName/Password
1xx [Msg] CRLF :- Invalid
000 [Msg] CRLF :- Success
NewMap
(Public/Private Transaction State)
SID=i&Index=j&…
(SID : ID của Service
Index : chỉ số layer trong Service)
1xx [Msg] CRLF :- Error
000 RightURL CRLF
Map Desc :- Update
001 [Msg] CRLF :-
No Modified
(RightURL,Map Desc mô tả ở cuối bảng)
Ví dụ lệnh New Map :
IGIS-Client : NewMap?SID=2&Index=3
IGIS-Server : 000 /IOGisServer/MapImages/Map1093_1.000000.jpg
MoveLimit=(115,208,70,232)
LogRatio=0.0000604976/0.0000604976
LogOffset=-227517.51480/-5565962.31826
LogUnit=0.50000/0.50000
AddLayer
(Public/Private Transaction State)
SID=i&Index=j&…
(SID và Index xác định được layer cần nạp chồng vào bản đồ với quy tắc sau tương ứng với mỗi State :
Public Trans State : SID chỉ thuộc Public Service
Private Trans State : SID có thể là Public/Private Service.)
Như trên
Zoom
(Public/Private Transaction State)
X=valueX&Y=valueY&Coef=c
(X,Y : toạ độ điểm zoom theo đơn vị Device, coef là hệ số zoom. Coef=2 : phóng to gấp đôi tỷ lệ cũ)
Như trên
PanMap
(Public/Private Transaction State)
Dx=valueDx&Dy=valueDy
(Dx, Dy là khoảng dịch chuyển theo chiều x,y theo đơn vị Device)
Như trên
Goto Origin
(Public/Private Transaction State)
Không có tham số
Như trên
Ví dụ lệnh Goto Origin :
IGIS-Client : GOTO ORIGIN
IGIS-Server : 000 /IOGisServer/MapImages/Map1123_11.000000.jpg
MoveLimit=(115,220,70,219)
ViewEntireLayer
(Public/Private Transaction State)
SID=i&Index=j&MaxBounding=Y/N
(Xem toàn cảnh một lớp)
All&MaxBounding=Y/N
(Xem toàn cảnh toàn bộ bản đồ)
(MaxBounding =Y toàn bộ lớp bao gồm cả đường biên)
Như trên
Ví dụ lệnh ViewEntireLayer
IGIS-Client : ViewEntireLayer?SID=2&Index=3&MAXBOUNDING=N
IGIS-Server : 000 /IOGisServer/MapImages/Map1123_12.000000.jpg
MoveLimit=(-69,35,-67,46)
EntireMapPos=(69,-35,372,304)
LogRatio=0.0000294517/0.0000294517
LogOffset=179953.89109/-5565962.31826
LogUnit=0.50000/0.50000
RemoveLayer
(Public/Private Transaction State)
SID=i&Index=j
(i,j xác định layer cần gở bỏ khỏi bản đồ hiện tại)
1xx [MSG] CRLF :- Error
002 [MSG] CRLF :-
Empty Map
000 RightURL CRLF
Map Desc :- Update
Ví dụ lệnh RemoveLayer :
IGIS-Client : RemoveLayer?SID=0&Index=3
IGIS-Server : 002
GetInfo
(Public/Private Transaction State)
X=valueX&Y=valueY
(X,Y là các vị trí trên trục x,y theo đơn vị Device)
1xx [MSG] CRLF :-
error
000 [MSG] CRLF
ObjectInfos
(ObjectInfos được định nghĩa ở cuối bảng)
Ví dụ lệnh GetInfo :
IGIS-Client : GetInfo?X=100&Y=200
IGIS-Server : 000
1,0,1
ColName1|ColName2|ColName3
1,abc|def|1,mnp
1,3,1
ColName1|ColName2
1,sdflkdf|0,
ExecSQL
(Public/Private Transaction State)
SID=m&Index=i&NSQL=n&SQLLen=len1&strCmd1SQLLen=len2&strCmd2...
Trải trên nhiều dòng, mỗi dòng là kết quả thực hiện cho một lệnh SQL
Giải thích một số khái niệm :
ServiceList : Là danh sách các dịch vụ mà IGIS-Server cung cấp cho IGIS-Client. Danh sách này được trải trên nhiều dòng. Bắt đầu mỗi dịch vụ bằng từ khoá SName.
SName= Tên của dịch vụ thứ nhất
SID= ID của dịch vụ thứ nhất
Tên của layer thứ nhất
Tên của layer thứ hai
…
SName= Tên của dịch vụ thứ hai
SID= ID của dịch vụ thứ hai
Tên của layer thứ nhất
Tên của layer thứ hai
…
MapDesc : là cấu trúc mô tả các thông tin về bản đồ. Cấu trúc này cũng trải trên nhiều dòng.
MoveLimit=(LeftDx,TopDy,RightDx,BottomDy)
EntireMapPos=(x1,y1,x2,y2)
LogRatio=logRatioX/logRatioY
LogOffset=logOffsetX/logOffsetY
LogUnit=logUnitX/logUnitY
ObjectInfos : là cấu trúc cho biết các thông tin thuộc tính về một hoặc nhiều thực thể trên bản đồ. Cấu trúc này gồm nhiều dòng.
SID_1 , Index_1,RowCount_1
ColName1| ColName2| ColName3
Ind, Item1.1 | Ind, Item2.1| Ind, Item3.1
Ind, Item1.2| Ind, Item2.2| Ind, Item3.2
SID_2,Index_2,RowCount_2
ColName1| ColName2
Ind, Item1 | Ind, Item2
Trong đó Ind (Indicator) chỉ dẫn cho giá trị của trường :
Ind=1 : giá trị khác NULL
Ind=0 : giá trị bằng NULL (Lúc này không quan tâm tới vế sau).
RightURL : là phần ngọn của một địa chỉ URL. Để có thể tạo thành một địa chỉ URL hoàn chỉnh cần thêm địa chỉ của WebServer nơi chạy IGIS-Server.
Ví dụ :
RightURL=/IOGisServer/MapImages/Map1123_12.000000.jpg
URL=
Chú ý : trong các quy ước ở trên có những ký tự đặc biệt được sử dụng làm dấu ngăn cách. Nếu trong trường hợp mà giá trị có phần trùng với các dấu ngăn cách này và có thể gây nhập nhằng thì khi gửi các dấu đó sẽ được tự động nhân đôi và bên nhận phải tự động loại bỏ.
II.2 Giao thức tầng truyền thông (IGIS-CP)
Giao thức tầng ứng dụng thường làm việc dựa trên luồng các ký tự, hoặc dựa trên các từ khoá được định nghĩa trước. Giao thức IGIS-CP thì không cần quan tâm tới điều này, nó chỉ làm việc dựa trên luồng byte với các tiêu chuẩn sau :
Đơn vị truyền nhận là các packet (Cấu trúc của packet sẽ mô tả sau)
Đảm bảo truyền/nhận một cách chính xác (gửi đi các request và nhận đúng các response tương ứng với request đó)
Có thể tách hoặc hợp trên các packet nếu cần.
Có khả năng mã hoá/giải mã hoặc nén/giải nén dữ liệu khi có yêu cầu
Các packet sử dụng trong tầng truyền thông này ta gọi là IGIS-Packet để khỏi lầm với các packet trong các giao thức ở tầng dưới.
II.2.1 Giao thức IGIS-CP
Khi tầng trên của bên gửi có yêu cầu truyền dữ liệu nó sẽ gửi dữ liệu cần truyền xuống tầng truyền thông. Nếu có yêu cầu mã hoá/nén dữ liệu thì nó sẽ thực hiện các thao tác này trên dữ liệu đầu vào. Sau đó nó đóng gói chúng thành một hoặc nhiều IGIS-Packet và gửi sang bên nhận.
Khi nhận được một IGIS-Packet, tầng truyền thông của bên nhận có nhiệm vụ tách phần dữ liệu ra. Nếu dữ liệu nằm trong nhiều IGIS-Packet thì nó đợi cho tới khi nhận đủ các IGIS-Packet và tập hợp lại thành dữ liệu hoàn chỉnh. Nếu dữ liệu đã được mã hoá hay nén thì nó sẽ thực hiện tiếp thao tác giải mã hoặc giải nén. Sau đó dữ liệu sẽ được gửi lên tầng trên (tức là tầng ứng dụng).
II.2.2 Cấu trúc tổng quát của một IGIS-Packet
Cấu trúc của một IGIS-Packet gồm 3 phần là kiểu packet (Packet Type), độ dài phần dữ liệu (Data Length) và dữ liệu (Data). Phần Packet Type và Data Length được xem như phần Header của gói IGIS-Packet.
N+4
0 …
Type Data Length=N Data
4 Bytes
1 Byte
5 Bytes Header
II.2.3 Các kiểu IGIS-Packet
Các kiểu IGIS-Packet được xác định bằng trường Type trong phần Header
Type là một số 8 bit mỗi bit tương ứng với một chức năng riêng. Có thể có nhiều kiểu IGIS-Packet khác nhau, thực hiện bằng phép OR các bit.
Packet Types
Bit 0
0 : Normal (không mã hoá)
1 : Encrypted (Đã mã hoá)
Bit 1
0 : NoZip (Không nén)
1 : Zip (Đã nén)
Bit 2
0 : End Sequence Packet
1 : Sequence Packet
Bit 3..7
Reserved
II.2.4 Cách lưu trữ giá trị độ dài dữ liệu trong trường DataLength
Trường DataLength xác định độ dài dữ liệu trong trường Data. Kích thước của trường DataLength là 4 bytes (32 bits). Đây là một số kiểu Integer được lưu trữ theo thứ tự byte cao trước, byte thấp sau.
Ví dụ: DataLength=20 (cơ số mười) hay DataLength=10100 (nhị phân)
Giá trị lưu trữ trong trường DataLength là như sau :
Byte 1
Byte 2
Byte 3
Byte 0
0000 0000 0000 0000 0000 0000 0001 0100
III. Mô hình thiết kế CSDL địa lý
III.1 Mô hình dữ liệu
Dữ liệu địa lý được lưu trữ trên CSDL Oracle có thể được thực hiện theo 2 mô hình Mô hình quan hệ đối tượng (Object-Relational Model) hoặc Mô hình quan hệ (Relational Model)
Mô hình quan hệ-đối tượng có nhiều thuận lợi hơn so với mô hình quan hệ bởi các lý do sau :
Cấu trúc lưu trữ dữ liệu không gian tốt hơn. Bởi các đối tượng hình học được lưu trữ trong một hàng đơn, cột đơn chứ không phải trong nhiều hàng nhiều cột như của mô hình quan hệ.
Hỗ trợ lưu trữ nhiều kiểu đối tượng hình học hơn so với mô hình quan hệ. Ngoài các kiểu cơ bản (Point, Line String, Polygon) còn thêm cả các kiểu (Arc Line Strings, Arc Polygons,…)
Có nhiều hiệu năng trong việc đánh chỉ số và truy vấn dữ liệu không gian.
Vì vậy mô hình CSDL địa lý sẽ được thực hiện theo mô hình quan hệ - đối tượng.
III.2 Xây dựng CSDL cung cấp dịch vụ thông tin địa lý
Trong phần trên đã đề cập về các khái niệm Public Service và Private Service
Mỗi dịch vụ này sẽ tương ứng với một CSDL trên Oracle. Việc phân loại dịch vụ Public và dịch vu Private sẽ được thông qua người quản trị IGIS-Server.
Trong mỗi CSDL có nhiều table (bảng) chứa dữ liệu địa lý. Mỗi table này sẽ tương ứng với một Layer trong bản đồ.
Cấu trúc của một table chứa dữ liệu địa lý tuân theo mô hình quan hệ-đối tượng như đã trình bày trong phần Cơ sở lý thuyết.
Tuy nhiên để các table này sẵn sàng cung cấp cho người sử dụng cuối thì tên của table phải có trong bảng sdo_geom_metadata .
IV. Phương pháp trao đổi dữ liệu giữa IGIS-Server và Oracle
Oracle cung cấp một giao diện lập trình ứng dụng chuẩn API là OCI (Oracle Cal Interface) cho phép các chương trình ứng dụng được viết bằng ngôn ngữ C có thể giao tiếp được với một hoặc nhiều Oracle Server. Đây là các thư viện được viết dưới dạng DLL sẽ được kết nối với chương trình khi chạy.
Mặc dù ODBC là một chuẩn của Microsoft thường được sử dụng để truy nhập CSDL. Cách tiếp cận ODBC đạt được tính khả chuyển cao nhưng có một số hạn chế. Nếu CSDL địa lý được thiết kế theo mô hình quan hệ thì việc sử dụng ODBC là một phương pháp tốt. Nhưng nếu CSDL được thiết kế theo mô hình quan hệ - đối tượng nghĩa là không tuân theo mô hình quan hệ thuần tuý. Hay trong mô hình này việc lưu trữ các dữ liệu không gian được tổ chức theo từng đối tượng (object). Lúc này rất khó có thể sử dụng ODBC để thao tác được trên các đối tượng này.
Giao diện OCI cho phép thực hiện đầy đủ các thao tác với CSDL trên Oracle Server. Các thao tác này không chỉ là thực hiện các lệnh SQL mà còn cả trên các đối tượng.
Tuy nhiên nếu CSDL Oracle và IGIS-Server nằm trên các máy khác nhau, thì cần cài đặt Net8 Client trên máy IGIS-Server và Net8 Server trên máy đặt CSDL Oracle. Net8 là giao thức truyền thông của Oracle (phiên bản Oracle 8i) để truy nhập CSDL từ xa.
Vì vậy, IGIS-Server sẽ giao tiếp với Oracle bằng OCI thông qua giao thức Net8 .
V. Thiết kế chương trình ứng dụng IGIS-Client
IGIS-Client là chương trình Java Applet sẽ được tải về (download) và chạy trên Browser nằm trên máy của người sử dụng. Vì vậy cần đáp ứng được các tiêu chuẩn sau :
Giao diện chương trình có thể tuỳ biến được nhằm mục đích hỗ trợ cho người thiết kế trang Web có thể biến đổi theo ý muốn.
Kích thước chương trình không quá lớn đảm bảo tốc độ nạp về là đủ nhanh.
Giao diện thuận tiện với người sử dụng trong việc lựa chọn thực hiện các chức năng của hệ thống
Chương trình Java được tổ chức dưới dạng các class. Mỗi class là một đối tượng chứa các thuộc tính và các phương thức thực hiện các chức năng khác nhau.
V.1 Giao diện chương trình
Giao diện của chương trình Java chạy trên các trình duyệt Web được thể hiện dưới dạng các Applet. Mỗi Applet được nhúng vào trong trang Web bầng trường cùng với một vài tham số nếu có.
Giao diện chương trình IGIS-Client gồm 2 Applet. Một applet là cửa sổ chính của chương trình và một applet khác sẽ đóng vai trò như một thanh công cụ.
Việc phân chia này cho phép người thiết kế trang Web có thể đặt chúng tại các vị trí thích hợp.
MA
I
N
TOOL
BAR
TITLE BAR
TOOL BAR
VIEW
STATUSBAR
V.2 Sơ đồ các class chính trong chương trình
GisApp.class
(extends Applet)
ViewMap
GisToolBar
LoginDlg
LayerChoice
(extends Frame)
MessageDialog
(extends Dialog)
OpenMapWnd
(extends Frame)
ObjectInfoWnd
(extends Frame)
ClientSocket
(extends GisMap)
Communication
Socket
(Java API)
GisMap
MainToolbar
(extends Applet)
Layer
ServiceDef
GisToolbar
Lớp applet sẽ đặt trong trang Web
Lớp chứa các lớp khác
Lớp được đặt trong một lớp khác
V.3 Chức năng của các class
GisApp : kế thừa từ lớp Applet của Java.
Làm cửa sổ chính là giao diện của chương trình chứa các thanh toolbar, statusbar, title bar và kiểm soát các sự kiện bàn phím, chuột.
Chứa các class khác thực hiện các chức năng của chương trình hoặc hiển thị các thông điệp cho người sử dụng
Nhận các tham số đầu vào :
BackgroundColor : Mầu nền của cửa sổ
ForeColor : Mỗu chữ
FontName : Tên font hiển thị
FontStyle : Kiểu font
FontSize : Kích thước font
Title : Tên của tiêu đề
TitleBkgndColor : Mỗu nền vùng TitleBar
TitleColor : Mỗu chữ trên TitleBar
TitleFont : Kiểu font trên TitleBar
MapBackgroundColor : Mỗu nền của bản đồ
MapBorderColor : Mỗu biên của bản đồ
ToolbarBkgndColor : Mỗu nền của Toolbar
StatusbarBkgndColor : Mỗu nền thanh Statusbar
Logo1,logo2,log3 : Tên các file ảnh logo
Port : cổng của IGIS-Server
Nếu không xác định các tham số này thì sẽ sử dụng giá trị ngầm định.
MainToolbar : được kế thừa từ lớp Applet. Lớp này cung cấp một giao diện lựa chọn các công cụ trên bản đồ.
ClientSocket : thực hiện giao tiếp với IGIS-Server, lấy các Service trên IGIS-Server, quản lý các layer trong bản đồ hiện tại. Tạo các request và xử lý các response từ IGIS-Server.
ViewMap : hiển thị bản đồ và các thông tin có liên quan như tỷ lệ bản đồ, vị trí thực (thông qua vị trí chuột) trên bản đồ.
GisMap : chứa các Service hiện có và các layer trong một Service
ServiceDef, Layer : lưu các thông tin về một Service và một layer
Communication : thực hiện chức năng của tầng truyền thông IGIS-Client
GisToolbar : là thanh công cụ trên GIS Applet. Quản lý các việc lựa chọn các chức năng của hệ thống
LoginDlg : hộp thoại yêu cầu người sử dụng vào các thông tin đăng nhập như UserName và Password.
MessageDlg : hộp thoại hiển thị các thông điệp như báo lỗi, thông báo,…
OpenMapWnd, LayerChoice : là các cửa sổ cho phép người sử dụng lựa chọn mở một bản đồ, thêm hay gỡ bỏ hay một layer.
ObjectInfoWnd : cửa sổ hiện các thông tin thuộc tính của các thực thể trên bản đồ khi người sử dụng chọn công cụ xem thông tin tại một vị trí trên bản đồ.
VI. Thiết kế chương trình ứng dụng IGIS-Server
Chương trình IGIS-Server thực hiện các nhiệm vụ chính sau :
Giao tiếp với các ứng dụng IGIS-Client
Giao tiếp với DBMS Oracle
Thực hiện các chức năng GIS và cung cấp cho các ứng dụng IGIS-Client
Hỗ trợ cho người quản trị có thể cấu hình được IGIS-Server (thông số port, giới hạn số kết nối, thư mục gốc của WebServer, các thông tin cho logging và một số thông số cần thiết khác).
Hỗ trợ quản lý các dịch vụ GIS, phân chia thành các public service và private service, phân quyền truy nhập vào CSDL GIS tại nhiều mức khác nhau (Mức dịch vụ, mức layer) và quyền truy nhập cho từng End User riêng.
VI.1 Sơ đồ mô tả hoạt động của IGIS-Server (trang sau)
Start
Init Database and Data
Create the master socket
Listen
Accept ?
-
+
Create the slave socket
Create the IGIS-Client thread
Finish
Sơ đồ mô tả hoạt động của IGIS-Server
VI.2 Sơ đồ mồ tả hoạt động của IGIS-Client thread ()
Begin
Init Datas
Wait for the requests
-
Quit ?
-
+
+
Process Requests
Request ?
End
Sơ đồ mô tả hoạt động của IGIS-Client Thread
VI.3 Xây dựng tập các modul chương trình giao tiếp với Oracle và thực hiện các chức năng GIS
Đây là một tập các modul chạy trên IGIS-Server thực hiện riêng các chức năng về GIS và cả việc truy nhập tới các Oracle Server. Các modul này phải đảm bảo các yêu cầu sau:
Có vai trò như một thư viện các hàm và thủ tục chuyên thực hiện các thao tác về GIS .
Các modul này là sẵn sàng cung cấp cho các chương trình bên ngoài.
Đảm nhiệm chức năng quản lý CSDL địa lý và giao tiếp với CSDL Oracle. Điều này có nghĩa là chương trình cũng phải có khả năng đồng bộ hoá các thread khi có yêu cầu truy nhập vào cùng một dữ liệu GIS do chương trình quản lý.
Thư viện này sẽ được gọi bởi các IGIS-Client thread khi có yêu cầu thực hiện một chức năng GIS.
Việc thực hiện các chức năng này sẽ được đưa vào từng class riêng. Mỗi class đảm nhiệm một nhóm các chức năng có liên quan với nhau (ví dụ có chung phần dữ liệu).
VI.3.1 Phân loại các lớp theo từng chức năng
CSDBManager : sẽ quản lý toàn bộ các CSDL Oracle mà chương trình truy nhập đến. CSDBManager sẽ chứa một danh sách các class CSDatabase sử dụng trong chương trình.
CSDatabase : có chức năng giao tiếp với một CSDL Oracle. Lớp này chứa các thông tin và các dữ liệu về CSDL. Ví dụ bảng Sdo_Geom_MetaData, thông tin đăng nhập vào CSDL (UserName,Password, Database), tập các table đã được nạp,…
CMapLayer : Đây là lớp lưu trữ dữ liệu của một layer hay một table. Mỗi layer do lớp này quản lý sẽ được chia sẻ cho nhiều IGIS-Client thread. Trong CMapLayer lại gồm có nhiều đối tương CMapGeometry.
CMapLayerEx : Lớp CMapLayer không có khả năng vẽ mà thao tác này phải được tách riêng trong một class đó là CMapLayerEx.
CMapGeometry : chứa dữ liệu của một đối tượng Sdo_Geometry trong layer. Lớp này chia đối tượng Sdo_Geometry thành nhiều phần tử có kiểu khác nhau như kiểu đường tròn (CCircleElem), kiểu đa giác (CPolyElem), kiểu chữ nhật (CRectElem),…
CGisMap : Đây là lớp thực hiện tất cả các chức năng của GIS như tạo một bản đồ, phóng to, thu nhỏ bản đồ, lấy thông tin về các thực thể trên bản đồ,…
VI.3.2 Xuất dữ liệu vector thành file ảnh raster
Cấu trúc lưu trữ dữ liệu trên Oracle là cấu trúc dữ liệu Vector, để chuyển đổi thành file ảnh raster, chương trình phải thực hiện việc vẽ và lưu thành file ảnh tương ứng. Về các format của file ảnh có nhiều loại khác nhau (gif,jpg,bmp,…) và việc lựa chọn các khuôn dạng này cần thoả mãn các yêu cầu sau :
Chất lượng ảnh tốt.
Kích thước file ảnh nhỏ để dễ dàng truyền trên mạng.
Như vậy, file ảnh ở dạng nén là thuận tiện nhất. Hiện nay có 2 loại file ảnh thường được sử dụng trên Web là file ảnh theo chuẩn GIF (Graphical Interchange Format) và chuẩn JPG (Joint Photographic Expert Group). File ảnh JPG thường có kích thước nhỏ gọn hơn GIF nên ta sẽ chọn chuẩn ảnh này. Cũng cần chú ý rằng quá trình chuyển đổi thành file JPG thường chậm hơn so với file GIF và chất lượng ảnh có thể bị sai lệch khi chọn một tỷ lệ nén lớn (chấp nhận mất một phần thông tin).
Việc lưu dữ liệu thành file ảnh bitmap không khó nhưng thuật toán chuyển đổi từ bitmap thành file JPG là khá phức tạp và cần phải hiểu được một số thuật toán nén.
Do giới hạn về thời gian, việc thực hiện đồ án sẽ không đi sâu vào vấn đề này mà sẽ sử dụng một thư viện xử lý ảnh có sẵn trên Internet thực hiện chuyển đổi từ dạng bitmap do chương trình tạo ra thành dạng JPG.
VI.3.3 Sơ đồ minh hoạ quan hệ giữa các lớp
CSDBManager
CSDatabase
CSDatabase
CSDatabase
…
CMapLayer
…
CMapLayer
CMapLayer
…
CMapGeometry
CMapGeometry
CMapGeometry
…
CRectElem
CCircleElem
CPolyElem
CMapLayerEx
CGisMap
Phần IV - Cài đặt chương trình và thử nghiệm
Nội dung :
I. Cài đặt hệ thống
II. Thử nghiệm
I. Cài đặt hệ thống
I.1 Cài đặt Oracle Server
Việc cài đặt Oracle thường được hướng dẫn rất chi tiết và đầy đủ trong các tài liệu đi kèm. Tuy nhiên để hệ thống có thể hoạt động được, khi cài đặt cũng cần phải chú ý xác định đúng các thành phần cần phải có trong hệ thống. Sau đây sẽ giới thiệu mang tính chất giới thiệu chung và các chỉ tiêu cần thiết cho việc cài đặt các sản phẩm của Oracle.
Cài đặt Oracle8i (bản Oracle8i Enterprise Edition for Windows NT) :
Yêu cầu phần cứng :
Phần cứng
Yêu cầu
CPU
Pentium 133,166 hoặc lớn hơn (nên từ Pentium 200)
RAM
Tối thiểu là 64 MB (cho Minimal và Custom) Còn với Typical : 96 MB (khuyến nghị 128 MB)
Hard Disk
720 MB (Typical), 587 MB (Minimal)
Yêu cầu phần mềm : hệ điều hành Windows NT
Yêu cầu các thành phần sau cần có khi cài đặt :
Oracle8i Server
Net8 Server : hỗ trợ kết nối từ xa
Net8 Client : nếu cần thực hiện kết nối tới CSDL Oracle trên máy khác
Oracle Spatial : quản lý và lưu trữ dữ liệu GIS.
I.2 Cài đặt Web Server
Tại máy chủ cung cấp dịch vụ GIS sẽ được cài đặt một phần mềm Web Server. Với hệ thống hiện tại thì có thể sử dụng bất kỳ một phần mềm Web Server nào đều được.
Sau đây là một số phần mềm chính :
Phần mềm Web Server của Microsoft : Internet Information Server (trên Windows NT), Microsoft Peer Web Services (Windows NT Workstation) hay Personal Web Server (Windows 95/98).
Phần mềm Web Server của Oracle.
Phần mềm Web Server của Netscape.
I.3 Cài đặt chương trình IGIS-Client
Chương trình IGIS-Client là một chương trình Java Applet gồm các phần sau :
Tập các file *.class : đây là mã byte code đã được biên dịch từ chương trình nguồn.
Tập các file ảnh : các file này được sử dụng trong việc hiển thị giao diện chương trình
Tập các file biểu tượng : các biểu tượng cần sử dụng khi hiển thị cửa sổ.
Các file này sẽ được đặt trong một thư mục riêng trên máy chủ Web Server
Để sử dụng được chương trình cần soạn thảo trang Web và thiết lập trường để thiết lập lời gọi tới chương trình IGIS-Client khi trang Web này được tải xuống máy của người sử dụng.
Ví dụ :
I.4 Cài đặt chương trình IGIS-Server
Vì lý do an toàn, một chương trình Java Applet chỉ được phép thực hiện các kết nối tới máy mà chúng được tải xuống nên chương trình IGIS-Server phải được cài đặt trên máy Web Server.
Chương trình IGIS-Server thực hiện kết nối tới các Oracle Server. Vì vậy trước hết cũng cần phải cài đặt phần mềm Oracle trên máy này. Trên cùng một máy có thể cài đặt cả Oracle Server và Oracle Client.
Các thành phần không thể thiếu khi cài đặt Oracle cho IGIS-Server là :
Oracle8i Server/Client
Net8 Client : nếu thực hiện kết nối tới các Oracle Server trên máy khác
Oracle Call Interface
Cấu hình phần cứng : cho IGIS-Server và cho cả Oracle Client.
Phần cứng
Yêu cầu
CPU
Tối thiểu Intel 80486
RAM
32 MB hoặc lớn hơn
Hard Disk
Đủ cho phần mềm Oracle Client, và không gian bộ nhớ ảo khi chạy IGIS-Server (Phụ thuộc vào khối lượng dữ liệu GIS)
Phần mềm : hệ điều hành Windows9x, 2000, Windows NT.
II. Thử nghiệm
Do chưa có điều kiện thử nghiệm trên mạng Internet, nên trước mắt sẽ thực hiện trên mạng LAN tại phòng NCKH Mạng Viễn Thông thuộc Viện Khoa Học Kỹ Thuật Bưu Điện. Bao gồm tất cả 6 máy : 1 máy chủ và cũng là máy khách kết hợp với 5 máy khác.
Cấu hình máy chủ là : Pentium 2 450 MHz, RAM 128 MB, Virtual Memory 1GB, hệ điều hành Windows NT 4.0, Web Server là Internet Information Server, cài đặt Oracle8i.
Các máy client khác : đều sử dụng hệ điều hành Windows, Intel CPU.
II.1 Chương trình thử nghiệm
Việc thử nghiệm hệ thống gồm các công việc sau :
Kiểm tra hoạt động của hệ thống với các trình duyệt Web khác nhau. Cụ thể là với Internet Explorer của Microsoft và Netscape Navigator của Netscape.
Kiểm tra trên nhiều máy khác nhau và đánh giá khả năng phục vụ đồng thời nhiều người sử dụng
Kiểm tra tốc độ xử lý của hệ thống khi xử lý nhiều chức năng cùng một lúc
Kiểm tra khả năng đồng bộ hoá, xử lý tương tranh giữa các tiến trình khác nhau.
II.2 Một vài hình ảnh trong quá trình thử nghiệm
Màn hình hiển thị chương trình IGIS-Server
Màn hình hiển thị chương trình Java Applet
Màn hình hiển thị một bản đồ trong trạng thái xem toàn bộ
II.3 Kết quả thử nghiệm
Sau khi thử nghiệm hệ thống cho các kết quả là :
Hệ thống hoạt động tốt với cả 2 trình duyệt Web là IE và Netscape
Khi có nhiều yêu cầu đến cùng một lúc hệ thống bên Server vẫn làm việc tốt, các chức năng yêu cầu được thực hiện một cách song song và cho kết quả khá đều nhau.
Tốc độ xử lý với các bản đồ kích thước nhỏ (vài MB) là khá nhanh nhưng với các bản đồ có kích thước lớn (vài chục MB) vẫn còn chậm.
Hệ thống có khả năng đồng bộ hoá các tiến trình khi truy nhập vào cùng một tài nguyên. Ví dụ : khi có 2 yêu cầu mở cùng một bản đồ đến tại một thời điểm, và dữ liệu cho bản đồ này là chưa được nạp. Lúc này chúng sẽ được đồng bộ theo trình tự một tiến trình nạp dữ liệu và một tiến trình kia sẽ phải chờ đợi. Sau khi đã đủ dữ liệu cả 2 tiến trình này đều được phép chạy song song với nhau (cùng đọc dữ liệu và trả kết quả).
Phần V- kết luận
Nội dung :
I. Đánh giá chung
II. Phương hướng phát triển
III. Kết luận
I. Đánh giá chung
Sau một quá trình thực hiện, đồ án đã đạt được một số kết quả nhất định :
Xây dựng được hệ thống cung cấp các thông tin bản đồ thông qua môi trường mạng, bao gồm các chức năng sau :
Xem mới một bản đồ, thêm và gỡ bỏ các Layer trên bản đồ.
Tích hợp một số công cụ xem bản đồ là : phóng to , thu nhỏ bản đồ, di chuyển vị trí xem bản đồ (pan), nhìn toàn bộ bản đồ.
Xem và soạn thảo các thông tin thuộc tính của các đối tượng trên bản đồ.
Hoàn thành bước phân tích, thiết kế và viết các modul thực hiện các chức năng của hệ thống và các chức năng trao đổi dữ liệu giữa các tầng (IGisClient với IGisServer, giữa IGisSever và Oracle Server). Các chức năng này đều hoạt động tốt.
Phân chia giữa các dịch vụ GIS và kiểm tra quyền sử dụng dịch vụ đối với các end user.
Đáp ứng nhu cầu sử dụng cho nhiều Client, có khả năng đồng bộ hoá xử lý tương tranh.
Có thể truy nhập tới dữ liệu GIS trên nhiều Oracle Server khác nhau.
Tuy nhiên hệ thống vấn còn có mang nhiều điểm hạn chế :
Thời gian thực hiện các chức năng GIS trên các bản đồ lớn vẫn còn chậm
Hệ thống chưa được tối ưu hoá về kích thước chương trình (đặc biệt là với chương trình Java Applet) cũng như chế độ sử dụng tiết kiệm bộ nhớ, tối ưu hoá các thuật toán truy vấn, vẽ, tìm kiếm trên bản đồ,…
Chưa đánh giá được chính xác có thể phục vụ được tối đa là bao nhiêu Client với một cấu hình phần cứng xác định.
Chưa thực hiện được chức năng phân quyền truy nhập tới CSDL tại nhiều mức khác nhau. Chưa tích hợp modul quản lý các end user.
Chưa xây dựng các modul Security đảm bảo tính an toàn và bảo mật cho hệ thống.
Chưa xác định được là hệ thống có hoạt động tốt trên môi trường mạng Internet hay không.
II. Phương hướng phát triển
Trong giai đoạn tới, phương hướng tiếp tục phát triển đề tài là khắc phục được các điểm hạn chế trên. Nếu sử dụng được trên thực tế thì vấn đề triển khai các chế độ về an toàn, bảo mật là rất cần thiết. Bởi lẽ môi trường mạng Internet là thực sự phức tạp, có nhiều mối đe doạ từ nhiều phía có thể tấn công vào hệ thống đặc biệt là vấn đề bảo vệ các CSDL GIS hay vấn đề giữ kín các thông tin bí mật như User Name, Password,…
Các ứng dụng GIS là rất nhiều, đa dạng và với mỗi lĩnh vực chuyên môn khác nhau lại có nhiều bài toán khác nhau. Hướng phát triển mới bao gồm một số các công việc sau :
Tích hợp thêm nhiều chức năng khác trên bản đồ như các chức năng soạn thảo bản đồ : tạo các bản đồ mới, vẽ lên bản đồ, cập nhật lại các đối tượng không gian trên bản đồ,…
Mở rộng sang các bài toán có tính chuyên môn khi áp dụng trong các lĩnh vực cụ thể. Ví dụ trong quản lý mạng cáp là các bài toán phát triển thuê bao, dẫn độ thuê bao, tìm kiếm số điện thoại,…
Một bài toán rất thông dụng trên bản đồ và có thể được áp dụng trong nhiều lĩnh vực khác nhau đó là bài toán tìm đường đi ngắn nhất. Ví dụ các nhà kinh doanh muốn xác định con đường đi tối ưu nhất để vận chuyển hàng hoá giữa các chi nhánh, cơ sở khác nhau. Hay trong lĩnh vực Bưu điện khi cần lắp mới một tuyến cáp xuống các địa điểm khác nhau trên những trục cáp chính thì việc tìm kiếm đường đi ngắn nhất cũng có thể tiết kiệm được rất nhiều cho chi phí, tiến độ lắp đặt. Vì vậy, đây là một bài toán có nhiều ứng dụng rất thiết thực và việc nghiên cứu thực hiện bài toán này cũng rất quan trọng.
III. Kết luận
Sau một thời gian thực hiện đồ án, tuy đó không phải là một thời gian dài nhưng cũng đã đem lại một số kết quả tốt và chứng tỏ được tính khả thi của đề tài. Các chức năng GIS chỉ là các thao tác cơ bản trên bản đồ. Mặc dù đây thực sự chỉ là một phần nhỏ trong một phạm vi ứng dụng rộng lớn của GIS. Nhưng đó cũng là bước đi đầu tiên nếu thành công thì sẽ đem lại nhiều thuận lợi trong các bước phát triển tiếp theo. Điều này giống như trong dân gian đã từng nói “Vạn sự khởi đầu nan”.
Nhìn ra trước mắt thì khó khăn cũng còn nhiều và con đường tìm kiếm giải pháp tối ưu nhất vẫn còn bỏ ngỏ.
Trên thế giới, đề tài này đã được tập trung phát triển bởi nhiều công ty GIS có tầm cỡ. Đã có những sản phẩm rất thành công trong lĩnh vực này. Tuy nhiên, chi phí bỏ ra để mua chúng là khá đắt. Đặc biệt là đối với Việt Nam, khi nhu cầu sử dụng GIS ngày một tăng, nhưng để bỏ ra một số tiền như vậy cũng là một khó khăn không nhỏ.
Vì vậy, làm thế nào để đáp ứng được các yêu cầu này trong hoàn cảnh của nước ta hiện nay cũng là một vấn đề cần thiết.
Tài liệu tham khảo
Tài liệu tham khảo tiếng Việt
[1] Nguyễn Thúc Hải, Mạng máy tính và các hệ thống mở, Nhà xuất bản giáo dục,
1999.
[2] Nguyễn Hồng Sơn, Trần Trọng Tuệ, Nghiên cứu tích hợp hệ thống đồ hoạ theo
mô hình Client/Server với hệ quản trị cơ sở dữ liệu Oracle áp dụng quản lý
mạng ngoại vi cho bưu điện tỉnh, 3/2000.
[3] Trần Tiến Dũng, Giáo trình lý thuyết và bài tập JAVA, Nhà xuất bản giáo dục,
1999.
Tài liệu tham khảo tiếng Anh
[4] David J.Kruglink, Inside Visual C++, Microsoft Press, 1997.
[5] George Coulouris, Jean Dollimore, Tim Kindberg, Distributed Systems
Concepts and Design, Addison-Wesley Publishers Ltd, 1994.
[6] Information Systems Management, The article The Critical Choice of Client
Server Architecture: A Comparison of Two and Three Tier Systems , 1995.
[7] Ivor Horton, Beginning Java, Wrox Press Ltd.
[8] Joseph O. Nattey , The Article Types Of Client/server Architecture, 1996.
[9] KC. Hopson, Stephen E.Ingram, Developing Professional Java Applets,
Sams.net Publishing, 1996.
[10] Len Fertuck, Systems Analysis and Design with CASE Tools, Wm C. Brown
Publishers, 1992.
[11] Microsoft, MSDN January 2000 .
[12] Oracle Documentation Library, Oracle8i Concepts Release 8.1.5, Oracle Call
Interface Programmer’s Guide Release 8.1.5, Oracle8i Spatial User's Guide
and Reference Release 8.1.5.
Địa chỉ Internet
[13]
[14]
[15]
[16]
Các file đính kèm theo tài liệu này:
- DAN335.doc