2.3.1. Giới thiệu WebGIS
WebGIS là hệ thống thông tin địa lý phân tán trên một mạng các máy tính để tích hợp, trao đổi các thông tin địa lý trên World Wilde Web. Trong cách thực hiện nhiệm vụ phân tích GIS, dịch vụ này gần giống như là kiến trúc Client-Server của Web. Xử
lý thông tin địa lý được chia ra thành các nhiệm vụ ở phía server và phía client. Điều này cho phép người dùng có thể truy xuất, thao tác và nhận kết quả từ việc khai thác dữ liệu GIS từ trình duyệt web của họ mà không phải trả tiền cho phần mềm GIS.Một client tiêu biểu là trình duyệt web và server-side bao gồm một Web server cócung cấp một chương trình phần mềmWebGIS. Client thường yêu cầu một ảnh bản đồ hay vài
nội bộ và gọi những chức năng về GIS bằng cách chuyển tiếp yêu cầu tới phần mềm WebGIS. Phần mềm này trả về kết quả, sau đó kết quả này được định dạng lại cho việc trình bày bởi trình duyệt hay những hàm từ các plug-in hoặc Java applet. Server sau đó trả về kết quả cho client để hiển thị, hoặc gửi dữ liệu và các công cụ phân tích đến client để dùng ở phía client. Phần lớn sự chú ý gần đây là tập trung vào việc phát triển các chức năng GIS trên Internet. WebGIS có tiềm năng lớn trong việc làm cho thông tin địa lý trở nên hữu dụng và sẵn sàng tới số lượng lớn người dùng trên toàn thế giới. Thách thức lớn của WebGIS là việc tạo ra một hệ thống phần mềm không phụ thuộc vào platform và chạy trên chuẩn giao thức mạng TCP/IP, có nghĩa là khả năng WebGIS được chạy trên bất kì trình duyệt web của bất kì máy tính nào nối mạng Internet. Đối với vấn đề này, các phần mềm GIS phải được thiết kế lại để trở thành
ứng dụng WebGIS theo các kỹ thuật mạng Internet.
2.3.2. Sơđồ hoạt động của WebGIS
Hình 22: Sơđồ hoạt động của WebGIS
Quá trình hoạt động của WebGIS được minh họa như hình vẽ trên. - Người dùng sử dụng trình duyệt web ở phía client
- Client gửi yêu cầu của người sử dụng đến WebServer qua giao thức HTTP - Webserver nhận yêu cầu của người dùng, nếu là yêu cầu về bản đồ thì
webserver sẽ chuyển tiếp nó đến ứng dụng server tương ứng ở đây là Mapserver
- Mapserver sẽ nhận các yêu cầu cụ thể, gọi các hàm có liên quan để tính toán xử lý. Nếu có yêu cầu về dữ liệu Mapserver sẽ gửi yêu cầu tới cơ sở dữ liệu
- Data server dữ liệu tiến hành truy vấn lấy ra dữ liệu cần thiết và gửi lại cho Mapserver
- Trong quá trình truy cập cơ sở dữ liệu, Mapserver thực thi tham chiếu đến tập tin cấu hình bản đồ (Map file). Dữ liệu lấy về được chuyển về
WebServer tham chiếu đến tệp tin mẫu (html template) để tạo ra kết quả. - Kết quả sẽđược gửi về Client và hiển thị trên trình duyệt.
2.3.3. Tiềm năng của WebGIS
- Khả năng phân phối thông tin địa lý rộng rãi trên toàn cầu
- Người dùng internet có thể truy cập đến các ứng dụng GIS mà không phải mua phần mềm
- Đối với phần lớn người dùng không có kinh nghiệm về GIS thì việc sử dụng WebGIS sẽđơn giản hơn việc sử dụng các ứng dụng GIS khác.
2.3.4. Các kiến trúc triển khai WebGIS
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 đó
- 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 Server được gọi khi client cần dữ liệu mới
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 đồ.
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.
Chương 3 MapServer – WebGIS Application
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.
3.2.4. Dữ liệu GIS
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