Đâ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
Trang 1HOÀ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
Trang 2HOÀ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
Trang 3Lờ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
Trang 4Lờ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
Trang 5Mụ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 bottomup 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
Trang 6-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 -
Trang 7Danh 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
Trang 8Danh 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ữ
Trang 9Một số khái niệm và thuật ngữ
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
Trang 10Mở đầ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
Trang 11Chươ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
Trang 12nhỏ 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ĩ độ đị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ừ0o tại điểm trên đường xích đạo đến 90o 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
Trang 13Hì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
Trang 14Hì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
Trang 15Hì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
Trang 16- 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
Trang 171.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)
Trang 181.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ở
Trang 19OpenLayers 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
Trang 20Chươ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
Trang 21Hì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ữ
Trang 22Cầ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
Trang 23Hì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
Trang 24Bảng 2.1 : Mỗi 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
Format Compression Colors supported Transparency supported
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ế