Tải bản đầy đủ (.pdf) (49 trang)

Xây dựng hệ thống cung cấp dịch vụ bản đồ trực tuyến theo chuẩn TMS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.96 MB, 49 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





HOÀNG THỊ HIỀN




XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ
TRỰC TUYẾN THEO CHUẨN TMS




LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN






Hà Nội - 2014




ĐẠI HỌC QUỐC GIA HÀ NỘI


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




HOÀNG THỊ HIỀN



XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ
TRỰC TUYẾN THEO CHUẨN TMS


Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104






LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS.Nguyễn Hải Châu



Hà Nội - 2014



Lời cảm ơn
Trước hết, tôi xingửi lời cảm ơn sâu sắc nhất đến PGS.TS Nguyễn Hải Châu, người
đã tận tình hướng dẫn tôi trong suốt quá trình thực hiện luận văn tốt nghiệp.
Tôi xin cảm ơn trường Đại học Công Nghệ - Đại học Quốc gia Hà Nội và các thầy
cô giáo đã giảng dạy tôi trong suốt thời gian học tập tại trường, tạo điều kiện, giúp đỡ tôi
hoàn thiện luận văn này. Xin cảm ơn gia đình, bạn bè, đồng nghiệp đã luôn động viên
giúp đỡ tôi trong thời gian học tập và hoàn thành luận văn.
Trong quá trình nghiên cứu, thực hiện, mặc dù đã cố gắng, nỗ lực để hoàn thiện,
luận văn của tôi cũng không tránh khỏi những thiếu sót và hạn chế. Kính mong nhận được
sự đóng góp của thầy cô và các bạn.
Tôi xin chân thành cảm ơn!

Học viên
Hoàng Thị Hiền


Lời cam đoan
Tôi xin cam đoan việc xây dựng hệ thống dịch vụ cung cấp bản đồ trực tuyến theo
chuẩn TMS được trình bày trong luận văn này do tôi thực hiện dưới sự hướng dẫn của
PGS.TS.Nguyễn Hải Châu.
Tất cả những tham khảo từ các nghiên cứu liên quan đều được nêu nguồn gốc một
cách rõ ràng từ danh mục tài liệu tham khảo của luận văn. Trong luận văn, không có việc
sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về tài liệu tham
khảo.


Hà Nội, ngày 06 tháng 06 năm 2014
Tác giả
Hoàng Thị Hiền



- 1 -
Mục lục

Danh mục các hình vẽ - 3 -
Danh mục các bảng - 4 -
Một số khái niệm và thuật ngữ - 5 -
Mở đầu - 6 -
Chương 1: TỔNG QUAN VỀ HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ TRỰC
TUYẾN THEO CHUẨN TMS - 7 -
1.1 Khái quát về chuẩn TMS - 7 -
1.2 Nền tảng của hệ thống bản đồ trực tuyến - 7 -
1.3 Một số hệ thống bản đồ trực tuyến hiện nay - 8 -
1.3.1. Khái quát về hệ toạ độ địa lý - 8 -
1.3.2. Google Map - 8 -
1.3.3. Bing Map - 10 -
1.4 Các phương pháp xây dựng bản đồ trực tuyến. - 11 -
1.4.1. MapServer - 11 -
1.4.1.1. Giới thiệu - 11 -
1.4.1.2. Đặc tính - 11 -
1.4.1.3. Cấu trúc của một ứng dụng Mapserver - 13 -
1.4.1.4. Cách thức hoạt động - 14 -
1.4.2. Openlayers - 14 -
Chương 2: XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ TRỰC TUYẾN- 16 -
2.1. Xử lý ảnh - 16 -
2.1.1. Các loại dữ liệu cơ bản - 16 -
2.1.2. Hình ảnh không gian địa lý - 16 -
2.1.3. Xử lý hình ảnh - 18 -
2.1.3.1. Nội suy 1: Nội suy các pixel gần nhất (Nearest Neighbor) - 18 -
2.1.3.2. Nội suy 2: Nội suy song tuyến (Bilinear) - 18 -

