32
Nhóm em đang cố gắng đọc xong tài liêu vừa kiếm đc về Mapserver , GeoServer và 1 cái demo . MAPSERVER 1. Tổng quan về mapserver 1.1. 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

Tuan 10

  • Upload
    ngocttd

  • View
    27

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Tuan 10

Nhóm em đang cố gắng đọc xong tài liêu vừa kiếm đc về Mapserver , GeoServer và 1 cái demo .

MAPSERVER1. Tổng quan về mapserver

1.1. Giới thiệuMapserver 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).

1.2. 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ệ.

Page 2: Tuan 10

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, …

1.3. 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

Page 3: Tuan 10

Hình 1: Cấu trúc 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.

1.3.1. 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

Page 4: Tuan 10

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#.

1.3.2. 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 đồ,...)

Page 5: Tuan 10

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.

1.4. Cách hoạt động của mapserverMapserver 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.

Page 6: Tuan 10

Hình 2: 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.

Page 7: Tuan 10

Hình 3: Các lớp dữ liệu

2. CGI mapserverMapserv là 1 chương trình bộ phận CGI của gói mapserver. Nó nhận thông tin nhập

của người sử dụng và tạo ra hình ảnh hoặc truy vấn yêu cầu (requests). Mapserv có thể

nhận thông tin nhập từ người dùng thông qua phương thức GET hoặc POST và có thể sử

dụng 1 cách tương tác hoặc như 1 máy sinh hình ảnh.

2.1. Giới thiệuMột số ghi chú liên quan đến mapserver CGI

Tên biến không phân biệt chữ hoa thường.

Page 8: Tuan 10

Trường hợp nhiều giá trị kết hợp với 1 biến (ví dụ như mapext), các giá trị được tách

biệt với nhau nhờ vào khoảng trắng.

Nội dung của biến được kiểm tra sự tương thích kiểu của dữ liệu và độ lớn khi được

gọi.

Bất kỳ biến CGI đều có thể được lưu và tham khảo đến dễ dàng thông qua file khuôn

mẫu (template).

2.2. Các điều khiển

Một số biến CGI của chương trình mapserv được liệt kê như sau

ID[id-string]: mặc định mapserver sinh ra 1 session id duy nhất dựa trên thời gian của

hệ thống và process id.

IMG: tên được kết hợp với hình ảnh bản đồ được sử dụng để lưu lại những click của

người sử dụng. Với 1 ứng dụng CGI đây là 1 biến thiết yếu.

IMGEXT[minx][miny][maxx][maxy]: phạm vi không gian của 1 hình ảnh, đó là hình

ảnh mà người sử dụng có thể thấy trên browser.

IMGSHAPE[x1 y1 x2 y2 x3 y3 …]: hình dạng được trả về theo tọa độ của hình ảnh.

Hình dạng 1 đa giác được sử dụng cho mục đích truy vấn. Nhiều hiện thực (instance)

được sử dụng chỉ để thêm những phần vào trong hình dạng (shape) do đó có thể tạo 1

hình dạng với những lỗ. Được sử dụng với những chế độ NQUERY và

NQUERYMAP.

IMGSIZE[cols][rows]: kích thước tính theo pixel của hình ảnh.

IMGXY[x][y]: tọa độ của click chuột thường được sử dụng với JAVA dựa trên phần

đầu mapserver.

LAYER[name]: tên của layer khi nó xuất hiện trên file map. Gửi đến mapserv tên của

layer và gán giá trị trạng thái (STATUS) bằng on.

LAYER[name name …]: tên của những layer được hiện. Tên những layer được tách

biệt bởi khoảng trắng. Version 4.4 trở lên: truyền ‘LAYER = all’ sẽ tự động hiện tất

cả các layer.

MAP[filename]: đường dẫn, tương đối đến thư mục CGI của file map được sử dụng.

Page 9: Tuan 10

MAPEXT[minx][miny][maxx][maxy], MAPEXT(shape):

Kích thước không gian của 1 bản đồ được tạo.

Có thể được gán giá trị shape như 1 lựa chọn khác. Trong trường hợp này kích

thước của bản đồ (mapextent) được gán đến kích thước của hình dạng được chọn.

