Đồ á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

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.

doc110 trang | Chia sẻ: oanh_nt | Lượt xem: 1312 | Lượt tải: 0download
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:

  • docDAN335.doc