2.1.3.3. Nội suy 3: Nội suy song khối (Bicubic) - 19 -
2.1.4. Lựa chọn định dạng ảnh cho tile - 19 -
2.1.5. Lựa chọn kích thước ảnh - 20 -
2.2. Tạo ảnh tile - 22 -
2.2.1. Tạo ảnh tile từ tập ảnh ngẫu nhiên - 22 -
2.2.2. Chuẩn bị cho việc tạo ảnh - 22 -
2.2.2.1. Tạo ảnh tile bottom-up - 22 -
2.2.2.2. Lựa chọn mức cơ sở cho tập các ảnh nguồn - 23 -
2.2.3. Thuật toán tạo ảnh tile - 24 -
2.2.4. Quá trình phóng to thu nhỏ của mức có độ phân giải thấp hơn - 25 -
2.3. Lưu trữ - 25 -
2.3.1. Lưu trữ ảnh tile dưới dạng các file riêng biệt - 26 -
2.3.2. Lưu trữ các tile trong database - 28 -
2.3.3. Các định dạng file tuỳ chọn - 29 -
- 2 -
2.4. Hiển thị tile ở client - 29 -
2.4.1. Tính toán tile được hiển thị - 29 -
2.4.1.1. Các mức phóng rời rạc - 29 -
2.4.1.2. Các mức phóng liên tục - 30 -
2.4.2. Tìm kiếm tile - 31 -
2.4.2.1. Lưu trữ tile cục bộ - 31 -
2.4.2.2. Lưu trữ tile trên mạng - 31 -
2.4.3. Tạo khung nhìn bản đồ - 32 -
2.4.3.1. Khung nhìn có mức phóng rời rạc - 32 -
2.4.3.2. Khung nhìn có mức phóng liên tục - 32 -
Chương 3: THỰC NGHIỆM - 33 -
3.1. Môi trường cài đặt server - 33 -
3.2. Tạo tập ảnh tile - 33 -
3.2.1. Giới thiệu công cụ TileMill - 33 -
3.2.2. Tạo tập ảnh nguồn tile - 33 -

3.3. Cấu trúc dữ liệu - 34 -
3.4. Thực hiện - 36 -
Kết luận - 44 -
Tài liệu tham khảo - 45 -
- 3 -
Danh mục các hình vẽ
Hình 1.1: Cấu trúc thư mục của Google Map
Hình 1.2: Mô tả lưới tile ở 3 mức phóng 0, 1, 2
Hình 1.3: Mô tả việc đánh chỉ số của Bing Map
Hình 1.4: Cách thức hoạt động của MapServer
Hình 2.1: Hình ảnh không gian địa lý với đường biên bao
Hình 2.2 : Nội suy song tuyến sử dụng 4 điểm ảnh xung quanh để tính giá trị
Hình 2.3: Các điểm ảnh được mã hoá nhưng không được sử dụng để hiển thị khung nhìn
bản đồ
Hình 2.4: Mức phóng 1,2 và 3 của cùng một lớp
Hình 2.5: Mô tả một mức của layer
Hình 2.6: Cách tổ chức các file ảnh tile
Hình 3.1: Giao diện công cụ TileMill
Hình 3.2: Cấu trúc layer phường xã
Hình 3.3: Cấu trúc layer quận huyện
Hình 3.4: Cấu trúc layer tỉnh thành
Hình 3.5: Giao diện bản đồ phường xã – mức phóng 6
Hình 3.6: Giao diện bản đồ quận huyện – mức phóng 7
Hình 3.7: Giao diện bản đồ tỉnh thành – mức phóng 8
Hình 3.8: Giao diện bản đồ đường xá - quận huyện – mức phóng 7


- 4 -
Danh mục các bảng
Bảng 2.1 : Trình duyệt hỗ trợ các định dạng ảnh khác nhau

Bảng 2.2 : Chi tiết của các dạng nén khác nhau
Bảng 2.3: Số lượng tile và độ phân giải cho mỗimức phóng
Bảng 3.1: Thời gian đọc tile của các phương thức lưu trữ

- 5 -
Một số khái niệm và thuật ngữ

STT
Thuật ngữ
Tiếng Anh
1
TMS
Tile Map Service
2
DPP
Degrees per pixel
3
JPEG
Joint Photographic Experts Group
4
PNG
Portable Network Graphic
5
HTML
Hyper Text Markup Language
6
MrSID
Multi-resolution Seamless Image Database
7
DBMS

Database Management System
8
BLOB
Binary Large Object
9
GIS
Geographic Information System


- 6 -
Mở đầu
Ngày nay, cùng với sự phát triển không ngừng của công nghệ thông tin đã đưa tin
học xâm nhập sâu vào nhiều lĩnh vực khoa học đời sống, mở ra một giai đoạn mới trong
quá trình phát triển khoa học, đặc biệt là sự phát triển của GIS trong thông tin địa lý.
Bản đồ số đã trở nên phổ biến, cho phép người dùng có thể dễ dàng tra cứu bản đồ
thông qua Internet. Đây là loại bản đồ được thành lập dưới dạng cơ sở dữ liệu máy tính
trên cơ sở xử lý số liệu nhận được từ các thiết bị quét chuyên dụng, ảnh hàng không, ảnh
vệ tinh, viễn thám hoặc số hóa các bản đồ được chếtác theo phương pháp cổ điển, trong
đó toàn bộ thông tin về các đối tượng được mã hóa thành dữ liệu số và lưu giữ trên các
băng, đĩa từ, đĩa quang… Thông tin trong bản đồ số thường được tổ chức quản lý theo các
lớp, tập hợp các dữ liệu có cùng thuộc tính (vùng, đường, điểm, chữ) vềcác đối tượng
cùng loại, thể hiện một nội dung của bản đồ tổng thể. Số lượng các lớp tùy thuộc vào yêu
cầu cụ thể, nguồn cung cấp dữ liệu (các cơ sở dữ liệu ảnh quét có thể cho hàng trăm lớp)
và khả năng quản lý của phần mềm chuyên dùng. Tùy theo yêu cầu sử dụng, các lớp
thông tin có thể được hiển thị trên màn hình hoặc in trên giấy với tỉ lệ tùy chọn, riêng biệt
hoặc chồng xếp với nhau tạo thành các bản đồ theo tỉ lệ thích hợp.
Như vậy, sự phát triển nhanh chóng của công nghệ máy tính và công nghệ Web,
Internet đã trở thành chủ đạo của nền tảng GIS. Sự ra đời của WebGIS đã đánh dấu sự
phát triển vượt bậc của công nghệ GIS.WebGIS có thể dễ dàng được xây dựng thông qua
các mã nguồn mở như MapServer, Openlayer,Mapbuilder, GeoServer, Việc xây dựng

