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ệ.
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
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
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 đồ,...)
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.
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.
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.
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.
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
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.
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ụ:
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.
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.
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.
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.
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
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.
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ẽ.
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:
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.
[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.
[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.