File khởi tạo

Một phần của tài liệu XÂY DỰNG HỆ THỐNG QUẢN LÝ BẢN ĐỒ SỐ DỰA TRÊN CÔNG NGHỆ MAPSERVER (Trang 47)

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 bản đồ trong suốt thì nên chọn màu imagecolor là màu không được dùng để vẽ các thành phần khác trên bản đồ.

- IMAGETYPE [gif|png|jpeg|swf|gtiff] : Định dạng ảnh bản đồ được tạo ra - LAYER : Bắt đầu đối tượng LAYER

- LEGEND : Bắt đầu cho đối tượng LEGEND

- NAME [name] : Xác định tiền tố cho tên ảnh bản đồ, ảnh các thước tỷ lệ, ghi chú được tạo ra từ mapfile

o Ví dụ :

- PROJECTION : Bắt đầu cho đối tượng PROJECTION - QUERYMAP : Bắt đầu cho đối tượng QUERY MAP - REFERENCE : Bắt đầu cho đối tượng QUERYMAP

- RESOLUTION : Định đồ phân giải cho ảnh kết quả, độ phân giải sẽ ảnh hưởng đến việc tính toán tỷ lệ, mặc định là 72.

- SCALE : Tỉ lệ của bản đồ

- SHAPEPATH [filename] : đường dẫn tới dữ liệu dạng vector - SIZE [x][y] : kích thước theo đơn vị pixel của ảnh bản đồ

- STATUS [on|off] : trạng thái có được kích hoạt không của ảnh bản đồ. Nếu không được kích hoạt thì Mapserver sẽ không tạo ra ảnh bản đồ khi sử dụng mapfile này

- SYMBOLSET [filename] : file chứa tập hợp các biểu tượng được dùng trên bản đồ. Trên bản đồ, các symbol được dùng để đánh dấu các đối tượng nhằm làm nổi bật và tăng thêm ngữ nghĩa.

- SYMBOL : Bắt đầu đối tượng symbol

- TEMPLATEPATTERN [regular expression] và DATAPATTERN [regular expression] : Trong request được gửi lên từ trình duyệt gồm có 2 dạng tham số là DATA và TEMPLATE. Các tham số đề là các từ khóa được Mapserver quy định trước và thường khó nhớ. Bằng cách sử dụng TEMPLATEPATTERN và DATAPATTERN ta có thể định nghĩa một tên khác cho các từ khóa này.

- TRANSPARENT [on|off] : Thiết lập trong suốt cho ảnh bản đồ, mặc định là off.

- UNITS [feet|inches|kilometers|meters|miles|dd] : Đơn vị của hệ tọa độ ảnh bản đồ.

- WEB : Bắt đầu đối tượng web

3.5.2. Layer Object

Là đối tượng được sử dụng nhiều nhất trong mapfile, mỗi đối tượng layer mô tả một layer được dùng để tạo ra ảnh bản đồ. Các layer được vẽ theo thứ tự xuất hiện của chúng trong mapfile, layer đầu tiên ở dưới cùng, layer cuối cùng ở trên. Phiên bản

MapServer nhỏ hơn 5, số layer tối đa là 200 trong một mapfile, còn trong phiên bản 5 trở lên thì không giới hạn số lượng layer. Có thể thay đổi số lượng layer bằng cách sửa file map.h thay đổi giá trị MS_MAXLAERS. Đường dẫn tới mapfile phải là đường dẫn tuyệt đối.Các layer được vẽ ra còn được tính thêm thứ tự ưu tiên. Raster độ ưu tiên thấp nhất sẽ được vẽ trước và đặt ở phía dưới, tiếp đến là vùng, đường, điểm và nhãn (label). Thứ tự này đảm bảo các layer khi xếp chồng thì không che khuất nhau.

- CLASS : Bắt đầu đối tượng CLASS. Trong các định dạng vector, mỗi layer được vẽ, lấy dữ liệu từ một bảng dữ liệu. Mỗi bảng dữ liệu có nhiều trương thuộc tính. Mỗi thuộc tính xem như một CLASS.

- CLASSITEM [attribute] : ứng với tên của trường thuộc tính trong bảng dữ liệu, được định nghĩa trong mapfile.

- CONNECTIONTYPE [local|postgis|wms] : Kiểu kết nối OGR được dùng cho các loại dữ liệu khác ngoài dữ liệu mặc định là shapefile của ESRI. OGR là một thư viện được viết bằng C++ nó hỗ trợ các kết nối của nhiều loại dữ liệu như MapInfo, ArcInfo…