Được sử dụng với những truy vấn.

MAPSIZE[cols][rows] : Kích cỡ tính bằng pixel của hình ảnh được tạo. Hữu ích trong

việc cho phép người sử dụng thay đổi độ phân giải của bản đồ xuất một cách động.

MAPSHAPE[x1 y1 x2 y2 x3 y3 …]

Hình dạng trong hệ tọa độ của bản đồ.

Một hình đa giác bất kỳ được sử dụng cho những mục đích truy vấn. Nhiều hiện

thực (instance) của đa giác được thêm vào hình (shape) do đó ta có thể tạo 1 hình

dạng (shape) từ các lỗ. Được sử dụng với ở chế độ NQUERY và NQUERYMAP.

MAPXY[x][y], MAPXY(shape)

Một điểm, trong cùng 1 hệ tọa độ như những file shape, được sử dụng kết hợp với

bộ đệm (buffer) hay tỉ lệ để xây dựng nên kích thước của bản đồ.

Có thể được gán 1 hình dạng (shape) như là 1 chọn lựa khác. Trong trường hợp

này kích thước bản đồ được gán bằng với kích thước của hình dạng được chọn.

Được sử dụng với những truy vấn.

MINX | MINY | MAXX | MAXY[number]: Tọa độ nhỏ nhất/ lớn nhất x/y của kích

thước không gian cho 1 bản đồ mới hay truy vấn. Tập những thông số này là thành

phần của MAPEXT.

MODE[value]: Chế độ hoạt động.

BROWSE: Chế độ tương tác đầy đủ nơi bản đồ (hoặc những trang tương tác) được

tạo. Đây là chế độ mặc định.

MAP: Trả về bản đồ được tạo. Được sử dụng bên trong tag <img…>

REFERENCE: Bản đồ tham khảo được trả về. Được sử dụng bên trong tag <img…>.

SCALEBAR: Trả về thanh scalebar. Được sử dụng bên trong tag <img…>

LEGEND: Trả về hình ảnh chú thích. Được sử dụng bên trong tag <img…>

ZOOMIN: Chuyển đến chế độ BROWSE với ZOOMDIR = 1

Page 10: Tuan 10

ZOOMOUT: Chuyển đến chế độ BROWSE với ZOOMDIR = -1

REF

Tên được kết hợp với hình ảnh bản đồ tham khảo được sử dụng để lưu vị trí click

của người sử dụng. Thực sự thì 2 giá trị biến ref.x và ref.y.

Đối với ứng dụng CGI thì đây là biến cần thiết khi bản đồ tham khảo được sử

dụng.

REFXY[x][y]: Tọa độ tính bằng pixel vị trí của việc click chuột 1 lần trên hình

ảnh tham khảo. Được sử dụng kết hợp với Java dựa trên phần đầu của mapserver.

ZOOM[number]

Tỉ lệ phóng to/thu nhỏ sử dụng khi tạo bản đồ mới. Giá trị lớn hơn 0 tương ứng

với việc phóng to, 0 tương ứng với canh giữa, bé hơn 0 tương ứng bởi thu nhỏ.

ZOOM có thể được sử dụng thay thế cho sự kết hợp của ZOOMDIR/ZOOMSIZE.

Việc phóng to thu nhỏ phụ thuộc vào MINZOOM/MAXZOOM được cấu hình khi

biên dịch mapserver (-25/25 là mặc định).

ZOOMDIR[-1|0|1]: Giá trị 0 tương ứng với canh giữa, -1 tương ứng với việc thu

nhỏ, 1 tương ứng với phóng to.

ZOOMSIZE[number]: Độ lớn của phóng to/thu nhỏ. Sử dụng với ZOOMDIR.

3. Các thành phần của map file3.1. Giới Thiệu

Mapfile là thành phần trung tâm của mapserver. Nó định nghĩa những mối quan hệ

giữa các đối tượng, điểm của mapserver đến nơi dữ liệu được lưu trữ, đồng thời xác định

mọi thành phần được vẽ như thế nào trên bản đồ.

3.2. Lớp (class)Định nghĩa các class theo chủ đề cho 1 lớp (layer). Mỗi lớp layer phải có 1 class.

