Mô hình hoạt động của WebGIS được chia ra làm 2 phần: các hoạt động ở phái client – client side và các hoạt động xử lý ở phái server (server side)
- Server side : cho phép người dùng gửi yêu cầu lấy dữ liệu và phân tích trên máy chủ. Máy chủ sẽ thực hiện các yêu cầu và gửi trả dữ liệu hoặc kết quả cho người dùng.
- Client side : cho phép người dùng thực hiện vài thao tác phân tích trên dữ liệu tại chính máy người dùng.
- Server và client có thể kết hợp giữa client side và server side để phục vụ nhu cầu của người dùng.
2.3.4.1. Server side
Server side tập trung cung cấp dữ liệu GIS và phân tích trên một máy chủ (Server). Máy chủ này có khả năng truy cập dữ liệu và phần mềm để giải quyết yêu cầu của máy khách. Máy khách sẽ chỉ sử dụng rất ít tiến trình, chủ yếu là gửi các yêu cầu và hiển thị kết quả. Trong WebGIS đôi khi thuật ngữ mapserver chỉ ra kiến trúc được dùng là server- side, mà trong đó người dùng gửi yêu cầu cần map để hiển thị, thì sẽ được phục vụ bởi server. Kiến trúc server side dựa trên khả năng trình duyệt web của người dùng có thể gửi các yêu cầu đến các phần mềm GIS trên server thông qua internet. Để có thể giao tiếp với các ứng dụng WebGIS đặt trên server, web server có thể sử dụng các chuẩn giao tiếp phổ biến như CGI, Java…
Ưu điểm :
- Nếu máy chủ có khả năng xử lý cao, người dùng sẽ truy cập được các dữ liệu lớn và phức tạp thay vì phải xử lý trên máy khách.
- Nếu máy chủ có khả năng xử lý cao được dùng, các chức năng phân tích GIS phức tạp sẽ được xử lý nhanh hơn thay vì xử lý trên máy khách.
Nhược điểm :
- Bất cứ các yêu cầu dù lớn hay nhỏ đều phải được gửi về cho máy chủ xử lý và các kết quả cũng được gửi trả lại cho máy khách hiển thị thông qua Internet.
- Ảnh hưởng đến băng thông khi truyền tải dữ liệu lớn. - Không tận dụng được ưu thế của máy cục bộ.
- Server side thường được sử dụng cho các hệ thống lớn trên toàn cầu.
2.3.4.2. Client side
Client side chuyển đổi các yêu cầu sang được xử lý tại máy khách. Máy khách phải có khả năng đủ mạnh để xử lý các yêu cầu này.Thay vì phải bắt máy chủ xử lý tất cả thì một số chức năng GIS sẽ được tải về máy khách, trú ngụ ở đó và dữ liệu được xử lý tại máy khách.
Có 2 dạng triển khai của kiến trúc client side như sau:
- GIS applet được phân phối đến client khi có yêu cầu
o Các xử lý GIS sẽ được server cung cấp cho phía client dưới dạng các chương trình thực thi nhỏ hoặc là các applet để có thể chạy được ở client
o Người dùng tạo ra một yêu cầu từ trình duyệt, yêu cầu được gửi tới server, server xử lý các yêu cầu
o Kết quả trả về cho client bao gồm các dữ liệu và các applet cần thiết để người dùng có thể làm việc trên dữ liệu đó
o Applet được viết bằng javascript, java… - GIS applet và các plug-in cố định ở client
o Các GIS applet cài đặt cố định ở client
o Trình duyệt web cài đặt một số các plug-in cần thiết
o Người dùng được thao tác trên dữ liệu họ dùng và phân tích chúng
Ưu điểm :
- Sử dụng được ưu thế của máy khách.
- Người dùng có thể điều khiển được các điều khiển xử lý dữ liệu.
- Người dùng có thể làm việc mà không cần phải gửi và nhận các yêu cầu qua Internet.
Nhược điểm :
- Việc tải các chức năng từ máy chủ như các Applets có thể bị trì hoãn, kéo dài. - Các dữ liệu lớn và phức tạp sẽ khó được xử lý trên máy khách nếu máy khách
không đủ mạnh.
- Các thủ tục GIS phức tạp sẽ khó thực hiện trên máy khách nếu máy khách không đủ mạnh.
- Người dùng sẽ không được huấn luyện (đào tạo) nếu muốn dùng dữ liệu hoặc các chức năng phân tích.
Client side thường được sử dụng cho các hệ thống nhỏ trong phạm vi cục bộ.
2.3.4.3. Kết hợp cả 2 chiến lược
Nếu dùng thuần Server side hoặc Client side thì sẽ gặp các giới hạn:
- Nếu server side đòi hỏi phải chuyển tải thường xuyên, thì các tác vụ của nó sẽ dễ làm giảm đến băng thông và đường truyền Internet.
- Client side thì lại có thể chiếm hết tài nguyên của máy khách. Một số chương trình sẽ thực hiện rất chậm do sự không phù hợp giữa các yêu cầu của các tiến trình và khả năng của máy.
Server side và client side có thể kết hợp với nhau để cho ra các kết quả lai phù hợp với khả năng của server và client.
- Các tác vụ đòi hỏi sử dụng database hoặc phân tích phức tạp sẽ được gán trên máy chủ.
- Các tác vụ nhỏ sẽ được gán ở máy khách.
Trong trường hợp này, cả máy chủ và máy khách cùng chia sẻ thông tin với nhau về sức mạnh và khả năng của chúng.
2.3.5. Trao đổi dữ liệu của hệ thống WebGIS
GIS đã ra đời từ khá lâu và các ứng dụng GIS đã được phát triển trên nhiều lĩnh vực khác nhau, mỗi ứng dụng này, dữ liệu GIS cũng được tạo ra, các dữ liệu này là rất lớn và tốn thời gian và công sức xây dựng. Việc chia sẻ nguồn tài nguyên dữ liệu sẽ làm giảm chi phí xây dựng và quản lý dữ liệu GIS.
Trong mô hình kiến trúc WebGIS đơn thì dữ liệu GIS được dùng cho một nhóm ứng dụng, mà dữ liệu này lại có thể được sử dụng cho các nhóm ứng dụng khác.
Tổ chức OGC đã đưa ra 2 chuẩn trao đổi dữ liệu:
2.3.5.1. Web Map Service / Server
Trong chuẩn trao đổi dữ liệu này, web server sẽ trở thành web map server có service phục vụ cho chia sẻ dữ liệu. Các hoạt động mà client có thể thực hiện thông qua service này gồm : nhận về mô tả các bản đồ, nhận về bản đồ, và các thông tin truy vấn các đặc điểm được thể hiện trên bản đồ. Chuẩn này không áp dụng cho việc nhận dữ liệu chưa xử lý dạng thuộc tính hay không gian mà thường nhận về một ảnh bản đồ dạng đồ họa. Những bản đồ này thường được tạo ra với các định dạng như PNG, GIF, JPEG.
Các chức năng của một web map service:
- GetCapabilities: Khả năng hỗ trợ, client nhận về một mô tả thông tin WMS, các tham số được chấp nhận và hỗ trợ, bảng mô tả dưới dạng file XML.
- GetMap lấy bản đồ, client nhận về một ảnh bản đồ phù hợp với tham số mà client gửi lên server.
- GetFeatureInfo lấy thông tin đặc điểm, client hỏi thông tin về đặc điểm nào đó xuất hiện trên bản đồ.
Client gửi các yêu cầu dưới dạng một URL, các yêu cầu được chỉ ra bởi tham số.
2.3.5.2. Web Feature Service / Server
Server được gọi là Web Feature server có service phục vụ việc chia sẻ dữ liệu. Tuy nhiên thay vì trả về một ảnh bản đồ dạng đồ họa thì Web Feature Server sẽ gửi về thông tin không gian và thông tin thuộc tính có liên quan dưới dạng file GML (Geographic Markup Language) một dạng file XML, client sử dụng file XML này để tạo ra ảnh bản đồ. Chức năng của WFS giống với WMS chỉ khác dữ liệu trao đổi.
- GetCapabilities: trả về một tài liệu XML (Extensible Markup Languge) mô tả chức năng của WCS.
- DescribeCoverage: trả về một tài liệu XML mô tả các Coverage mà WCS Server có thể cung cấp.
- GetCoverage: trả về một Coverage thoả mãn các điều kiện mà Client cung cấp.
3.1. Giới thiệu Mapserver
Mapserver là môi trường phát triển cho việc xây dựng ứng dụng GIS thông qua internet. Trong mô hình kiến trúc WebGis, Mapserver là ứng dụng GIS được đặt trên webserver. Mapserver là sản phẩm của trường đại học Minnesota (University of Minnesota - UMN) trong dự án kết hợp giữa NASA và bộ tài nguyên Minnesota. Mapserver có thể chạy trên nhiều môi trường, nó được viết bằng C++ có thể chạy trên các version của UNIX/LINUX, WINDOWS và cả trên MacOS. Để giao tiếp với các thành phần trên môi trường web, Mapserver sử dụng chuẩn giao tiếp CGI (Common Gateway Interface). Phiên bản Mapserver hiện tại là MapServer 5.4.
MapServer có các đặc điểm sau:
- Hỗ trợ các dịch vụ WebGIS theo chuẩn OGC, bao gồm: WMS Server, WMS Client, WFS Server, WFS Client và WCS Server.
- Xuất bản đồ với nhiều ưu điểm:
o Vẽ đối tượng theo tỷ lệ.
o Hiển thị nhãn theo đối tượng
o Tùy biến giao diện, mẫu trước khi xuất.
o Sử dụng font: TrueFont
o Tạo bản đồ chuyên đề dựa trên biểu thức truy vấn trên các lớp cơ sở. - Hệ thống Mapserver bao gồm cả Mapscript, hỗ trợ các ngôn ngữ kịch bản
phổ biến và môi trường phát triển như C#, PHP, Perl, Python, Java, và Ruby. Mapscript cung cấp môi trường thuận lợi cho việc phát triển các ứng dụng tích hợp các dữ liệu phân tán.Ta có thể lấy dữ liệu không gian qua các ngôn ngữ kịch bản và dựa vào Mapscript ta có thể tạo ra được ảnh bản đồ.
- Hỗ trợ các hệ điều hành: Linux, Windows, MAC OS X, Solaris, … - Hỗ trợ định dạng dữ liệu raster và vector:
o TIFF/GeoTIFF, GIF, PNG, ERDAS, JPEG và EPPL7.
o ESRI shapefile, PostGIS, ESRI ArcSDE, Oracle Spatial, MySQL, … - Hỗ trợ lưới chiếu: hỗ trợ hơn 1000 lưới chiếu trong thư viện Proj.4
Mapserver đóng vai trò như là một map engine được cung cấp nội dung để tạo ảnh bản đồ khi cần đến.
3.2. Các thành phần của Mapserver
Ứng dụng Mapserver sử dụng chuẩn giao tiếp CGI để giao tiếp với các thành phần và với HTTP Server. Do có mã nguồn mở nên cũng có những ứng dụng được biên dịch để có thể dùng Mapscript truy xuất trực tiếp các hàm API của Mapserver.
Ứng dụng Mapserver CGI sử dụng các tài nguyên sau: - Một webserver server (Apache hoặc IIS) - Phần mềm Mapserver (WebGIS application)
- File khởi tạo dùng để cấu hình và tùy biến các thông số của ứng dụng Mapserver (không bắt buộc)
- Map file là file cấu hình cho ứng dụng Mapserver. - Template file là giao diện giữa người dùng và Mapserver - Dữ liệu GIS
3.2.1. File khởi tạo
Mỗi khi http server nhận được yêu cầu từ client thông qua chuỗi URL thì http server sẽ gọi Mapserver chạy và thực thi. Bằng cách sử dụng file khởi tạo (file html) ta định nghĩa tham số cơ bản càn thiết để Mapserver có thể thực thi được.
Ví dụ:
[map],[map_web_imagepath],[img]…
3.2.2. Map file
Là một file text cấu hình cho ứng dụng Mapserver. Nó định nghĩa vùng bản đồ, thông báo cho Mapserver biết dữ liệu ở đâu và output là dạng gì và ở đâu. Nó định nghĩa các layer, bao gồm nguồn dữ liệu, khung chiếu và các biểu tượng. Nó có đuôi mở rộng là .map.
3.2.3. Template file
Nó điều khiển các hình bản đồ và các ghi chú trả về bởi Mapserver sẽ xuất hiện trên trang html. Đầu tiên Mapserver đọc template file này và nếu gặp các từ khóa hoặc các mẫu thì nó sẽ thay thế các giá trị tương ứng lấy từ chuỗi kết quả trả về, file này sẽ được gửi trở vè trình duyệt và hiển thị trên trình duyệt.
Dữ liệu vector, Mapserver sử dụng ESRI shapefile làm dữ liệu mặc định.Ngoài ra các định dạng dữ liệu vector GIS phổ biến khác hiện nay, Mapserver đều có thể hiểu và tương tác được, như PostGIS, ESRI, ArcSDE, MapInfo… và nhiều định dạng khác thông qua thư viện OGR. Dữ liệu raster, MapServer hỗ trợ TIFF/GeoTIFF, EPPL7 và các định dạng khác thông qua thư viện GDAL.
3.3. Sơ đồ hoạt động của Mapserver
Hình 21: Sơ đồ hoạt động của Mapserver
MapServer có thể hoạt động ở hai chế độ CGI (Common Gateway Interface) và API (Application Program Interface). Ở chế độ CGI, các chức năng của MapServer trong môi trường WebServer là CGI MapScript. Ở chế độ API, có thể truy cập MapServer bằng PHP, Perl hoặc Python. MapServer hoạt động dựa vào các mẫu. Trước khi thực thi yêu cầu của web, MapServer đọc tệp tin cấu hình (mapfile) mô tả các lớp và các thành phần khác của bản đồ.Mapserver sẽ vẽ ra ảnh bản đồ. Tiếp theo, nó sẽ đọc một hoặc nhiều tệp tin mẫu HTML mà nó nhận diện trong tệp tin cấu hình. Mỗi tệp tin mẫu sẽ chứa đựng các tags HTML và các chuỗi MapServer đặc biệt. Các chuỗi này sẽ được sử dụng, ví dụ chuỗi chỉ đường dẫn để lưu ảnh bản đồ do Mapserver tạo ra, hoặc chuỗi dùng để nhận diện các lớp nào sẽ được sắp xếp, …MapServer thay thế các giá trị hiện tại vào các các chuỗi này và gửi luồng dữ liệu về cho WebServer để WebServer tiếp tục chuyển về cho trình duyệt. Khi có một yêu cầu mới phát sinh, MapServer sẽ nhận yêu cầu từ WebServer với các giá trị mới và chu trình cứ thế tiếp diễn.
UMN MapServer là mã nguồn mở và nó là một phương tiện render bản đồ tự do cho web. Do nó là mã nguồn mở nên nó có thể được biên dịch trên nhiều môi trường và nhiều hệ điều hành khác nhau. Chúng ta sẽ tìm hiểu việc biên dịch và cài đặt MapServer trên môi trường ubuntu Linux.
Các thư viện yêu cầu :
- GD: là thư viện đồ họa. MapServer sử dụng GD để render ảnh, là thư viện bắt buộc phải cài đặt. Các thư viện GD sử dụng là zlib, libpng, Freetype, libJPEG.
- Zlib: Thư viện nén dữ liệu sử dụng bởi GD. - Libpng: thư viện render ảnh PNG.
- Libjpeg : thư viện render ảnh JPEG
- Freetype: Được sử dụng bởi GD vho việc render ảnh.
- Proj.4 thư viện lưới chiếu bản đồ. Nó có thể hiện thị trên web bởi MapServer. - Webserver apache
- Mysql server - PHP5
- File cài đặt mapserver cgi-mapserver.deb.
Các thư viện và file cài đặt MapServer ở dạng binary packages có thể tải về từ trang http://packages.ubuntu.com/ .
Để kiểm tra cài đặt Mapserver khởi động lại Webserver bằng lệnh : $ /etc/init.d/apache2 restart
Kiểm tra Mapserver đã cài đặt đúng chưa gõ lệnh: $ /usr/lib/cgi-bin/mapserv
Nếu hiện ra :
This script can only be used to decode form results and should be initiated as a CGI process via a httpd server.
Thì đã cài đặt MapServer thành công.
Mapfile là trái tim của Mapserver. Nó định nghĩa các quan hệ giữa các đối tượng, điểm, chỉ ra dữ liệu ở đâu và định nghĩa mọi thứ được vẽ như thế nào. Trong mapfile có nhiều đối tượng như Map, PROJECTION, LAYER, CLASS.. mỗi đối tượng định nghĩa cách thức tạo nên ảnh bản đồ hoặc đối tượng để Mapserver truy xuất dữ liệu cho câu truy vấn. Mapfile có cấu trúc phân cấp, MAP Object là root, các object nằm dưới nó. Chú thích trong mapfile là dấu #.
3.5.1. Map Object
Trong mapfile thì MAP là đối tượng gốc, chứa trong nó các đối tượng khác.
- EXTENT [minx][miny][maxx][maxy] : Không gian phạm vi của ảnh bản đồ được tạo ra, nó được được định nghĩa bởi kết hợp góc dưới bên trái [minx], [miny] và góc trên bên phải [maxx][maxy]. Lỗi trong định nghĩa extent có thể tạo ra kết quả là trang trắng, bản đồ bị méo hoặc lỗi. EXTENT phải được đinh nghĩa, và nó phải ở trong cùng một hệ thống kết hợp như là các đối tượng PROJECTION.
- FONTSET [filename] : Liệt kê danh sách các font được dùng. Mỗi dòng chứa 2 thành phần: một bí danh và một đường dẫn đến font được phân cách bằng khoảng trắng. Alias là tên dùng để chỉ font này trong mapfile. Mapserver sử dụng true font.
- IMAGECOLOR [r][g][b]: Màu được dùng làm background cho ảnh bản đồ. Nếu thuộc tính transparency được chọn , thì màu sắc này sẽ đánh dấu như là màu trong suốt trong bảng màu. Khi đó thành phần nào của ảnh bản đồ sử dụng màu này để vẽ cũng trong suốt. Nên khi tạo ảnh bản đồ nếu chọn ảnh