- CONNECTION [string] : Câu kết nối cơ sở dữ liệu để nhận về dữ liệu nằm trên các server hoặc các DBMS

- DATA [filename] : Tên file đầy đủ của dữ liệu để xử lý. Đối với dữ liệu là shapefile không cần chỉ rõ phần mở rộng. Đường dẫn có thể là tuyệt đối hoặc tương đối so với giá trị được chỉ ra bởi tham số SHAPEPATH của đối tượng MAP.

- DUMP [true|false] : cho phép Mapserver trả dữ liệu dưới dạng GML. Đặc biệt có ích khi sử dụng với phương thức WMS GetFeatureInfo, mặc định là false.

- FILTER [string] : Tham số này cho phép định nghĩa điều kiện lọc dữ liệu. Đối với dữ liệu shapefiles hoặc các dữ liệu được kết nối thông qua OGR, điều kiện lọc dữ liệu đơn giản là một chuỗi điều kiện. Còn đối với các loại dữ liệu được trích xuất từ cơ sở dữ liệu thông qua chuỗi kết nối thì điều kiện lọc là mệnh đề SQL WHERE.

- FILTERITEM [attribute] : Trường dữ liệu dùng cho câu chuỗi lọc FILTER, chỉ dùng cho OGR và shapefiles.

- METADATA : được dùng với OGC WMS để định nghĩa như tiêu đề của layer, tạo ra các template. Những dữ liệu được đặt trong Metadata sẽ được truy xuất thông qua các tag của tập tin template.

o Ví dụ: METADATA Title “Lớp địa hình”

Author “cục bản đồ việt nam” Create date “8/5/2009”

END

- MINSCALE [double] : Tỉ lệ nhỏ nhất mà layer được vẽ

- NAME [string] : Tên layer, giới hạn trong khoảng 20 ký tự. Tên layer được dùng để liên kết giữa giao diện web và mapfile. Ảnh bản đồ là kết quả của nhiều layer chồng lấp lên nhau. Từ giao diện web có thể cho phép người dùng chọn lựa layer hiển thị. Khi tên layer được chọn và tên layer được định nghĩa trong mapfile phải giống nhau để có thể hiển thị. Tên layer là duy nhất, tên layer khác cùng tên thì phải khác tỷ lệ. Sử dụng GROUP để nhóm các layer lại với nhau.

- PROJECTION : Bắt đầu đối tượng PROJECTION

- STATUS [on|off|default] : Trạng thái của layer. Giá trị là default thì layer luôn được vẽ ra. Trạng thái là on thì layer sẽ được vẽ ra nhưng có thể chuyển về trạng thái off, trạng thái off thì layer không được vẽ ra nhưng có thể chuyển sang trạng thái on.

- TOLERANCEUNIT [double] & TOLERANCE [double] : Trong trường hợp cần lấy thông tin đối tượng trên bản đồ, ta cần chỉ ra đối tượng được chọn bằng click chuột vào vùng cần chọn. TOLERANCE được dùng để quy định phạm vi đối tượng với tâm là vị trí click chuột. TOLERANCEUNIT chỉ ra đơn vị của TOLERANCE, mặc định nó là 3 pixel

Ví dụ:

TOLERANCE 3 TOLERANCE 6

Khi người dùng click chuột lên bản đồ. Mapserver xác định được vị trí click chuột là X,Y, sau đó tìm kiếm trong cơ sở dữ liệu xác định có đối tượng nào có vị trí trong hình tròn tâm X,Y bán kính 6*3.

- TRANSPARENCY [interger|alpha] : Mức độ trong suốt của layer. Giá trị là số nguyên từ 0-100 hoặc là giá trị bằng alpha. Giá trị nguyên là giá trị độ mờ, giá trị là 0 là trong suốt hoàn toàn. Giá trị bằng alpha được dùng khi ảnh bản đồ xuất ra dưới dạng RGB.

- TRANSFORM [true|false] : Báo cho Mapserver chuyển từ hệ tọa độ địa lý sang hệ tọa độ đồ họa (ảnh đồ họa). Mặc định là true. Đối với hệ tọa độ đồ họa, gốc tọa độ luôn là điểm góc trái trên của ảnh. Nó thường được dùng để đặt các logo và các mục cố định ở trên bản đồ.