Trong trường hợp có nhiều hơn 1 class. Quan hệ thành viên được xác định sử dụng những

giá trị thuộc tính hay những biểu thức. Bắt đầu với từ khóa CLASS và kết thúc với từ

khóa END.

Page 11: Tuan 10

BACKGROUNDCOLOR[r][g][b]: Màu sử dụng cho những ký hiệu không trong

suốt.

COLOR: Màu sử dụng để vẽ những đặc tính (feature).

EXPRESSION[string]

4 kiểu của những biểu thức được định nghĩa để xác định mối quan hệ thành viên của

class. So sánh chuỗi, biểu thức chính quy, biểu thức logic đơn giản, những hàm chuỗi.

Nếu không có biểu thức thì tất cả các đặc tính thuộc vào class này.

Những so sánh chuỗi thì phân biệt chữ hoa và thường và được tính toán nhanh nhất.

Không cần các từ kết thúc tuy nhiên chuỗi phải được đặt trong ngoặc kép hoặc đơn nếu

chúng chứa các ký tự đặc biệt. (như là thói quen tốt, việc đóng ngoặc kép tất cả các chuỗi

được khuyến khích).

Những hàm biểu thức chính quy được giới hạn bởi /regex/. Không cần sử dụng ngoặc

kép.

Các biểu thức logic được sử dụng tạo nên kiểm tra phức tạp dựa trên 1 hay nhiều

thuộc tính và do đó chỉ có thể áp dụng với shapefiles. Biểu thức logic được giới hạn bởi

dấu mở ngoặc đóng ngoặc “(biểu thức)”. Tên thuộc tính được giới hạn bởi dấu ngoặc

vuông “[thuộc tính]”. Những tên này phân biệt giữa chữ hoa và thường và phải khớp với

các chi tiết trong shapefile. Ví dụ EXPRESSION ([POPULATION] > 50000 AND

‘[LANGUAGE]’ eq ‘FRENCH’). Những toán tử sau đây được hỗ trợ: =, >, <, >=, <=, or,

and, lt, gt, ge, le, eq, ne. Các biểu thức được xử lý chậm hơn.

Một hàm chuỗi: length(), dễ thấy nó tính độ dài của chuỗi. Ví dụ:

EXPRESSION(length(‘[NAME]’) < 8).

So sánh chuỗi và biểu thức chính quy hoạt động với các chi tiết của class được định

nghĩa ở mức lớp (layer). Ta có thể kết hợp nhiều kiểu khác nhau bên trong các lớp (class)

khác nhau của cùng layer.

GROUP[string]: Nhóm các class lại với nhau. Nó chỉ được sử dụng khi 1

CLASSGROUP ở mức layer được thiết lập. Nếu thông số của CLASSGROUP được thiết

lập, thì chỉ những class có cùng một nhóm được xem xét để xuất hình ảnh. Ví dụ:

Page 12: Tuan 10

LAYER

CLASSGROUP “group1”

CLASS

NAME “name1”

GROUP “group1”

……

END

CLASS

NAME “name2”

GROUP “group2”

……

END

CLASS

NAME “name3”

GROUP “group1”

…….

END

…….

END

KEYIMG[filename]: Tên đầy đủ của 1 file của hình ảnh chú thích cho 1 class.

Hình ảnh này được xây dựng khi tạo chú thích (hay yêu cầu 1 biểu tượng chú thích thông

qua mapscript hay ứng dụng CGI).

LABEL: Đánh dấu bắt đầu của đối tượng label.

MAXSCALEDENOM[double]: Tỉ lệ nhỏ nhất mà CLASS được vẽ. Tỉ lệ được

biểu diễn ở dạng mẫu số của 1 phân số tỉ lệ thực sự. Ví dụ 1:24000.

MINSIZE[interger]: Kích thước nhỏ nhất được tính bằng pixel để vẽ 1 biểu tượng.

Mặc định là 0.

NAME[string]: Tên được sử dụng cho chú thích của CLASS.

Page 13: Tuan 10

OUTLINECOLOR[r][g][b]: Màu được sử dụng để vẽ viền cho đa giác. Ký hiệu

LINE không hỗ trợ OUTLINECOLOR.

