Khi MapServer lần đầu tiên đƣợc gọi bởi Apache, MapServer đọc mapfile để xác định font, các ký hiệu (symbols), mẫu (templates) nếu là ở CGI, và nguồn dữ liệu không gian. Mapfile cũng chỉ ra kích thƣớc của bản đồ kết quả, khoảng cách địa lý của nó, và định dạng của nó là dạng gì: GIF, JPEG, hay PNG. Khi đã đọc xong mapfile, MapServer sẽ vẽ ra một hoặc nhiều ảnh: bản đồ, các ký hiệu và ảnh thƣớc tỷ lệ, hoặc có thể là bản đồ tham chiếu. Sau đó lƣu các ảnh này vào một nơi đƣợc xác định trong mapfile.
Kết quả đƣợc MapServer gửi trả lại cho Web Server, Web Server gắn các kết quả này vào đúng vị trí trong form html đã đƣợc định nghĩa và gửi trả file html kết quả cho trình duyệt.
- Truy vấn dữ liệu
Ở trong chế độ truy vấn, ngƣời dùng định nghĩa các tiêu chí lựa chọn truy vấn bằng 1 trong các cách sau:
o Chọn ra một điểm hoặc một vùng trên ảnh bản đồ tƣơng ứng với điểm nhấn chuột.
o Nhập vào tọa độ của một điểm hay của một vùng.
o Nhập vào một biểu thức chỉ định tiêu chí thuộc tính
o Nhập vào chỉ số của đối tƣợng (số thứ tự) trong shape file.
Khi thực hiện kiểu truy vấn đối tƣợng đơn giản nhất, MapServer ghi nhớ vị trí của điểm nhấn chuột và chọn các đối tƣợng thỏa mãn nằm lân cận điểm nhấp chuột.
Trong chế độ truy vấn thuộc tính, MapServer tìm trong bảng thuộc tính các đối tƣợng thỏa với biểu thức ngƣời dùng chỉ định. Biểu thức này có dạng giống nhƣ biểu thức EXPRESSION của mapfile. MapServer còn hỗ trợ truy vấn theo phạm vi (theo tầng – staged query) trong đó, các truy vấn dữ liệu không gian đƣợc thực hiện dựa trên tập kết quả trả về bởi một truy vấn thông tin thuộc tính.
Để MapServer thực hiện đƣợc một truy vấn, mapfile phải chứa ít nhất một layer truy vấn được (queriable). Một layer loại queriable phải ở trạng thái đang sống (active - on hoặc default) và chứa một tham chiếu mẫu (đƣợc chỉ ra ở mức layer hoặc mức class với từ khóa TEMPLATE). Nếu tồn tại một layer truy vấn đƣợc, MapServer tìm kiếm trong bộ dữ liệu từng đối tƣợng một để tìm ra các đối tƣợng thỏa với tiêu chí dữ liệu không gian hoặc thông tin thuộc tính. Nếu một
mẫu (template) tồn tại để biểu diễn đối tƣợng thỏa mãn thì đối tƣợng này đƣợc đƣa vào trong bộ kết quả - nếu không đối tƣợng sẽ bị loại bỏ. Việc tồn tại một mẫu mức layer đảm bảo rằng tất cả các đối tƣợng trong layer thỏa mãn tiêu chí tìm kiếm sẽ đƣợc lựa chọn. Mặt khác, nếu một mẫu layer không đƣợc chỉ định ra, các class không có mẫu sẽ trả về kết quả là không.
Ngoài ra, MapServer còn có những tính năng cơ bản như:
- Hỗ trợ các di ̣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 và giải quyết trùng lặp nhãn.
o Tùy biến giao diện, mẫu trƣớc khi xuất.
o Sử dụng font: TrueFont
o Có các thành phần của bản đồ nhƣ thƣớc tỷ lệ, chú giải, bản đồ tham chiếu, mũi tên hƣớng Bắc.
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ỗ 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.
- 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
2.2. Các thành phần và cách thức hoạt động 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. Vì vậy đôi khi còn gọi ứng dụng MapServer là ứng dụng MapServer CGI. Do có mã nguồn mở, nê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.
2.2.1. Các thành phần của MapServer
Các thành phần chính của MapServer bao gồm:
- File khởi tạo (Initialization File): Đƣợc dùng để cấu hình và tùy biến các thông số và ứng dụng MapServer. Bằng cách sử dụng file khởi tạo (dƣới dạng file html hoặc htm), ta định nghĩa các tham số cơ bản cần thiết để MapServer có thể thực thi đƣợc.
Thông qua chuỗi URL nhận đƣợc, sử dụng file khởi tạo này, MapServer biết đƣợc các tham số cơ bản. Các tham số này còn đƣợc MapServer gửi trả kèm trong kết quả cho phía client.
- Mapfile - điều khiển cách tƣơng tác với dữ liệu. Mapfile cũng bao gồm cả thông tin về vẽ bản đồ nhƣ thế nào, ghi chú bản đồ ra sao và vẽ kết quả của câu truy vấn. Mapfile có phần mở rộng là .map.
- Template File - đ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. Cách làm của MapServer nhƣ sau: trƣớc hết MapServer đọc file template, nếu gặp các từ khoá hoặc các từ mẫu thì nó sẽ thay thế các giá trị tƣơng ứng lấy từ chuỗi kết quả trả về, cuối cùng file html đƣợc gửi về cho trình duyệt. Bởi vì template file sẽ đƣợc dùng để tạo ra 1 trang HTML, nên thông thƣờng template file cũng đƣợc lƣu dƣới dạng 1 trang HTML với phần mở rộng .html.
Ngoài ra trình duyệt có thể sử dụng trang HTML đƣợc phát sinh từ template file để hiển thị cho ngƣời dùng, cho nên trong template file cũng có thể chứa các đoạn mã của các ngôn ngữ script, thẻ HTML,... qui định tƣơng tác của ngƣời dùng (phóng to, thu nhỏ, dịch chuyển,...).
- GIS Dataset - Về dữ liệu vectơ, MapServer sử dụng shapefile (của ERI) làm định dạng dữ liệu mặc định. Bên cạnh đó với hầu hết các định dạng dữ liệu vectơ GIS phổ biến trên thế giới 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.
Về 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.
MapServer có mã nguồn mở, nên ngƣời dùng có thể biên dịch lại MapServer để thêm hay bỏ bớt các định dạng dữ liệu không muốn hỗ trợ.
2.2.2. Cách thức 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. Đây là cách thức dễ dàng để khởi tạo và phát triển một ứng dụng. Ở chế độ API, có thể truy cập MapServer bằng PHP, Perl hoặc Python, chế độ này cho phép xây dựng các ứng dụng uyển chuyển, giàu các chức năng và có khả năng truy cập các cơ sở dữ liệu mở rộng khác.