- TYPE [point|polygon|circle|raster|query] : Quy định các dữ liệu được vẽ ra. Không cần phải cùng loại dữ liệu. Ví dụ: các đối tượng polygon có thể được vẽ như là một tập các điểm, ngược lại một điểm không thể vẽ như là tập các polygon. Dữ liệu shapefile không chỉ chứa đơn thuần một loại đối tượng, mà có thể có nhiều đối tượng. Nếu có đối tượng là Point và Polygon, chọn TYPE là polygon thì kiểu Point sẽ không vẽ được. Query chỉ ra layer được truy vấn thông tin, không cần phải vẽ lại. Nếu giá trị là circle thì 2 điểm sẽ xác định hình chữ nhật chứa đường tròn.

3.5.3. Query Map Object

Định nghĩa cơ chế thực hiện câu truy vấn từ bản đồ

- COLOR [r][g][b] : Khi xác định được đối tượng trên bản đồ, được chọn để truy vấn, Mapserver sẽ vẽ lại đối tượng này với màu là Color. Mặc định là Yellow.

- SIZE [x][y] : Phạm vi thực hiện truy vấn, ngoài phạm vi này các đối tượng sẽ không được chọn để truy vấn dữ liệu. Mặc định là kích thước cả bản đồ, được quy định trong đối tượng Map.

- STATUS [on][off] : Giá trị off thì sau khi thực hiện truy vấn, ảnh bản đồ sẽ không được vẽ lại.

- STYLE [normal|hilite|selected] : Quy định cách thức vẽ lại các đối tượng được chọn cho truy vấn, các đối tượng khác vẫn được vẽ lại như bình thường.

o Normal : vẽ lại các đối tượng này bình thường theo các giá trị thiết lập cho layer

o Hilite : vẽ lại các đối tượng được chọn theo màu COLOR

o Selected : chỉ vẽ lại các đối tượng được chọn, các đối tượng khác không vẽ lại.

3.5.4. Projection Object

Thiết lập phép chiếu cần xác định một phép chiếu chung cho đối tượng Map, và mỗi layer cũng cần chỉ ra một phép chiếu để vẽ các đối tượng trong layer đó. Đối tượng phép chiếu bao gồm tập các từ khóa của PROJ.4 (thư viện các phép chiếu).

Ví dụ: Giả sử bản đồ có trung tâm là 90 kinh độ tây, phép chiếu sẽ là: PROJECTION

"proj=lcc" "lon_0=90w" END

Trong mỗi layer, phải định nghĩa một đối tượng PROJECTION miêu tả phép chiếu của dữ liệu nguồn, trong shapefile chứa dữ liệu không gian không được chiếu thì trong mỗi layer đối tượng PROJECTION sẽ là:

PROJECTION "proj=latlong" END

Ví dụ phép chiếu UTM khu vực 15 PROJECTION “proj=utm” “ellps=GRS80” “zone=15” “north” “no_defs”

END Ví dụ một mapfile: Hello.map NAME "hello" SIZE 400 300 IMAGECOLOR 249 245 186 IMAGETYPE png EXTENT -1.00 -1.00 1.00 1.00 WEB TEMPLATE "/var/www/hello.html" IMAGEPATH "/var/www/image/" IMAGEURL "/image/" END LAYER STATUS default TYPE point FEATURE POINTS 0.0 0.0 END TEXT "hello" END CLASS STYLE COLOR 255 0 0 END LABEL TYPE bitmap END

END END END

3.6. Kết nối các loại dữ liệu

3.6.1. Dữ liệu ESRI Shapefiles (SHP)

ESRI là công ty đã đưa ra định dạng dữ liệu này, Arcview là sản phẩm đầu tiên sử dụng shapefiles.

Shapefiles được tạo bởi 3 file: Ví dụ:

Countries_area.dbf Countries_area.shp Countries_area.shx

Truy cập dữ liệu và phương thức kết nối

Truy cập shapefiles được gắn trực tiếp vào trong Mapserver. Nó có thể dùng được thông qua thư viện OGR, nhưng ở đây chúng ta sẽ nói về việc truy cập trực tiếp không thông qua thư viện OGR. Đường dẫn tới shapefile là được yêu cầu, không cần chỉ ra phần mở rộng của file. Mỗi một shapefile thì trong mapfile định nghĩa một layer, tên của layer trùng với tên shapefile.

Ví dụ: NAME "First" SIZE 400 300 IMAGECOLOR 255 255 255 IMAGETYPE JPEG SHAPEPATH "/home/mapdata" EXTENT -125.00 20.00 -65.00 50.00 WEB TEMPLATE '/var/www/first.html'

Một phần của tài liệu XÂY DỰNG HỆ THỐNG QUẢN LÝ BẢN ĐỒ SỐ DỰA TRÊN CÔNG NGHỆ MAPSERVER (Trang 47)