SIZE[interger]: Chiều cao tính bằng pixel của ký hiệu/mẫu được sử dụng. Chỉ có

tác dụng với những symbol có khả năng co dãn. Với những biểu tượng dạng vector (và

ellipse) kích thước mặc định dựa vào độ lớn giá trị của y ở dạng điểm định nghĩa ký

hiệu. Với pixmaps giá trị mặc định là chiều cao của hình ảnh. Kích thước mặc định là 1

đối với những ký hiệu TIF.

STATUS[off|on]: Thiết lập giá trị trạng thái hiển thị của lớp. Giá trị mặc định là

on.

STYLE: Đánh dấu bắt đầu của đối tượng style. 1 class có thể chứa nhiều style.

SYMBOL[integer|string|filename]: Ký hiệu dùng đặt tên hay đánh số để sử dụng

cho tất cả các đặc tính (feagure) nếu những bản thuộc tính không được sử dụng.

TEMPLATE[filename]: File khuôn mẫu (template) hoặc URL để sinh kết quả truy

vấn đến người sử dụng.

TEXT[string]: Chuỗi text tĩnh của đặc tính label trong class. Nó ghi đè giá trị của

chuỗi lấy từ LABELITEM. Chuỗi có thể được tạo bởi 1 biểu thức được giới hạn sử dụng

ký hiệu (). Việc này giúp ta có thể kết hợp nhiều thuộc tính thành 1 label duy nhất. Ví dụ

([FIRSTNAME],[LASTNAME]).

3.3. Đặc tính (feature)

Định nghĩa các đặc tính (feature) bên trong. Có thể sử dụng các đặc tính bên trong này

khi nó không có khả năng tạo 1 shapefile. Những đặc tính bên trong cũng có thể được

xây dựng thông qua url hay form. Mở đầu với từ khóa FEATURE và kết thúc với từ khóa

END.

POINTS

Cặp các giá trị xy kết thúc với END. Ví dụ: POINTS 1 1 50 50 1 50 1 1 END

Những lớp POLYGON/POLYLINE phải được bắt đầu và kết thúc tại cùng 1

điểm.

TEXT[string]: Chuỗi sử dụng để đánh nhãn đặc tính này.

Page 14: Tuan 10

WKT[string]

1 hình học được thể hiện trong định dạng OpenGIS Well Known Text. Đặc tính

này chỉ được hỗ trợ nếu Mapserver được xây dựng với sự hỗ trợ của OGR hoặc

GEOS

Ví dụ: WKT “POLYGON((500 500, 3500 500, 3500 2500, 500 2500, 500 500))”

WKT “POINT(2000 2500)”

3.4. Nhãn (label)

Đối tượng này được dùng để định nghĩa 1 nhãn, được dùng để chú thích 1 đặc tính

bằng một đoạn văn bản. Nhãn cũng có thể được sử dụng như những ký hiệu thông qua

việc sử dụng các phong TrueType khác nhau.

Ví dụ:

LABEL

COLOR [MYCOLOR]

OUTLINECOLOR 255 255

255

FONT sans

TYPE truetype

SIZE 6

POSITION auto

PARTIALS FALSE

END

COLOR [red][green][blue]|[attribute]

Màu dùng để vẽ

[attribute] được giới thiệu ở bản 5.0 dùng để xác định tên của 1 chi tiết (item)

trong bản thuộc tính để sử dụng cho những giá trị màu. Dấu ngoặc vuông [] là bắt

buộc. Ví dụ trong DBF của shapefile có 1 trường tên là “MYCOLOR” chứa giá trị

màu của mỗi record. Đối tượng LABEL khi đó có thể chứa như trên.

Page 15: Tuan 10

OUTLINECOLOR [red][green][blue]|[attribute]

Màu dùng để vẽ 1 pixel xung quanh text.

[attribute] tương tự dùng để xác định 1 thuộc tính màu có sẵn.

FONT [name]: Bí danh của font (định nghĩa trong FONTSET) sử dụng để đánh nhãn.

SIZE[integer]|[tiny|small|medium|large|giant]|[attribute]

Kích thước của text. Sử dụng integer để chọn kích thước tính bằng pixel của nhãn