một hệ thống bản đồ trực tuyến trên nền mã nguồn mở giúp giảm chi phí đầu tư và có độ
an toàn cao.
Trong phạm vi khoá luận này, tôi xin trình bày giải pháp xây dựng hệ thống bản đồ
trực tuyến dạng tile dựa trên mã nguồn mở là Mapserver và Openlayer.


- 7 -
Chương 1: TỔNG QUAN VỀ HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ
TRỰC TUYẾN THEO CHUẨN TMS
1.1 Khái quát về chuẩn TMS
Tile Map Service (TMS) không phải là một “chuẩn chính thức” được phát triển bởi
Open Source Geospatial Foundation (OSGeo). Tile Web Service cung cấp quyền truy
nhập vào các nguồn tài nguyên, đặc biệt, để tạo ra các tile ở các mức phóng cố định. Các
nguồn tài nguyênnày được truy cập thông qua RESTinterface. Các nguồn tài nguyên bao
gồm:
 Root resource: mô tả các phiên bản có sẵn của <TileMapService> (có thể bao
gồm cả các dịch vụ khác).
 <TileMapService> resource: cung cấp mô tả siêu dữ liệu về dịch vụ và danh
sách các <TileMap> có sẵn.
 <TileMap> resource: mô tả các lớp của bản đồ. <TileMap> chính là một tập các
biểu diễn bản đồ với mức phóng phù hợp. Mỗi một mức phóng được chia thành
các tile ảnh không gian,được gọi là <TileSet>
 Tile Resource: Nguồn gốc của <TileMap> được định nghĩa trong các toạ độ của
hệ thống tham chiếu không gian của <TileMap>. Toạ độ x và toạ độ y của các
tile tỉ lệ thuận tương ứng với toạ độ x, toạ độ y của hệ thống tham chiếu không
gian. Các tile được đánh địa chỉ trong “href” của <TileSet> với toạ độ x là tên
thư mục, toạ độ y là tên file.
1.2 Nền tảng của hệ thống bản đồ trực tuyến
Dịch vụ cung cấp bản đồ trực tuyến ra đời vào nửa cuối thập niên 1990, nổi bật là
các thệ thống Yahoo! Maps, MapQuest và Microsoft’s TerraServer. Các hệ thống này đều

dựa trên nền tảng web và ban đầu còn rất đơn giản. Người dùng chỉ di chuyển được khi
ấn vào các nút mũi tên xung quanh bản đồ. Khi người dùng ấn vào một nút, bản đồ được
di chuyển tới vùng đã được định trước. Bên cạnh đó hệ thống cũng hỗ trợ chức năng
phóng to, thu nhỏ và cho phép người dùng kéo, vẽ vùng bản đồ cần được hiển thị.
Đặc điểm chung của tất các các hệ thống này là khả năng tải và hiển thị ảnh bản đồ
còn rất chậm. Nguyên do là các hệ thống này tạo ra các file ảnh lớn để hiển thị. Mỗi khi
người dùng di chuyển sang trái hoặc phải, hệ thống phải tạo và gửi lại ảnh cho client.
Thời kỳ này các trình duyệt web cũng chưa được phát triển nhiều, do vậy giao diện chỉ
được viết bằng HTML hoặc với một số lệnh Javascript.
Vào năm 2005, Google Map ra đời và đã thay đổi cách thức xây dựng một hệ thống
bản đồ trực tuyến. Thay vì tạo và hiển thị các ảnh bản đồ với kích thước lớn, Google đã
phát triển “Slippy Map” – giao diện giúp người dùng dễ dàng di chuyển, phóng to, thu
- 8 -
nhỏ bản đồ. Cách thức mà Google đã sử dụng chính là chia nhỏ ảnh lớn thành các ảnh tile
với kích thước nhỏ hơn. Các tile được tạo và lưu trên server. Vì đã được tạo sẵn nên khi
được yêu cầu, server sẽ trả về ảnh bản đồ cho client rất nhanh. Các tile sẽ được đánh số và
được cache trên trình duyệt web. Ảnh bản đồ được cắt ra thành các ảnh nhỏ do vậy khi
người dùng di chuyển bản đồ chỉ những vùng chưa được cache mới gửi yêu cầu tới
server.
1.3 Một số hệ thống bản đồ trực tuyến hiện nay
1.3.1. Khái quát về hệ toạ độ địa lý
Hệ toạ độ địa lý được quy định chung và thống nhất cho toàn bộ Trái đất. Hệ toạ độ
địa lý xác định vị trí của mỗi điểm trên mặt đất bằng hai yếu tố địa lý, đó là kinh độ và
vĩ độ .
 Kinh độ địa lý của một điểm là góc nhị diện hợp bởi mặt phẳng chứa kinh tuyến
