- GetMap là giao thức bắt buộc phải có trong WMS. Nhiệm vụ của GetMap là trả về một bản đồ dƣới dạng ảnh (ảnh bản đồ) trong một phạm vi địa lý và theo các tham số đƣợc định nghĩa cụ thể. GetMap đƣợc gọi bởi một client để nhận về một tập hợp các pixels. Các pixels này chứa một ảnh của một bản đồ trong một vùng địa lý (không gian) hoặc một tập các đối tƣợng đồ hoạ nằm trong vùng địa lý cụ thể. Yêu cầu GetMap cho phép các Web Map Client chỉ ra một lớp thông tin cụ thể, hệ quy chiếu không gian (SRS), khu vực địa lý, và các tham số khác quy định định dạng dữ liệu trả về. Trên cơ sở các yêu cầu GetMap từ Web Map Client mà một Web Map Server sẽ trả về các kết quả theo chỉ dẫn trong yêu cầu của GetMap.
-GetCapabilities cũng là giao thức bắt buộc phải có trong WMS. GetCapabilities trả về tài liệu dạng XML mô tả Web Map Server. Các mô tả bao gồm nội dung thông tin mà WMS có thể phục vụ, các tham số mà Web Map Server có thể nhận.
-GetFeatureInfo có thể có hoặc không trong WMS. GetFeatureInfo trả về thông tin liên quan đến một đối tƣợng địa lý cụ thể đƣợc hiển thị trên bản đồ tại vị trí (x,y). Nếu một Web Map Server hỗ trợ dịch vụ này thì bản đồ mà nó trả về đƣợc gọi là bản đồ có khả năng truy vấn thông tin và một Web Map Client có thể yêu cầu thông tin về đối tƣợng trên một bản đồ bằng cách thêm vào URL các tham số chỉ ra một vị trí (x,y) và số đối tƣợng có thể trả về thông tin.
2.2.4. Web Feature Service (WFS)
Một Web Feature Server (WFS) cung cấp các đối tƣợng địa lý cho client. Nó cũng có thể cho phép các client thay đổi và thêm các đối tƣợng vào cơ sở dữ liệu. Khi WMS cung cấp một hình ảnh của dữ liệu thì WFS cung cấp dữ liệu thực đƣợc mã hóa trong GML.
Một WFS cung cấp 3 request:
- GetCapabilities (bắt buộc) - Đây là request cơ bản cho phép Client nhận ra các dịch vụ và kiểu dữ liệu do WFS hỗ trợ.
- DescribeFetuareType (bắt buộc) - Cho phép mô tả kiểu đối tƣợng. Khi bản đồ muốn thêm một đối tƣợng mới thì nó phải biết cấu trúc của đối tƣợng đó.
- GetFeartue (bắt buộc) - Đây là dữ liệu thật đƣợc trả về client sau request đã đƣợc nhận.
Ngoài ra, theo [5] “WFS còn cho phép Client thực hiện các giao tác tạo, xóa, sửa các đối tượng”
2.3. Công nghệ mã nguồn mở dựng để xây dựng WebGIS 2.3.1. PostgreSQL 2.3.1. PostgreSQL
PostgreSQL là ứng dụng mã nguồn mở và hƣớng đối tƣợng. PostgreSQL có thể chạy trên nhiều hệ điều hành nhƣ Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), và Windows. PostgreSQL có các tính năng phức tạp nhƣ kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi phục dữ liệu tại từng thời điểm (Recovery), quản lý dung lƣợng bảng (tablespaces), sao chép không đồng bộ, giao dịch lồng nhau (savepoints), sao lƣu trực tuyến hoặc nội bộ, truy vấn phức tạp và tối ƣu hóa, và viết trƣớc các khai báo để quản lý và gỡ lỗi. PostgreSQL hỗ trợ bộ ký tự quốc tế, hỗ trợ bảng mã nhiều byte, Unicode, và cho phép định dạng, sắp xếp và phân loại ký tự văn bản (chữ hoa, thƣờng). PostgreSQL còn đƣợc biết đến với khả năng mở rộng để nâng cao cả vế số lƣợng dữ liệu quản lý và số lƣợng ngƣời dùng truy cập đồng thời.
2.3.1.1. Các công cụ quản trị PostgreSQL
- Công cụ dòng lệnh psql
Công cụ dòng lệnh dùng phổ biến trong PostgreSQL là psql. Công cụ này cho phép ngƣời dùng có thể kết nối tới cơ sở dữ liệu, thực hiện các truy vấn và quản lý cơ sở dữ liệu.
- Công cụ đồ họa pgAdmin III
pgAdmin III là giao diện đồ họa quản trị CSDL trong PostgreSQL. Đây là công cụ quản lý cơ sở dữ liệu mạnh mẽ, miễn phí và cung cấp nhiều tính năng nhƣ: Tạo, xóa sao chép và phục hồi database hoặc tables. Xem và cập nhật dữ liệu vào table.
2.3.1.2. Phần mở rộng PostGIS
- PostGIS là một module mở rộng bổ sung vào PostgreSQL hỗ trợ quản lý dữ liệu không gian.
- PostGIS hỗ trợ lƣu trữ dữ liệu không gian, các hàm phân tích không gian nhƣ: Crosses(), Touches(), Intersection(), Union()…
2.3.2. Mapbuilder
Mapbuilder là ứng dụng mã nguồn mở sử dụng để triển khai Web Map Client. Mapbuilder sử dụng chuẩn OpenGIS để kết nối với server và sử dụng javascript và XLS để hiển thị dữ liệu bản đồ trên trình duyệt web.
- MapBuilder - Lib: Là một thƣ viện nguồn mở của các widgets bản đồ trên trình duyệt (browser based mapping widgets).
- OpenLayer: Cung cấp một giao diện chung đến một số các lớp thông tin bản đồ khác nhau (nhƣ Google, Yahoo, MSN, WMS,…). Nó đƣợc sử dụng bởi một số map rendering widgets.
- Sarissa: Là một thƣ viện ECMAScript library đóng gói (wrapper) các hàm XML APIs nguyên thuỷ. Thƣ viện này bao gồm các lớp đóng gói XML document, tải tài liệu XML từ URL hoặc một xâu, chuyển đổi bằng XSLT, truy vấn dựa trên Xpath.
- Overlib: Là một thƣ viện JavaScript cung cấp các popup nhỏ giống nhƣ tooltips.
- Walter Zorn’s JS Graphics: Thƣ viện JavaScript VectorGraphics cung cấp khả năng đồ họa cho JavaScript.
- Scalebar: Công cụ cung cấp thanh tỉ lệ (calebar tool)
- Single file compression: Các hàm để nén toàn bộ thƣ viện thành một file MapbuilderCompressed.js để tăng tốc độ tải mã JavaScipts về trình duyệt và tăng tốc độ biên dịch JavaScipts của trình duyệt.
a. Mục tiêu của Mapbuilder - Client là trình duyệt web - Giảm tải cho server - Dễ dàng tích hợp - Giảm băng thông
- Sử dụng Javascript, XML và XLS - Thiết kế theo mô hình mobule - Mã nguồn mở
- Thu hút cộng đồng phát triển b. Mô hình Mapbuilder
Mapbuider đƣợc thiết kế theo mô hình Model-View-Control (MVC). Không giống nhƣ các hệ quản trị nội dung khác, Mapbuilder lƣu trữ tất cả các model của nó ở trình duyệt web bởi vậy sự tƣơng tác với server đƣợc giảm bớt.
Model đƣợc hình dung nhƣ là thông tin của ứng dụng, điển hình là một tài liệu XML đƣợc nhận về từ server trong một file có form không thay đổi từ một URL. Các Model cung cấp phƣơng pháp “get” hoặc “set” cho việc update thông tin và trạng thái của model.
View là phần hiển thị thông tin trong mỗi model. View có thể tự bản thân nó đăng ký với một model dƣới dạng một thông báo. Đây chính là điển hình sử dụng “listener” làm phƣơng pháp triệu gọi các kiểu sự kiện. View có thể cung cấp cho ngƣời sử dụng có thể gửi các yêu cầu đến ngƣời quản trị, còn trong Mapbuilder thì view gọi đến các widgets.
Controller tiến hành biên dịch các yêu cầu của view trong các action bởi model. Controller có thể sửa đổi và trạng thái của một model. Trong Mapbuilder Controller gọi đến các tool.
Cách thức ngăn cách của model và view cho phép các multile view đƣợc sử dụng cùng một model. Đây là cơ chế làm việc để cho việc mở rộng ứng dụng đƣợc dễ ràng hơn.
MapBuilder có thể gọi ra và lƣu trữ một vài model khác nhau trong cùng một ứng dụng web. Trong thứ tự cung cấp của một vài cấu trúc có các model khác nhau sẽ thực hiện các công việc khác nhau, một model có thể chứa một mảng của các model khác trong các nút con.