dựa trên font TrueType. Với nhãn có font bitmap sử dụng 5 loại tiny, small,

medium, large, giant.

[attribute] tương tự như trên dùng để xác định thuộc tính kích thước có sẵn.

TYPE[bitmap|truetype]: Xác định kiểu của font được sử dụng. Tổng quát font có dạng

bitmap được vẽ nhanh hơn font TrueType. Tuy nhiên font TrueType có thể co dãn và

có nhiều kiểu chữ khác nhau. Cần gán giá trị của font TrueType nếu muốn sử dụng.

POSITION[ul|uc|ur|cl|cc|cr|ll|lc|lr|auto]

Vị trí của label tương đối đến điểm nhãn. Kí tự đầu tiên là vị trí của Y, giá trị tiếp theo

là giá trị của X. “Auto” chỉ cho mapserver tính vị trí của nhãn sao cho nó không đụng với

các nhãn khác. Với điểm và đa giác mapserver chọn 1 trong 8 vị trí ở ngoài (loại trừ cc).

Với đường thẳng, mapserver chỉ sử dụng lc và uc, cho đến khi nó tìm thấy vị trí không

đụng với các nhãn khác đã được vẽ. Nếu như tất cả các vị trí đều bị đụng độ thì nhãn sẽ

không được vẽ.

MINSIZE[integer]: Kích thước font nhỏ nhất được sử dụng khi text bị co giãn kích

thước. Mặc định là 4.

MAXSIZE[integer]: Kích thước font lớn nhất được sử dụng khi text bị co giãn kích

thước. Mặc định là 256.

ANGLE[double|auto|follow|attribute]: Quy định góc để vẽ nhãn.

BACKGROUNDCOLOR[r][g][b]: Chọn màu dùng để vẽ hình nền chữ nhật. Mặc

định không được vẽ.

BACKGROUNDSHADOWCOLOR[r][g][b]: Màu dùng để vẽ hình chữ nhật đỗ

bóng. Mặc định không vẽ.

BACKGROUNDCOLORSIZE[x][y]: Xác định độ xa của bóng hình chữ nhật nền.

Page 16: Tuan 10

FORCE[true|false]: Buộc nhãn của 1 lớp được bật bất chấp đụng độ. Mặc định là

false.

3.5. Lớp (Layer)Đây là đối tượng được sử dụng nhiều nhất trong mapfile. Nó mô tả những lớp (layer)

được sử dụng để sinh ra bản đồ. Các lớp được vẽ theo thứ tự xuất hiện của nó trong

mapfile (lớp đầu tiên nằm ở dưới cùng, lớp cuối cùng nằm ở trên cùng).

CLASS: Dấu hiệu bắt đầu của đối tượng CLASS.

CLASSGROUP: Xác định 1 nhóm CLASS được sử dụng để vẽ ra màn hình. Thông

số GROUP của đối tượng CLASS phải được sử dụng phối hợp với CLASSGROUP.

CONNECTION[string]

Chuỗi kết nối database để truy xuất dữ liệu từ xa.

Chuỗi kết nối đến SDE bao gồm hostname, tên của thực thể, tên của database,

username và password tách biệt bởi dấu phẩy.

Chuỗi kết nối đến PostGIS cơ bản là 1 chuỗi kết nối PostgreSQL thông thường có

dạng sau “user = nobody password = **** dbname = dbname host = localhost port

= 5432”

Chuỗi kết nối Oracle: user/pass[@db].

CONNECTIONTYPE[local|sde|ogr|postgis|oraclespacial]: Kiểu của kết nối mặc định

là local.

DATA[filename]|[sde parameters]|[postgis table/column]|[oracle table|column]

Filename: đường dẫn đầy đủ đến 1 dữ liệu không gian để xử lý. Đối với shapefile

thì không cần thiết phần mở rộng. Có thể xác định tương đối đến SHAPEPATH từ

đối tượng MAP.

Nếu là lớp PostGIS, thông số phải ở dạng “<columnname> from <tablename>”.

Trong đó “columnnane” là tên của cột chứa các đối tượng địa lý còn “tablename”

là tên của bản chứa dữ liệu địa lý.