gốc và mặt phẳng chứa kinh tuyến đi qua điểm đó. Kinh tuyến gốc là kinh tuyến
đi qua đài thiên văn Greenwich ở gần London - thủ đô nước Anh. Kinh độ có
giá trị từ 0
0
đến 180

0
từ kinh tuyến gốc về phía Đông và phía Tây. Ở Đông bán
cầu gọi là kinh độ Đông, ở Tây bán cầu gọi là kinh độ Tây.
 Vĩ độ địa lý của một điểm là góc hợp bởi phương dây dọi đi qua điểm đó với
mặt phẳng chứa xích đạo. Các điểm nằm ở phía Bắc bán cầu sẽ có vĩ độ Bắc,
các điểm nằm ở phía Nam bán cầu sẽ có vĩ độ Nam. Vĩ độ có giá trị từ0
o
tại
điểm trên đường xích đạo đến 90
o
tại hai cực.
1.3.2. Google Map
Google Map (thời gian trước còn gọi là Google Local) là một dịch vụ ứng dụng và
công nghệ bản đồ trực tuyến trên web miễn phí được cung cấp bởi Google và hỗ trợ nhiều
dịch vụ dựa vào bản đồ như Google Ride Finder và một số có thể dùng để nhúng vào các
trang web của bên thứ ba thông qua Google Maps API. Nó cho phép thấy bản đồ đường
sá, đường đi cho xe đạp, cho người đi bộ (những đường đi ngắn hơn 6.2 dặm) và xe hơi,
và những địa điểm kinh doanh trong khu vực cũng như khắp nơi trên thế giới.
Google Map lưu trữ bản đồ dưới dạng ảnh, toàn bộ cấu trúc tile được lưu trữ trong
một thư mục con: thư mục cha/mức zoom/các hàng/các cột. Kích thước của tile là
256x256 pixel và được lưu dưới dạng png/jpg
- 9 -

Hình 1.1: Cấu trúc thư mục của Google Map

Google sử dụng một tập các mức phóng, tất cả các tile ứng với mỗi mức được lưu
trữ trong một thư mục con có tên tương ứng (hình 1.1). Tại mức phóng nhỏ nhất – mức
phóng 0 - mô tả toàn bộ thế giới với 1 tile duy nhất, tương ứng với toạ độ (0,0). Mỗi khi
tăng mức phóng lên, số lượng các tile sẽ được tăng lên theo cả 2 hướng Bắc – Nam và
Đông – Tây so với mức phóng trước đó.

Trong Google Map, các tile được đánh chỉ số dựa vào các hàng và cột. Cột được
đánh số từ trái qua phải, các hàng được đánh số từ trên xuống dưới.
- 10 -

Hình 1.2: Mô tả lưới tile ở 3 mức phóng 0, 1, 2
Với mỗi mức phóng, client sẽ tạo ra vùng bản đồ hiển thị bằng việc gửi yêu cầu tới
server để lấy các tile căn cứ vào mức phóng, cột và hàng.
1.3.3. Bing Map
Bing Map là một dịch vụ ứng dụng bản đồ được Microsoft phát triển. Trước đây nó
được biết tới với những tên gọi khác nhau như “Live Search Maps”, “Windows Live
Maps”, “Window Live Local” và “MSN Virtual Earth”.
Cũng như Google Map, Bing Map sử dụng tập các tile để hiển thị. Thư mục chứa
tile cũng có cấu trúc mức phóng/cột/hàng. Kích thước của tile là 256x256 pixel và được
lưu dưới dạng png/jpg . Tại mức phóng nhỏ nhất – mức phóng 1 – số lượng tile được lưu
là 2x2 tile. Sau mỗi mức phóng, số lượng tile tăng lên theo cả 2 hướng Bắc – Nam và
Đông – Tây.
Vị trí của tile tương ứng với mỗi mức phóng được xác định thông qua số thứ tự của
các cột và các hàng. Các cột được đánh số từ trái qua phải, các hàng được đánh số từ trên
xuống dưới. Ngoài ra, Bing Map còn sử dụng cách đánh chỉ số sử dụng cấu trúc dữ liệu
quadtree – được gọi là “quadkeys”.Mỗi “quadkeys” định danh duy nhất vị trí và mức
phóng của một tile. Tại mức phóng nhỏ nhất (mức phóng 1), mỗi tile được gán giá trị từ 0
tới 3. Tại mức phóng tiếp theo, mỗi một tile ở mức phóng trước được chia thành 4 tile với
độ phân giải cao. “Quadkeys” cho mỗi tile bắt đầu với giá trị được kế thừa từ mức phóng
trước cộng thêm giá trị 0,1,2,3 tương ứng . Độ dài của “quadkeys” bằng với mức phóng
của tile. Ngoài ra, thông qua “quadkeys” ta cũng có thể xác định được mối liên quan giữa
các tile trong không gian XY. Nói cách khác, khi hai tile có toạ độ XY gần nhau thường
có “quadkeys” tương đối giống nhau. Điều này là rất quan trọng để tối ưu hoá hiệu suất
của cơ sở dữ liệu, bởi vì các tile lân cận thông thường sẽ được truy vấn cùng. Do vậy, khi
lưu các tile này trên cùng một đĩa sẽ giảm thiểu số lượng đĩa cần đọc.


