Xây dựng hệ thống cung cấp bản đồ tự động cho web

92 11 0
Xây dựng hệ thống cung cấp bản đồ tự động cho web

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ðại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ðẠI HỌC BÁCH KHOA NGUYỄN TÍN QUANG XÂY DỰNG HỆ THỐNG CUNG CẤP BẢN ðỒ TỰ ðỘNG CHO WEB Chuyên ngành: Bản đồ, viễn thám hệ thơng tin địa lý LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 11 năm 2007 CƠNG TRÌNH ðƯỢC HỒN THÀNH TẠI TRƯỜNG ðẠI HỌC BÁCH KHOA ðẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : TS TRẦN TRỌNG ðỨC Cán chấm nhận xét : Cán chấm nhận xét : Luận văn thạc sĩ ñược bảo vệ HỘI ðỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ðẠI HỌC BÁCH KHOA, ngày tháng năm ðẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ðẠI HỌC BÁCH KHOA ðộc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, ngày tháng năm NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Tín Quang Giới tính: Nam / Nữ Ngày, tháng, năm sinh: 10/11/1980 Nơi sinh: Tp.Hồ Chí Minh Chun ngành: Bản đồ, viễn thám hệ thơng tin địa lý Khố (Năm trúng tuyển): 2005 1- TÊN ðỀ TÀI: XÂY DỰNG HỆ THỐNG CUNG CẤP BẢN ðỒ TỰ ðỘNG CHO WEB 2- NHIỆM VỤ LUẬN VĂN: - Xây dựng trang Web ñồ trực tuyến cho phép người dùng tải ñồ lên hệ thống ñể lưu trữ, hiển thị chia mạng internet - Nghiên cứu phương pháp kết hợp cơng cụ mã nguồn mở cần thiết để xây dựng hệ thống cung cấp ñồ tự ñộng - Nghiên cứu xây dựng chức routing cho ñồ có lớp giao thơng 3- NGÀY GIAO NHIỆM VỤ: 05/07/2007 4- NGÀY HOÀN THÀNH NHIỆM VỤ: 05/11/2007 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS TRẦN TRỌNG ðỨC Nội dung ñề cương Luận văn thạc sĩ ñã ñược Hội ðồng Chuyên Ngành thông qua CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH iv LỜI CẢM TẠ Tôi xin gửi lời cảm ơn chân thành ñến: - TS Trần Trọng ðức người ñã trực tiếp hướng dẫn, góp ý nhiều q trình thực luận văn - PGS TS Trần Văn Lăng, phân viện trưởng Phân viện Công nghệ thông tin TP Hồ Chí Minh giúp đỡ tơi nhiều suốt q trình cơng tác Phân viện, nơi tơi hình thành nên ý tưởng để thực luận văn - Các thầy cô giảng dạy lớp cao học GIS khóa 2005 cung cấp cho tơi kiến thức q báu, để tơi có tảng kiến thức phương pháp nghiên cứu thực luận văn - Các bạn lớp cao học ñã hỗ trợ góp ý cho tơi q trình thực luận văn - Những người thân gia đình giúp đỡ, khuyến khích động viên tơi suốt q trình học làm luận văn Nguyễn Tín Quang v TĨM TẮT Sự đời Google map, Yahoo map, khẳng định lợi ích mà đồ web mang lại Từ đó, có khơng người làm ñồ muốn xây dựng trang web tương tự ñể hiển thị ñồ mình, nhiên để xây dựng hệ thống địi hỏi người làm đồ phải trang bị nhiều kiến thức tin học GIS khoản đầu tư đáng kể lựa chọn sản phẩm thương mại Chính vậy, hệ thống cung cấp đồ tự ñộng ñể cung cấp công cụ không gian lưu trữ hiển thị ñồ lên web cần thiết ñể người làm ñồ truyền tải, hiển thị chia ñồ internet cách dễ dàng, nhanh chóng vi MỤC LỤC Chương MỞ ðẦU 1.1 ðẶT VẤN ðỀ 1.2 MỤC TIÊU NGHIÊN CỨU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 PHẠM VI NGHIÊN CỨU 1.5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN Chương 2.1 NGHIÊN CỨU VỀ HỆ THỐNG CUNG CẤP BẢN ðỒ TỰ ðỘNG Giới thiệu Web Mapping 2.1.1 Web Mapping 2.1.2 Phân loại 2.1.3 Xây dựng hệ thống Web Mapping 2.2 Hệ thống cung cấp ñồ tự ñộng 2.2.1 Khái niệm 2.2.2 Phân loại người dùng 2.2.3 Những lợi ích hệ thống 2.2.4 Các phần mềm sử dụng hệ thống 11 2.2.5 Các module hệ thống .16 2.2.6 Sơ ñồ hoạt ñộng hệ thống 18 Chương XÂY DỰNG HỆ THỐNG 20 3.1 PHÂN TÍCH CÁC MODULE 20 3.1.1 Module website 20 3.1.2 Module phân tích liệu GIS 21 3.1.3 Module tạo ảnh ñồ .23 3.1.4 Module routing .26 3.1.5 Module hiển thị ñồ Web .29 3.2 THIẾT KẾ HỆ THỐNG 30 3.2.1 Kiến trúc hệ thống 30 vii 3.2.2 Thiết kế mơ hình phần mềm .31 3.2.3 Thiết kế sở liệu .32 3.2.4 Thiết kế giao diện trang web 37 3.3 XÂY DỰNG CÁC MODULE .45 3.3.1 Module Website .45 3.3.2 Module phân tích liệu GIS 48 3.3.3 Module tạo ảnh ñồ .51 3.3.4 Module routing .52 3.3.5 Module hiển thị ñồ Web .54 Chương KẾT LUẬN .58 4.1 CÁC KẾT QUẢ ðẠT ðƯỢC 58 4.2 HƯỚNG PHÁT TRIỂN ðỀ TÀI 58 Chương TÀI LIỆU THAM KHẢO 59 Chương PHỤ LỤC 60 6.1 Một số khái niệm 60 6.1.1 Web Map Services (WMS) .60 6.1.2 Simple Features 63 6.1.3 Well-know text (WKT) 64 6.2 Mapfile 65 6.3 Ajax 71 6.4 Google Maps 74 6.5 Chuẩn bị liệu cho routing 78 viii MỤC LỤC HÌNH Hình 2.1 Mơ hình hoạt động Web Mapping Hình 2.2 Mơ hình LAMP 11 Hình 2.3 Giao diện msCross 14 Hình 2.4 Giao diện OpenLayers 15 Hình 2.5 Giao diện phần mềm DB Designer .16 Hình 2.6 Sơ ñồ hoạt ñộng hệ thống cung cấp đồ tự động 18 Hình 3.1 Module Website .20 Hình 3.2 Module phân tích GIS 21 Hình 3.3 Mơ hình hoạt động MapServer 23 Hình 3.4 Mơ hình hoạt ñộng pgRouting 27 Hình 3.5 Module hiển thị đồ Web 29 Hình 3.6 Kiến trúc hệ thống 30 Hình 3.7 Mơ hình phần mềm .31 Hình 3.8 Lược đồ quan hệ bảng .34 Hình 3.9 Giao diện trang chủ 38 Hình 3.10 Giao diện trang ñăng ký 39 Hình 3.11 Giao diện trang đăng nhập 40 Hình 3.12 Giao diện trang quản lý thông tin cá nhân .41 Hình 3.13 Giao diện trang quản lý ñồ .42 Hình 3.14 Giao diện trang tải đồ 43 Hình 3.15 Giao diện trang cấu hình đồ 44 Chương 1.1 MỞ ðẦU ðẶT VẤN ðỀ Tháng năm 2005, với công nghệ Ajax, Google ñã lần ñầu tiên cho ñời Google Maps, ứng dụng Web Map Server miễn phí với nhiều tính năng, quan trọng cho phép người lập trình nhúng đồ Google Maps cung cấp vào trang web họ thông qua hàm thư viện (API) Google Maps Cách làm ñã làm bùng nổ số lượng trang web đồ, đem lại nhiều lợi ích cho trang web có nhúng đồ Google, ñối với người dùng cuối Và ñã biết, Việt Nam nay, số lượng trang web đồ cịn ít, nhu cầu tìm kiếm thơng tin mặt khơng gian ngày tăng Nếu xây dựng trang web ñồ theo cách truyền thống (người dùng xem đồ trang web đó), sau hồn thành ta có trang web đồ mà thơi Cịn ta xây dựng hệ thống mà cho phép người phát triển khác nhúng ñồ vào cách làm Google Maps (phụ lục 6.4) với liệu ñồ ta có nhiều trang web ñể hiển thị ñồ ñó Bên cạnh ñó, việc xây dựng hệ thống WebGIS ñối với người làm đồ nói chung tương đối phức tạp, địi hỏi nhiều kiến thức tin học chuyên sâu, chưa nói ñến khoảng ñầu tư ñáng kể vào phần cứng phần mềm, vậy, hệ thống cung cấp đồ tự động cịn hỗ trợ người dùng tải lưu trữ quản lý liệu GIS cách hiệu ðiều giúp nhà làm ñồ tiết kiệm ñược nhiều thời gian chi phí 1.2 MỤC TIÊU NGHIÊN CỨU Nghiên cứu giải pháp cơng nghệ dựa chương trình mã nguồn mở ñể xây dựng hệ thống trang Web hỗ trợ người dùng tải, lưu trữ chia ñồ trực tuyến 1.3 NỘI DUNG NGHIÊN CỨU - Xây dựng trang Web ñồ trực tuyến cho phép người dùng tải ñồ lên hệ thống ñể lưu trữ, hiển thị chia mạng internet - Nghiên cứu phương pháp kết hợp công cụ mã nguồn mở cần thiết ñể xây dựng hệ thống cung cấp ñồ tự ñộng - Nghiên cứu xây dựng chức routing cho đồ có lớp giao thơng 1.4 PHẠM VI NGHIÊN CỨU Về liệu GIS: Hệ thống ñược thử nghiệm với hai ñịnh dạng liệu phổ biến Việt Nam Shape files ESRI Mif/Mid files Mapinfo Về công nghệ: Hệ thống triển khai hồn tồn cơng nghệ mã nguồn mở chuẩn phổ biến nhằm giảm tối đa chi phí triển khai khả mở rộng tương lai Về hệ ñiều hành phần mềm sử dụng: Các phần mềm ñược lựa chọn sử dụng hệ thống ñều có phiên Windows Linux Những phần mềm sử dụng hệ thống: - Web Server: Apache 2.2.4 - Server script: PHP - Database: MySQL PostgreSQL 8.2 - Mapserver 2.2.4 - msCross 1.1.9 70 khai báo từ khóa LABEL kết thúc từ khóa END Trong trường hợp nhãn ñược biểu thị màu ñen kích thước nhỏ (từ khóa SMALL) Và sau khn mẫu web (web template) ví dụ trên: 01 02 MapServer First Map 03 04 05 06 10 11 12 13 Khi nhấn submit, Web Server Apache gọi MapServer truyền thơng số dịng 06 đến 09 MapServer đọc mapfile, dựa mapfile, MapServer ñọc tập tin statesp020 hiển thị tất thành phần phạm vi định (extent) Cùng lúc đọc cột có tên STATE CSDL hiển thị nội dung cột nhãn thành phần Sau lưu ảnh mà tạo với tên ví dụ sau : 71 /tmp/Mapfile_example00823029234028984093.jpg cho chuỗi [IMG] khuôn web gửi khuôn web cho browser, kết thúc phiên làm việc 6.3 Ajax Ajax, ñược viết tắt lại từ cụm từ Asynchronous JavaScript + XML AJAX cơng nghệ Nó tập hợp nhiều cơng nghệ với mạnh riêng để tạo thành sức mạnh AJAX bao gồm: Thể web theo tiêu chuẩn XHTML CSS Nâng cao tính ñộng phản hồi DOM (Document Object Model) Trao ñổi xử lý liệu XML XSLT Truy cập liệu theo kiểu bất ñồng (asynchronous) XMLHttpRequest Và tất kỹ thuật liên kết lại với JavaScript Mơ hình ứng dụng web cổ ñiển hoạt ñộng sau: Hầu hết tác ñộng người dùng giao diện web kích hoạt yêu cầu HTTP tới Web Server Server thực số thao tác xử lý (tuy ứng dụng tùy u cầu) sau trả trang HTML cho client ðiều ñồng nghĩa với việc người dùng sau gửi yêu cầu phía server phải chờ nhận hồi đáp tiếp tục công việc 72 Ứng dụng Ajax loại bỏ ñược nhược ñiểm cách sử dụng “bộ máy Ajax” ñể giao tiếp user server Có thể hiểu ta thêm lớp trung gian vào ứng dụng để hạn chế giao tiếp khơng cần thiết Bộ máy đảm nhiệm vai trị gửi nhận thông tin client server cách bất đồng mà khơng cần phải tải lại trang web ðây mơ hình “cổ điển” ứng dụng Web: Và mơ hình sử dụng AJAX: 73 Rõ ràng điểm khác biệt thay phải tải trang Web với AJAX bạn cần tải phần trang Web mà bạn muốn thay ñổi ðiều giúp cho ứng dụng Web bạn phản hồi nhanh hơn, thơng minh Ngồi ra, ñiểm ñặc biệt quan trọng công nghệ AJAX nằm chữ A (Asynchronous) – bất ñồng – tức bạn gửi yêu cầu tới server quay lại với cơng việc mà khơng cần chờ trả lời Khi server xử lý xong yêu cầu bạn, báo hiệu bạn “bắt lấy” để thể thay đổi cần thiết 74 6.4 Google Maps Google Maps ứng dụng dịch vụ web ñồ (web mapping service application) miễn phí cung cấp cơng ty Google Google Maps ñược giới thiệu lần ñầu tiên Blog Google vào ngày tháng năm 2005 ñược ñặt ñịa http://maps.google.com Ban ñầu Google Maps hỗ trợ người dùng sử dụng trình duyệt Internet Explorer Mozilla (Firefox) sau đó, nhà phát triển cải thiện để Google Maps xem trình duyệt phổ biến khác Opera Safari (trình duyệt hãng Apple) Google Maps có nhiều tính bật xem đồ tồn cầu có hỗ trợ ảnh vệ tinh, ñồ chi tiết nhiều thành phố, tìm địa điểm, địa danh tiếng giới, dịch vụ routing,…Nhưng tính bật mà ñề tài muốn ñề cập ñến, ñó Google Maps API, ñây chức Google tạo ñể tạo ñiều kiện cho nhà phát 75 triển (developers) tích hợp đồ Google vào trang web họ với ñiểm liệu (data points) riêng nhà phát triển ðể sử dụng tính này, ta phải tạo khóa API (API key), khóa API ràng buộc với trang web với ñường dẫn thư mục định (ví dụ http://www.example.com/Google_Maps/) Sau người lập trình tạo giao diện đồ riêng cách sử dụng hàm thư viện Javascript Google cung cấp, hàm thư viện cịn dùng để thêm ñiểm (marker) vào ñồ Sau ñây ví dụ cách sử dụng Google Maps API ñể làm rõ cách mà người lập trình tích hợp đồ Google Maps trang web Sau có khóa API cách ñang ký ñịa http://www.google.com/apis/maps/signup.html (người dùng trước ñó phải có tải khoản Gmail Google) Ta sử dụng hàm thư viện Google Maps API cách khai báo: Trong thuộc tính key hệ thống cung cấp người dùng ñăng ký, với GoogleMap người dùng cần dùng tài khoảng email đăng ký key với trang Web Sau giai đoạn chứng thực với hệ thống key hệ thống cung cấp, giai ñoạn người dùng “khởi ñộng” ñồ API hệ thống, ví dụ với GoogleMap sau: function load() { if (GBrowserIsCompatible()) { 76 var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419, -122.1419), 13); } } Trong document.getElementById("map") để tìm vị trí mà người dùng muốn đặt đồ trang Web (vị trí có id map) Ví dụ, để có đồ với kích thước 500x300 trang Web, người dùng khai báo sau: Và ñoạn mã map.setCenter(new GLatLng(37.4419, -122.1419), 13) để định ví trí ban đầu độ scale ñồ, trường hợp này, ñồ xác ñịnh tọa ñộ (37.4419, -122.1419) theo hệ tọa ñộ WGS84 ñộ scale 13 ðoạn mã ñầy ñủ trang Web sau: Google Maps JavaScript API Example function load() { if (GBrowserIsCompatible()) { 77 var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419, -122.1419), 13); } } Kết thực thi trang web với mã sau: 78 6.5 Chuẩn bị liệu cho routing ðể chuyển ñổi ñược liệu, ta cần phải có chương trình sau: - PostgreSQL 8.x - PostGIS 1.x - pgRouting 1.x PostGIS pgRouting hai chương trình cài đặt để vận hành chung với hệ quản trị CSDL PostgreSQL Ta thực trình chuyển đổi liệu thơng qua ví dụ với liệu GIS miễn phí, lấy từ dự án có tên gọi Frida Ta download liệu ñịa chỉ: http://ftp.intevation.de/freegis/frida/frida-1.0.1-shp-joined.tar.gz Dữ liệu Frida có nhiều lớp, lớp giao thơng nằm tập tin strassen-joined.shp, ñây liệu mà ta chuyển ñổi ðầu tiên, ñể ñưa ñược liệu vào CSDL PostgreSQL, ta cần phải chuyển liệu sang dạng câu truy vấn CSDL (SQL query) cách thực lệnh: Shp2pgsql D:\frida\strassen-joined.shp fridastreets routingdb > D:\frida\strassenjoined.sql Trong đó, fridastreets tên bảng liệu (table) routingdb tên CSDL (database) (ta đặt tên bảng CSDL tùy ý) Bước ta tạo CSDL với tên gọi routingdb với hàm thư viện PostGIS PostgreSQL Có chương trình để thực việc này, ví dụ PgAdmin III 79 Sau ta đưa liệu vừa tạo dạng SQL vào CSDL routingdb lệnh: psql –U postgres -f D:/frida/strassen-joined.sql routingdb Bảng liệu fridastreets sau thực lệnh có dạng sau: ðến liệu ñã ñược ñưa vào PostgreSQL chưa sẵn sàng để routing Bước ta cần phải thực thi lệnh sau: 80 psql -U postgres -f C:\Program Files\PostgreSQL\8.2\share\contrib\routing.sql routingdb và: psql -U postgres -f C:\Program Files\PostgreSQL\8.2\share\contrib\ routing_postgis.sql routingdb Các lệnh nhằm chuẩn bị hàm thư viện phân tích khơng gian cho việc tính tốn routing Kế tiếp, ta cần phải thêm số trường (fields) đặc biệt vào bảng fridastreets, x1, y1 (kiểu liệu numeric) chứa tọa ñộ ñiểm bắt ñầu (starting coordinate), x2, y2 chứa tọa ñộ ñiểm kết thúc (end coordinate), length (chiều dài cạnh, kiểu liệu numeric), source target (kiểu liệu bigint) Cấu trúc bảng fridastreets sau thêm cột trên: 81 Sau ta tạo liệu cho cột vừa thêm cách thực thi chương trình PHP sau: $host = "localhost"; $port = "5432"; $dbname = "routingdb"; $user = "postgres"; $password = "postgres"; $con_string = "host=$host port=$port dbname=$dbname user=$user password=$password"; $con = pg_connect ($con_string); $id_check = "SELECT max(gid)as gid from roads"; $res_id_check = pg_query($con,$id_check); $count = pg_result($res_id_check,"gid"); for ($x=1;$x

Ngày đăng: 16/02/2021, 18:44

Tài liệu cùng người dùng

Tài liệu liên quan