Với Oracle, sử dụng “shape FROM table” hoặc “shape FROM (SELECT

statement)” hay có thể sử dụng những câu truy vấn phức tạp của Oracle. Chú ý khi

Page 17: Tuan 10

vấn đề hiệu suất khi sử dụng các truy vấn con. Thay vào đó sử dụng FILTER của

mapserver khi có thể.

FEATURE: Đánh dấu bắt đầu đối tượng FEATURE.

FILTER[string]: Thông số này cho phép lọc dữ liệu thuộc tính cụ thể cùng lúc với

việc lọc dữ liệu không gian nhưng trước khi những biểu thức trong class được tính

toán. Đối với OGR và shapefile chuỗi chỉ là những biểu thức chính quy đơn giản của

mapserver. Đối với những database không gian chuỗi là một mệnh đề WHERE SQL

hợp lệ với database cụ thể.

Ví dụ: FILTER “type=’road’ and size<2”

FILTERITEM[attribute]: Item sử dụng với những biểu thức FILTER đơn giản. Chỉ

đối với OGR và shapefile.

LABELITEM[attribute]: Tên của item trong bản thuộc tính sử dụng cho việc chú

thích class.

METADATA

Từ khóa này cho phép dữ liệu bất kỳ được lưu như những cặp tên giá trị. Được sử

dụng với OGC WMS để định nghĩa những thứ như tựa đề của lớp. Nó cũng cho phép

tính uyển chuyển hơn trong việc tạo khuôn mẫu (template), như bất cứ thứ gì được đặt ở

đây đều có thể được truy xuất thông qua các tag trong template.

Ví dụ:

METADATA

Title “my layer title”

Author “me”

END

NAME[string]

Tên ngắn cho layer. Giới hạn trong 20 ký tự. Tên này là mối liên kết giữa mapfile và

web, web sử dụng để tham khảo đến mapfile. Do đó chúng buộc phải giống nhau. Tên

này phải duy nhất, trừ khi 1 layer này thay thế layer khác ở những tỉ lệ khác nhau. Sử

dụng chọn lựa GROUP để tập hợp các layer lại với nhau.

PROJECTION: Kí hiệu bắt đầu đối tượng PROJECTION.

Page 18: Tuan 10

STATUS[on|off|default]

Gán trạng thái hiện tại của layer. Thường được sửa đổi bởi chính mapserver. Mặc

định là layer được hiện.

Giá trị của STATUS

Ở chế độ CGI, những layer với STATUS DEFAULT không thể bị ẩn sử dụng cơ

cấu thông thường. Nên để STATUS ở trạng thái DEFAULT cần tìm lỗi, sau đó

nên gán giá trị ON/OFF khi sử dụng thông thường.

Với WMS, những lớp trên mapfile với STATUS DEFAULT luôn luôn được gửi

đến client.

TYPE[point|line|polygon|circle|annotation|raster|query|chart]

Xác định dữ liệu được vẽ như thế nào. Không cần giống với kiểu của shapefile. Ví dụ:

1 shapefile kiểu POLYGON có thể được vẽ như 1 layer dạng POINT, nhưng 1 shapefile

dạng POINT không thể vẽ như 1 layer dạng POLYGON.

UNITS[feet|inches|kilometers|meters|miles|dd|pixels|percentages]: Đơn vị của layer.

3.6. Chú thích (legend)Xác định chú thích được tạo như thế nào. Các thành phần của chú thích được tạo một

cách tự động từ các từ những đối tượng class của những lớp riêng lẻ. Mở đầu bằng từ

khóa LEGEND và kết thúc bằng từ khóa END.

Kích thước của hình ảnh chú thích không thể xác định trước khi nó được tạo do đó

nên cẩn thận khi nhập kích thước cố định chiều rộng và chiều cao trong <img> tag của

file template.

IMGCOLOR[r][g][b]: Màu dùng để vẽ chú thích.

LABEL: Đối tượng này dùng để vẽ nhãn cho chú thích.

OUTLINECOLOR[r][g][b]: Màu dùng để viền.

POSITION[ul|uc|ur|ll|lc|lr]: Vị trí vẽ chú thích được nhún vào mapfile. Mặc định là

góc phải của bản đồ (lr).