- 11 -

Hình 1.3: Mô tả việc đánh chỉ số của Bing Map
1.4 Các phương pháp xây dựng bản đồ trực tuyến.
1.4.1. MapServer
1.4.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ư một 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 …).
Đơn giản nhất có thể hiểu MapServer như là một chương trình CGI được đặt trong
webserver (MapServer đóng vai trò là ứng dụng GIS được đặt trên web server). Khi mà
có mộtyêu cầu 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. Yêu cầu 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.
1.4.1.2. Đặ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.
- 12 -
- Phông 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ệ thống MapServer bao gồm cả MapScript, cho phép các ngôn ngữ kịch bản
khác như PHP, Perl, Python và Java có thể truy xuất các hàm API của
MapServer. MapScript cung cấp môi trường thuận lợi cho việc phát triển các
ứng dụng tích hợp các dữ liệu phân tán. Ta có thể lấy dữ liệu không gian thông
qua các các ngôn ngữ kịch bản kể trên và dựa vào MapScript ta có thể tạo được
một ảnh bản đồ.

 MapServer có thể chạy trên nhiều môi trường điều mà các phần mềm thương
mại khác chưa làm được. MapServer với mã nguồn được viết bằng C++ được
biên dịch để có thể chạy trên các version của UNIX/Linux, Microsoft
Windows và cả trên MacOS.
 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 hỗ trợ các chuẩn của tổ chức OGC ( tổ chức phát triển các chuẩn
WebGIS): WMS, WFS, WCS, WMC,SLD, GML v.v 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, …
 Để giao tiếp với các thành phần khác trên môi trường web, MapServer sử dụng
chuẩn giao tiếp CGI (Common Gateway Interface).
 MapServer không hẳn là một ứng dụng WebGIS hoàn chỉnh tuy nhiên
MapServer cung cấp những chức năng cốt lõi đủ mạnh để đáp ứng cho các ứng
dụng web khác nhau. Ngoài việc tương tác với các dữ liệu GIS, MapServer còn
cho phép người dùng điều khiển và tùy biến việc tạo ra ảnh bản đồ, có thể dưới
dạng trang web, file ảnh,report…Nói cách khác MapServer đóng vai trò như
“map engine” được cung cấp nội dung để tạo ảnh bản đồ khi cần đến.
- 13 -
1.4.1.3. Cấu trúc của một ứng dụng Mapserver
Một ứng dụng mapserver đơn giản gồm các thành phần:
 Map file: Một 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 MapServerbiế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ý: MapServercó thể sử dụng nhiều kiểu nguồn dữ liệu địa lý. Mặc
định là ESRI shapefile.
 MapServerCGI: 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 MapServerCGI, 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.
 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, MapServercó 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. 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 một 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 một 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 trên trình duyệt.
Bằng những biến tham chiếu đến MapServerCGI 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 trình duyệt đọ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).
- 14 -
1.4.1.4. Cách thức hoạt động
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 trình duyệt web.
Chức năng chính của MapServerlà đọ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 một file hình như một hình ảnh bản đồ. Một layer có thể là
hình ảnh từ vệ tinh, đường biên giới của một quốc gia, hay một đ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.
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:

Hình 1.4: Cách thức hoạt động của Mapserver
1.4.2. Openlayers
OpenLayers giúp đặt bản đồ động lên trang web một cách dễ dàng.Nó trình bày tựa
đề bản đồ và đưa thông tin lên bản đồ.OpenLayers là thư viện viết bằng javascript để trình
bày dữ liệu bản đồ lên hầu hết các trình duyệt web, không phụ thuộc vào phía server. Nó
cung cấp javascript API để xây dựng ứng dụng web về địa lý, giống như Google Maps
hoặc MSN Virtual Earth APIs nhưng có điểm khác biệt là OpenLayers là mã nguồn mở.
- 15 -
OpenLayers là một framework Javascript/AJAX mở thuộc hướng client (client-side)
giúp che phủ nhiều lớp bản đồ khác nhau vì nó hỗ trợ cho Google, Yahoo, Microsoft
Virtual Earth, OGC WMS, OGC WFS, KaMap, Text layers và Makers.
OpenLayers có một thư viện khá mạnh dùng để đọc, trình bày và viết dữ liệu địa lý
theo nhiều định dạng. OpenLayers có hỗ trợ lấy dữ liệu địa lý theo chuẩn của OpenGIS
như OpenGIS Consortium's Web Mapping Service (WMS) and Web Feature Service
(WFS).

