Giới thiệu
Mapserver là một môi trường mã nguồn mở cho phép việc xây dựng những ứng dụng xử lý dữ liệu không gian trên internet. Nó có thể được chạy như 1 chương trình CGI hoặc thông qua Mapscript (hổ trợ nhiều ngôn ngữ lập trình như Perl, Python …). Mapserver không phải là 1 hệ thống có đầy đủ các đặc tính của hệ thống thông tin địa lý (GIS), và cũng không phát triển theo định hướng đó, mapserver tốt nhất ở điểm sinh ra dữ liệu không gian như (bản đồ, hình ảnh, dữ liệu vector …) trên môi trường web.Ngoài việc giúp định vị dữ liệu không gian, tạo bản đồ địa hình, mapserver có thể định hướng người dùng đến nội dung. Ví dụ minnessota DNR (http://mapserver.gis.umn.edu/) cung cấp người dùng với hơn 10000 trang web, bảng đồ, báo cáo thông qua 1 ứng dụng duy nhất.
Mapserver khởi đầu được phát triển bởi dự án University of Minesota (UMN) ForNet, cộng tác với NASA và (Minesota Department of Natural Resources). Sau đó nó được sở hữu bởi dự án TerraSIP, một dự án được hổ trợ bởi NASA.
Hiện tại, mapserver là một dự án của OSGeo, và được phát triển bởi 1 nhóm phát triển gần 20 nước khắp thế giới. Nó được duy trì và thêm các đặc tính bởi nhiều nhóm tổ chức khác nhau, và được quản lý bên trong OSGeo bởi Mapserver Project Steering committee (được thành lập bởi những người phát triển và những người phân phối).
Các đặc tính
· Sinh hình ảnh bản đồ phức tạp.
Hình ảnh phụ thuộc vào tỉ lệ.
Tên các hình ảnh.
Xuất định dạng có thể sửa đổi hoặc theo khuôn mẫu.
Phong chữ kiểu thực (TrueType).
Tự động sinh các thành phần của bản đồ (tỉ lệ, bản đồ tham khảo, chú thích).
· Hỗ trợ các các ngôn ngữ script và môi trường phát triển phổ biến (PHP, Perl, Python, Ruby, Java, và C#).
· Hỗ trợ nhiều hệ điều hành (Linux, Windows, Mac OS X, Solaris, …).
· Hỗ trợ nhiều dạng raster và vector.
TIFF/ Geo TIFF, EPPL7 và nhiều định dạng khác thông qua GDAL.
ESRI shapefiles, PostGis, ESRI ArcSDE, Oracle Spatial, My SQL… thông qua ORG.
Theo đặc tả web Open GeoSpatial Consortium (OGC): WMS (client/server), WFS (client/server), WMC, WCS, Filter Encoding, SLD, GML, SOS.
· Hỗ trợ phép chiếu bản đồ: hơn 1000 hệ chiếu thông qua thư viện proj.4
· Mapserver tuân theo chuẩn Open Geospatial Consortium (OGC), gồm Web Map Service (WMS) và Web Feature Service (WFS). Mapserver kết nối với PostgresSQL và mở rộng PostGIS (hỗ trợ dữ liệu GIS), MySQL và mở rộng MyGIS, …
Cấu trúc của mapserver
Đơn giản nhất có thể hiểu mapserver như là một chương trình CGI được đặt (inactive) trong webserver. Khi mà có 1 request gửi đến mapserver, nó sử dụng thông tin được truyền ở request URL và trong mapfile để tạo hình ảnh của bản đồ được yêu cầu. Request cũng có thể trả về hình ảnh cho ghi chú, thanh co dãn, bản đồ tham chiếu và giá trị được truyền như là những biến CGI.
Sơ đồ khái niệm của một ứng dụng mapserver
Mapserver có thể được mở rộng và điều chỉnh tùy vào người sử dụng. Nó có thể được xây dựng để hỗ trợ nhiều dữ liệu nhập và xuất. Điều này được thực hiện khi mapserver được biên dịch.
Mapscript
Mapscript cung cấp 1 interface dạng script cho mapserver để cấu trúc xây dựng web và ứng dụng độc lập. Mapscript được sử dụng độc lập với CGI mapserver, nó là 1 module có thể load, các chức năng của mapserver được thêm vào ngôn ngữ script mà người sử dụng thích nhất. Mapscript hiện tại tồn tại trong Php, Perl, Python, Ruby, Tcl, Java, C#.
Cấu trúc của 1 ứng dụng mapserver
Một ứng dụng mapserver đơn giản gồm các thành phần:
· Map file: 1 kiểu cấu hình cấu trúc text cho ứng dụng mapserver. Nó định dạng kích thước của bảng đồ, chỉ cho mapserver biết dữ liệu nằm ở đâu và xuất hình ảnh đến đâu. Nó định nghĩa các tầng của bảng đồ, bao gồm nguồn dữ liệu, sự chiếu và những ký hiệu. (có dạng .map).
· Dữ liệu địa lý: mapserver có thể sử dụng nhiều kiểu nguồn dữ liệu địa lý. Mặt định là ESRI shapefile.
· Trang HTML: giao tiếp giữa người sử dụng và mapserver. Thường được đặt trên web root. Ở dạng đơn giản nhất, mapserver có thể được gọi để đặt 1 hình ảnh bản đồ tỉnh trên trang html. Để làm cho bản đồ tương tác, hình ảnh được đặt trên 1 form của trang html.
Chương trình CGI có trạng thái stateless, mỗi request mà nó nhận được là mới và nó không lưu nhớ bất cứ thứ gì về lần cuối nó được tương tác bởi ứng dụng của bạn. Do đó mỗi lần ứng dụng gửi yêu cầu đến Mapserver, nó cần truyền thông tin như (những layer được kích hoạt, vị trí trên bản đồ, kiểu của ứng dụng, …) trong 1 form ẩn hoặc trong biến của URL.
Thường có 2 loại trang khởi tạo và trang khuôn mẫu.
ü Trang khởi tạo: sử dụng form với những biến ẩn để gửi câu truy vấn khởi tạo đến http server và mapserver. Form này có thể được đặc trên 1 trang khác hoặc được thay thế bởi việc truyền thông tin khởi tạo thông qua các biến của URL.
ü Trang khuôn mẫu (html template): điều khiển các bản đồ và chú thích xuất bởi mapserver, chứa các khuôn mẫu sẽ hiện lên browser. Bằng những biến tham chiếu đến Mapserver CGI trong file html mẫu, bạn cho phép Mapserver sinh ra các thành phần của bản đồ với những giá trị liên quan đến trạng thái hiện hành của ứng dụng (như tên hình ảnh bản đồ, tên hình ảnh tham chiếu, kích thước bản đồ,...) khi nó tạo trang html cho browser đọc. File mẫu html này cũng quyết định cách người sử dụng có thể tương tác với bản đồ (phóng to, thu nhỏ, định vị, truy vấn).
· Mapserver CGI: nhận yêu cầu và trả về các hình ảnh và dữ liệu. Nó nằm trong cgi-bin hoặc thư mục script của http server. Người sử dụng Web server phải có quyền thực thi ở thư mục chứa Mapserver CGI, vì lý do bảo mật nó không nên được đặt trong web root.
· HTTP servser: phục vụ yêu cầu của những trang html khi được tác động bởi web browser. Ta cần 1 HTTP server như là Apache hoặc Microsoft Internet Information Server đặt trên máy cài mapserver.
Cách hoạt động của mapserver
Mapserver thường hoạt động phía sau 1 ứng dụng web server. Web server nhận những yêu cầu bản đồ và truyền chúng đến mapserver để tạo. Mapserver tạo ra hình ảnh bản đồ được yêu cầu và truyền đến web server, web server truyền nó đến người sử dụng thông qua web browser. Hình sau cho thấy người sử dụng tương tác với web server, tạo yêu cầu gửi đến chương trình mapserver.
Chức năng chính của mapserver là đọc dữ liệu từ nhiều nguồn dữ liệu khác nhau và kéo các layer lại tạo thành 1 file hình như 1 hình ảnh bản đồ. Hình ảnh sau cho thấy hoạt động cơ bản của 1 ứng dụng mapserver.
Một layer có thể là hình ảnh từ vệ tinh, đường biên giới của 1 quốc gia, hay 1 điểm thể hiện hình ảnh thành phố chính. Mỗi lớp được được đặt ở trên hoặc ở dưới lớp khác và sau đó được in thành dạng web hình ảnh thân thiện cho người sử dụng. Một ví dụ về việc chồng lấp lớp và quá trình tạo bản đồ được thể hiện ở hình sau. Trong đó, bạn có thể thấy hình ảnh vệ tinh, những con đường, địa điểm thành phố, nhãn của các thành phố được sinh tự động bởi Mapserver.