STATUS [on|off|embed]: Để xác định cách hình ảnh chú thích được vẽ.

Page 19: Tuan 10

TRANSPARENT[on|off]: Xác định tính trong suốt của chú thích được vẽ. Mặc định

là off.

3.7. MapĐối tượng chủ của mapfile. Nó định nghĩa những tham số của ứng dụng bản đồ.

EXTENT[minx][miny][maxx][maxy]

Kích thước không gian của bản đồ được tạo. Trong hầu hết các trường hợp ta cần xác

định giá trị này, mặc dù mapserver đôi lúc cũng có thể tính giá trị này nếu chưa được xác

định.

FONTSET[filename]: Filename đường dẫn đến file fontset được sử dụng. Có thể là

đường dẫn tương đối đến mapfile, hay đường dẫn tuyệt đối.

IMAGECOLOR[r][g][b]: Màu khởi tạo bản đồ (màu nền).

IMAGETYPE[gif|png|jpeg|wbmp|gtiff|swf|userddefined]: Định dạng hình ảnh xuất ra.

SHAPEPATH[filename]: Chỉ đến đường dẫn chứa những shapefile.

STATUS [on|off]: Xác định bản đồ có được vẽ hay không. Đôi lúc bản đồ không

được vẽ để chỉ hiện bản đồ tham khảo hay thanh tỉ lệ.

4. Các thành phần template (html template)4.1. Giới thiệu

Template được sử dụng:

Định rõ giao diện của ứng dụng CGI.

Trình bài kết quả của truy vấn.

Nó chỉ dẫn cách trình bài kết quả, cả truy vấn và bản đồ đến người sử dụng. Các

template luôn luôn là các trang html mặc dù chúng có thể là 1 URL. Những template có

dạng URL chỉ có thể sử dụng với các QUERY hay ITEMQUERY đơn giản. Kết quả mà

có quá nhiều thay thế như định nghĩa bên dưới thì không phù hợp với chúng. Giao diện

đơn giản phóng to/thu nhỏ/canh giữa sử dụng những file template đơn trong khi đó những

truy vấn phức tạp đòi hỏi cần có nhiều template. Template thường được sử dụng kết hợp

với javascript để thêm tính năng động vào trong giao diện cơ bản.

Chú thích:

Page 20: Tuan 10

Tất cả các tham số CGI có thể được tham khảo ở những thay thế của template, những

tham số cụ thể của mapserver cũng như những tham số do người dùng định nghĩa.

Theo nguyên tắc các thông số được truyền bởi mapserver dưới ánh xạ 1:1. Đặc tính

này là thiết yếu cho việc hiện thực 1 ứng dụng mapserver.

Tham khảo bên dưới chỉ liệt kê danh sách những chuỗi thay thế template đặc biệt cần

thiết để lấy thông tin sửa đổi bởi mapserver, ví dụ như tỉ lệ mới, những kết quả truy

vấn .v.v..

Những chuỗi thay thế thì phân biệt chữ hoa và thường.

Những thay thế thuộc tính chi tiết phải giống và cùng kiểu chữ hoa thường với các chi

tiết trong file database.

ArcView và ArcInfo thường sinh ra những file dbase với tên các chi tiết luôn ở dạng

in hoa.

Một vài sự thay thế có thể ở dạng escapse. Như 1 ví dụ, điều này cần thiết khi sinh

những link bên trong template. Việc này có thể truyền kích thước (mapextent) hiện tại

đến 1 cuộc gọi mapserver mới. [mapext] được thay thế bởi tập các tọa độ góc trái

dưới và trên phải được phân ranh giới bởi những khoảng trắng. Việc này sẽ làm hỏng

URL. Khi đó [mapext_esc] được thay thế bởi tập mã hóa phù hợp.

4.2. Định dạngTemplate đơn giản là những file html hay những chuỗi URL mà chứa những ký tự đặc

biệt có thể được thay thế bởi mapserv mỗi khi template được xử lý. Sự thay thế đơn giản

cho phép thông tin như những layer được bật hay kích thước không gian được truyền từ

người sử dụng đến chương trình mapserv hay ngược lại. Thường những giá trị mới được