Có sự khác biệt giữa OpenLayers và Google Map:
 Dữ liệu: GoogleMaps giúp bạn có được bản đồ đi cùng với đoạn code
javascript điều khiển bản đồ. Trong khi OpenLayers tách riêng công cụ điều
khiển bản đồ ra khỏi dữ liệu bản đồ, do đó OpenLayers lại cần phải import
đoạn code ajvascript cho từng thao tác trên bản đồ tùy theo người sử
dụng.Tổng số đoạn code cho tất cả thao tác đó lên tới 100KB
 Tài liệu: Một thuận lợi lớn của GoogleMaps là có bài hướng dẫn tốt hơn
OpenLayers. Tài liệu của OpenLayers lại viết cho developer hơn là cho người
sử dụng.
 Thiết kế: Những UI mặc định cho OpenLayers thường ở mức tối thiểu, không
chú trọng về đồ hoạ.Nhưng Web Application có sử dụng OpenLayers trang trí
lại bản đồ cũng dễ dàng.
- 16 -
Chương 2: XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ BẢN ĐỒ TRỰC
TUYẾN
2.1. Xử lý ảnh
2.1.1. Các loại dữ liệu cơ bản
Có hai loại dữ liệu cơ bản để biểu diễn thông tin địa lý là raster và vector:
 Dữ liệuraster: Dữ liệuraster được mô tả dưới dạng một lưới các pixel và
mỗipixel chứa một điểm ảnh. Các giá trị của điểm ảnh được thể hiện trong các
đơn vị của không gian màu. Một không gian màu hay mô hình màu là một mô
hình trừu tượng mô tả các màu sắc được đại diện. RGB (đỏ, xanh lá cây, xanh
da trời) là ba màu cơ bản. Sự kết hợp của ba màu này có thể cho ra hàng triệu
màu sắc khác nhau. Dữ liệu raster có dung lượng rất lớn nếu không có cách lưu
trữ thích hợp. Thông thường, nén dữ liệu là phương thức được sử dụng để
giảm bớt dung lượng của tệp lưu trữ. Các phương pháp nén phổ biến hiện nay
là TIFF, RLE, JPEG, GIF,….
 Dữ liệu vector: Mô hình dữ liệu vector sử dụng các đường hay điểm, được xác
định tường minh bằng các toạ độ x, y của chúng trên bản đồ. Các đối tượng rời
rạc (trong đó có cả các đối tượng đa giác), được tạo bởi sự liên kết các đoạn

cung (đường) và các điểm nút. Điểm nút: Dùng cho tất cả các đối tượng không
gian được biểu diễn như một cặp toạ độ (X,Y). Ngoài giá trị toạ độ (X,Y),
điểm còn thể hiện kiểu điểm, màu, hình dạng và dữ liệu thuộc tính đi kèm.
Cung: Dùng để biểu diễn tất cả các thực thể có dạng tuyến, được tạo nên từ hai
hoặc nhiều cặp toạ độ (X,Y). Ví dụ đường dùng để biểu diễn hệ thống đường
giao thông, hệ thống ống thoát nước. Ngoài toạ độ, đường còn có thể bao hàm
cả góc quay tại đầu mút. Vùng: Là một đối tượng hình học hai chiều. Vùng có
thể là một đa giác đơn giản hay hợp của nhiều đa giác đơn giản. Mục tiêu của
cấu trúc dữ liệu đa giác là biểu diễn cho vùng. Do một vùng được cấu tạo từ
các đa giác nên cấu trúc dữ liệu của đa giác phải ghi lại được sự hiện diện của
các thành phần này và các phần tử cấu tạo nên đa giác.
2.1.2. Hình ảnh không gian địa lý
Ảnh kỹ thuật số phù hợp để lưu trữ thông tin địa lý. Việc chúng ta cần làm là chuyển
đổi nó thành ảnh không gian địa lý bằng cách gắn vào nó toạ độ tương ứng của bề mặt trái
đất mà nó mô tả. Có hai cách để làm điều này: tạo một hình chữ nhật bao quanh ảnh (hình
4.2) hoặc gán toạ độ duy nhất vào góc ảnh với độ phân giải của mỗi điểm ảnh cho mỗi
chiều.
- 17 -

Hình 2.1: Hình ảnh không gian địa lý với đường biên bao

Có một vài định dạng file được sử dụng để lưu trữ ảnh địa lý. Đầu tiên phải nói tới
định dạng file MrSID ( multi-resolution seamless image database)Đây là định dạng ảnh
được phát triển bởi LizardTech. Nó được thiết kế để phù hợp cho việc lưu trữ ảnh không
gian địa lý với kích thước lớn. MrSID sử dụng cơ sở nén warelet để lưu trữ nhiều độ phân
giải của ảnh. Điều này cho phép truy cập nhanh tổng thể ( hoặc ảnh nhỏ) các phần của
hình ảnh.
Tiếp theo là JPEG2000 - định dạng file được phát triển bởi Joint Photographic
Expects Group. Cũng giống như MrSID, nó cũng sử dụng cơ sở nén warelet. JPEG2000
không được thiết kế để lưu trữ ảnh không gian địa lý, tuy nhiên, phần mở rộng của nó cho

phép thông tin địa lý được gắn liền với hình ảnh. JPEG2000 phù hợp để lưu trữ ảnh với
kích thước lớn và là định dạng mở hơn MrSID.
Cuối cùng là định dạng GEOTIFF. Đây là định dạng được sử dụng lâu đời và phổ
biến nhất trong việc lưu trữ ảnh không gian địa lý. GEOTIFF dựa trên chuẩn Tagged
Image File Format (TIFF). Nó đơn giản là một file TIFF những thẻ không gian địa lý
chuẩn được gắn kèm. Có lẽ, TIFF là chuẩn file phổ biển rộng rãi nhất. Nó cho phép một
số tuỳ chọn như cho phép tuỳ chọn chương trình nén hoặc không nén. Ngoài ra nó còn
cho phép nhiều trang hình ảnh, một số mô hình màu, một số cách thức lưu trữ.
- 18 -
Cần chú ý rằng, trong một vài trường hợp, ảnh không gian địa lý được lưu trữ trong
những file không hỗ trợ nhúng toạ độ. Trong những trường hợp này, thông thường ảnh sẽ
được đính kèm một tập tin có chứa toạ độ địa lý.
2.1.3. Xử lý hình ảnh
Trong phần này chúng ta sẽ tìm hiểu các thuật toán xử lý ảnh cần thiết cho việc tạo
tile sau này. Cần nhớ lại rằng, các ảnh tile được lưu trữ với những độ phân giải cố định.
Điều này đồng nghĩa với việc tập ảnh nguồn sẽ có độ phân giải nhất định. Như vậy, tập
ảnh nguồn không đáp ứng được khi chúng ta sử dụng nhiều độ phân giải khác nhau. Giải
pháp đưa ra ở đây là chúng ta sử dụng các giải thuật nội suy để biến đổi ảnh theo mức độ
phóng phù hợp mà vẫn giữ được chất lượng của nó.
2.1.3.1. Nội suy 1: Nội suy các pixel gần nhất (Nearest Neighbor)
Nội suy các pixel gần nhất là thuật toán đơn giản nhất trong số các thuật toán nội
suy. Điểm ảnh mới sẽ chỉ lấy giá trị của điểm ảnh gần nó nhất và không xem xét các giá
trị khác ở tất cả các điểm lân cận. Giải thuật này đơn giản, nhanh và tinh vi nhất. Nó chỉ
lấy màu sắc từ các điểm ảnh gần nhất và gán vào các điểm ảnh mới được tạo ra từ các
điểm ảnh đó. Do vậy phương pháp nội suy này được gọi là khả dụng với việc tạo ra các
ảnh có chất lượng cao. Tuy nhiên nó chưa thực sự khắc phục được hiện tượng răng cưa vì
vậy nó là phương pháp ít được sử dụng.
2.1.3.2. Nội suy 2: Nội suy song tuyến (Bilinear)
Thuật toán nội suy song tuyến là thuật toán phức tạp hơn thuật toán nội suy các pixel
gần nhất. Nó lấy trung bình của 4 điểm ảnh xung quanh điểm ảnh đích để xác định giá trị

nội suy.
- 19 -

Hình 2.2 : Nội suy song tuyến sử dụng 4 điểm ảnh xung quanh để tính giá trị
2.1.3.3. Nội suy 3: Nội suy song khối (Bicubic)
Nội suy song khối (bicubic) là thuật toán phức tạp nhất nhất trong các giải thuật nội
suy. Nếu như giải thuật bilinear xem xét mối quan hệ tuyến tính của bốn điểm ảnh xung
quanh điểm ảnh đích thì giải thuật bicubic tính trung bình của 16 điểm ảnh xung quanh.
2.1.4. Lựa chọn định dạng ảnh cho tile
Bất kỳ một hệ thống bản đồ tile nào cũng phải sử dụng các định dạng file ảnh để lưu
trữ và chuyển đổi các ảnh tile. Hiện nay có hàng trăm định dạng file có thể sử dụng. Một
số cung cấp khả năng nén ảnh tốt, một số khác lại chú trọng vào sự đơn giản và tính tương
thích. Chúng ta muốn lựa chọn một định dạng có thể được mã hoá và giải mã nhanh, cung
cấp khả năng nén hình ảnh tốt , và quan trọng là phải được hỗ trợ bởi các trình duyệt web
phổ biến.