đẩy vào trong những biến của của form mà sẽ được truyền tiếp lại. Danh sách của những

ký tự đặc biệt và những biến của form được giới thiệu sau đây. Những template HTML

có thể bao gồm javascript và việc gọi từ java.

4.3. Tổng quát Đây là những biến tổng quát nhất về mapserver như số phiên bản của mapserver,

id, tên máy chủ của webserver, số port mà webserver lắng nghe.

Page 21: Tuan 10

[version]: Số phiên bản của mapserver.

[id]: Id phiên duy nhất. Id này có thể được truyền thông qua thông qua form nhưng

thường được sinh ra bởi phần mềm. Trong trường hợp đó, id là sự kết hợp của thời

gian UNIX (hay tương đương NT) và id quá trình. Trừ khi nhận nhiều hơn 1 yêu cầu

trong 1 giây hơn những id quá trình của hệ thống id có thể coi như là duy nhất.

[hostname]: Tên máy chủ của webserver.

[port]: Port mà web server lắng nghe.

4.3.1. File tham khảo

Đây là những biến giúp tham khảo đến file mà mapserver sinh ra. Thường các biến

sẽ được thay thế bằng đường dẫn tương đối đến các file hình mà mapserver sinh ra.

[img]

Đường dẫn (tương đối đến góc) của hình ảnh mới, chỉ tên hình ảnh nếu như

IMAGE_URL không được thiết lập trong mapfile.

Ở trong giao diện template, [img] được thay thế bởi đường dẫn đến hình ảnh của

bản đồ. Trong 1 truy vấn sinh template, nó được thay thế bởi đường dẫn đến hình

ảnh bản đồ truy vấn.

[ref]: Đường dẫn tương đối đến gốc của hình ảnh tham khảo mới.

[legend]: Đường dẫn (tương đối đến góc) của hình ảnh chú thích mới được sinh bởi

mapserver.

[scalebar]: Đường dẫn (tương đối đến góc) của hình ảnh thanh tỉ lệ mới.

[queryfile]: Đường dẫn đến file truy vấn.

[map]: Đường dẫn đến file bản đồ.

4.3.2. Hình ảnh hình học

Đây là các biến trả về các giá trị trong hình học như tọa điểm giữa của bản đồ, kích

thước của bản đồ, chiều dài và chiều rộng của bản đồ, tỉ lệ của hình ảnh hiện tại v.v..

[center]: Xác định điểm giữa của hình ảnh tính theo pixel. Hữu dụng cho việc thiết lập

biến imgxy khi kích thước bản đồ thay đổi.

[center_x],[center_y]: Tọa độ x, y của điểm giữa của hình ảnh.

Page 22: Tuan 10

[mapsize],[mapsize_esc]:

Kích thước của hình ảnh hiện tại tính bằng những cột và những hàng.

Có thể sử dụng với phiên bản (escape).

[mapwidth],[mapheight]: Chiều rộng và chiều cao của hình ảnh hiện thời.

[scaledenom]: Tỉ lệ của hình ảnh hiện tại. Giá trị chính xác không thích hợp với thông

tin người sử dụng nhưng thiết yếu cho 1 vài ứng dụng. Giá trị có thể được làm tròn sử

dung javascript hay xử lý ở server.

4.3.3. Bản đồ hình học

Trả về kết quả các giá trị của bản đồ như là tọa độ (x, y) điểm click chuột trên bản

đồ, tọa độ (x, y) nhỏ nhất và lớn nhất của bản đồ mới được tạo.

[mapx],[mapy]: Tọa độ X và Y của điểm click chuột.

[minx],[miny],[maxx],[maxy]: Tọa độ nhỏ nhất/ lớn nhất X, Y của kích thước bản đồ

mới.

4.3.4. Lớp (layer)

Các biến sẽ được thay thế dùng để điều khiển layer như việc cho layer hiện hay ẩn

v.v..

[layername_check|select]: Được sử dụng để tạo những lớp qua phiên tạo bản đồ.

Chuỗi được thay thế với từ khóa “checked”, “selected” hay “”. Layername là tên của

lớp như nó xuất hiện trong mapfile. Nó không hoạt động đối với những layer được bật

ở chế độ default.