- 20 -
Bảng 2.1 : Mỗi trình duyệt hỗ trợ các định dạng ảnh khác nhau
Browser
JPEG
JPEG2000
GIF

TIFF
BMP
PNG
Internet Explorer
Yes
No
Yes
No
Yes
Yes
Firefox
Yes
No
Yes
No
Yes
Yes
Google Chrome
Yes
No
Yes
No
Yes
Yes
Safari
Yes
Yes
Yes
Yes
Yes

Yes
Opera
Yes
No
Yes
No
Yes
Yes

Bảng 2.2 : Chi tiết của các dạng nén khác nhau
Format
Compression
Colors supported
Transparency
supported
JPEG
Lossy
24 bit RGB
No
GIF
Lossless
8 bit Indexed
Yes
BMP
Uncompressed
24 bit RGB
Yes
PNG
Lossless
48 bit RGB

Yes

Dễ dàng thấy được , BMP và GIF là hai định dạng sẽ không được sử dụng để lưu
trữ ảnh tile do BMP không hỗ trợ nén và GIF không hỗ trợ đủ 24 bit màu. Chúng ta chỉ
còn lại hai định dạng JPEG và PNG. PNG sử dụng giải thuật DEFLATE cung cấp khả
năng nén ít mất mát và hỗ trợ ảnh trong suốt, trong khi JPEG sử dụng giải thuật dựa trên
Discrete Cosine Transform – là giải thuật nén mất mát.Do cung cấp khả năng nén không
mất mát nên dung lượng của định dạng PNG thường lớn hơn nhiều so với định dạng
JPEG.
Do đặc tính của mỗi định dạng, chúng ta hoàn toàn có thể sử dụng cả hai định dạng
trong cùng một hệ thống bản đồ dạng tile. Ví dụ, mô tả một phần nhỏ của trái đất sẽ sử
dụng ảnh trong suốt cho các mức phóng với độ phân giải thấp vì thế người dùng có thể
nhìn thấy các layer khác. Khi người dùng chuyển sang mức phóng với độ phân giải cao,
định dạng JPEG sẽ được thay thế.
2.1.5. Lựa chọn kích thước ảnh
Lựa chọn kích thước ảnh tile là một trong những phần quan trọng nhất trong việc
xây dựng hệ thống bản đồ trực tuyến dạng tile. Ảnh tile có thể có bất kỳ kích thước nào
và thay đổi tuỳ vào mức phóng. Chúng có thể có khích thước khác nhau trong cùng một
- 21 -
mức phóng hoặc kích thước được sinh ra ngẫu nhiên. Tuy nhiên, lựa chọn tốt nhất là các
tile có cùng kích thước trên cùng một mức phóng.
Có một vài cách tiếp cận để xác định kích thước tối ưu cho tập ảnh tile. Đầu tiên
chúng ta cần xem xét thực tế việc sử dụng nhiều ảnh để ảo hoá một khung nhìn bản đồ
đơn giản. Mỗi ảnh đi kèm với một chi phí nhất định. Có một vài dạng chi phí bao gồm
như chi phí tìm kiếm, chi phí đọc từhệ thống file của máy tính, …
Như trên chúng ta đã trao đổi, chỉ có hai định dạng PNG và JPEG được lựa chọn để
lưu dữ liệu ảnh tile. Để xác định kích thước ảnh tile phù hợp với hệ thống, đầu tiên chúng
ta cần ước lượng kích thước thông thường của một khung nhìn bản đồ được ảo hoá. Ví
dụ, chúng ta sẽ sử dụng 1024x748 pixel. Với kích thước này chúng ta có thể tạo ra các
khung nhìn ứng với mỗi mức phóng. Đối với mỗi khung nhìn, chúng ta sẽ tính toán số

lượng các tile cần thiết và số lượng các pixel thừa. Việc tính toán này sẽ áp dụng với toàn
bộ các kích thước 16,32, 64, 128, 256, 512, 1024, 2048.

Hình 2.3: Các điểm ảnh được mã hoá nhưng không được sử dụng để
hiển thị map view
Từ kết quả của việc thực nghiệm thực tế,chúng ta sẽ lựa chọn kích thước ảnh tile là
512x512. Ngoài ra 256x256 cũng là một lựa chọn tốt. Tuy nhiên, để biểu diễn một tile
512x512 cần bốn tile 256x256. Do vậy, chúng ta sẽ phải tạo ra một số lượng lớn các tile
nếu sử dụng kích thước là 256x256. Bên cạnh đó không gian lưu trữ cũng sẽ tăng lên
đáng kể. Chúng ta sẽ thấy rằng đây là những chi phí đáng kể.

×