Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
1,01 MB
Nội dung
HỌC VIÊN: LÊ QUANG LỢI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN HẢI CHÂU ỨNG DỤNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ HÀ NỘI -2013 Trang ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ QUANG LỢI ỨNG DỤNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG THƠNG TIN ĐỊA LÝ LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI - 2013 Trang ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ QUANG LỢI TÌM HIỂU CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG THƠNG TIN ĐỊA LÝ Ngành: Cơng nghệ thơng tin Chuyên ngành: Hệ thống thông tin Mã số: 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN HẢI CHÂU HÀ NỘI - 2013 Trang Mục lục Lời mở đầu Chương 01: Giới thiệu tốn tìm đường 1.1 Giới thiệu toán TSP 1.1.1 Bài toán TSP 1.1.2 Một số giải thuật giải toán TSP 1.2 Giải thuật Genertic TSP 11 1.2.1 Giới thiệu giải thuật GA 11 1.2.2 Giải thuật GA TSP 14 1.3 Ứng dụng TSP hệ thống thông tin địa 15 Chương 02: Hệ quản trị CSDL không gian 16 2.1 Hệ thống thông tin địa lý 16 2.1.1 Giới thiệu hệ thống thông tin địa lý 16 2.1.2 Kiến trúc hệ thống thông tin địa lý 17 2.2 CSDL không gian PostGres PostGIS 19 2.2.1 Giới thiệu 19 2.2.2 Kiến trúc PostGres 20 2.2.3 Kiểu liệu không gian 21 2.2.4 Hàm hỗ trợ xử lý liệu Gis 22 2.2.5 Truy vấn liệu không gian 22 Chương 03: Thực nghiệm kết 25 3.1 Các chương trình, module thực tốn 25 3.1.1 Giới thiệu module thực nghiệm toán 25 3.1.2 Cài đặt module phục vụ toán TSP 30 3.2 Thực nghiệm với liệu đồ OpenStreetMap 33 3.2.1 Dữ liệu OpenStreetMap 33 3.2.2 Thao tác liệu OSM 34 3.2.3 Áp dụng thuật toán TSP truy vấn liệu OSM 35 3.3 Kết thực 35 3.3.1 Xây dựng Dữ liệu Mẫu 35 3.3.2 Kết liệu mẫu 38 Tài liệu tham khảo 40 Trang Danh mục từ, từ viết tắt TT 10 Từ, từ viết tắt CSDL XML GEOS GIS WKT HQT CSDL SQL TSP GA OSM Chú giải Cơ sở liệu Extended Markup Language Geometry Engine - Open Source Geographic Information System Well-Know Text Hệ quản trị CSDL Structed Query Language Traveling Salesman Problem Genetic Algorithm Open Street Map Danh mục bảng TT Tên bảng Bảng 1.1 Một số thuật toán độ phức tạp tính tốn Bảng 3.1 Các gói phần mềm cài đặt cấu hình chạy TSP Trang Bảng 3.2 Một số hàm routing điển hình 25 Bảng 3.3: Các đối câu lệnh truy vấn SQL 27 Bảng 3.4 Thư viện cài đặt PostGis 30 24 Danh mục hình vẽ, biểu đồ TT Hình 2.1: Chéo hóa đơn Hình Trang 11 Hình 2.2: Chéo hóa bội 12 Hình 2.3: Kiến trúc hệ thống thơng tin địa lý 16 Hình 2.4 Layer liệu đồ 17 Hình 2.5 Kiến trúc PostGres 19 Hình 2.6 Dữ liệu Raster cách số hóa 20 Hình 3.1 đồ liệu mẫu 34 Trang Lời cam đoan Tôi xin cam đoan luận văn “ỨNG DỤNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ” thực tác giả hướng dẫn thầy PGS.TS Nguyễn Hải Châu Toàn nội dung trình bày khơng có chép từ luận văn khác Các kiến thức, hình ảnh, trích dẫn để rõ nguồn tài liệu tham khảo cách cụ thể rõ ràng Nếu có nội dung luận văn vi phạm quy định đề nhà trường tơi xin hồn tồn chịu trách nhiệm theo quy định đề Hà nội, ngày … Tháng … năm 2013 Người cam đoan Lê Quang Lợi Trang Lời mở đầu Luận văn “ỨNG DỤNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ” Được tác giả thực hướng dẫn thầy hướng dẫn PGS.TS Nguyễn Hải Châu, giảng viên khoa Công nghệ Thông tin trường Đại học Công nghệ - Đại học Quốc gia Hà nội Tác giả giảng viên hướng dẫn thông qua buổi gặp mặt trực tiếp, trao đổi qua email thống số phần thực sau - Mục tiêu luận văn:Luận văn phải đạt o Tìm hiểu hệ thống thơng tin địa lý o Tìm hiểu số thuật tốn tìm đường đi: TSP o Triển khai liệu mẫu cho phép thực nghiệm toán - Cơ sở lý thuyết: o Hệ thống thông tin địa lý: kiến trúc,tiền xử lý liệu, biểu diễn liệu, truy vấn liệu o Cơ sở liệu không gian o Hệ quản trị CSDL PostGres, PostGIS,pgRouting o Giải thuật: GA, Branch-Bound, Heuristic - Thực nghiệm: Luận văn thực nghiệm với liệu mẫu o Thiết lập môi trường triển khai CSDL PostGres thư viện mở rộng PostGIS, pgRouting, osm2pgrouting … o Dữ liệu mẫu OSM o Xây dựng liệu mẫu cho toán TSP o Thực thi truy vấn liệu với hàm pgr_TSP pgRouting - Các nội dung trình bày báo cáo luận văn o Chương 01: Bài tốn tìm đường (TSP) o Chương 02: CSDL không gian o Chương 03: Thực nghiệm toán Sau thời triển khai luận văn tác giả hoàn thành hạng mục thống với giảng viên hướng dẫn với kết tốt tiến độ đề Trang Tóm tắt kết đạt luận văn - Về Cơ sở lý thuyết: Luận văn thực o Tìm hiểu nội dung sở lý thuyết theo mục tiêu đề phần lý thuyết Giảng viên hướng dẫn giao phó o Xây dựng báo cáo tồn văn báo cáo tóm tắt luận văn - Về Thực nghiệm: Luận văn thực Cài đặt thành công thư việc xây dựng nên môi trường hệ thống thông tin địa địa lý cho thực nghiệm toán Cấu hình CSDL cho phép triển khai liệu mẫu Triển khai liệu mẫu: liệu OSM từ hệ thống OpenStreetMap Thực nghiệm thành công hàm cài đặt toán TSP thư viện pgRouting Xây dựng ứng dụng web nhỏ cho truy vấn liệu mẫu Trang Chương 01: Giới thiệu tốn tìm đường 1.1 Giới thiệu tốn TSP 1.1.1 Bài toán TSP Traveling Salesman Problem (TSP): Dựa công việc nhân viên giao hàng Anh ta xuất phát từ cửa hàng tới điểm giao hàng (thành phố), thành phố phép qua lần quay trở lại thành phố xuất phát Anh ta phải tìm đường để tổng chiều dài tới thành phố nhỏ - Phát biểu toán TSP [2]: Cho đồ thị trọng số G = (V, E), trọng số Cij (cung nối điểm i với điểm j) số khơng âm Tìm đường tới tồn node cịn lại với tổng chi phí nhỏ - Giải thuật hình thức giải tốn TSP Input: n node mảng giá trị trọng số c(i,j) i, j=1, n /* Bắt đầu với node 1*/ Output: tập vector node tập tổng chi phí tương ứng /* khởi đầu giá trị */ C=0; cost=0 ; visits=0; e=1; /* e = vị trí thăm node 1*/ for r = to n-1 do{ /* tính chi phí */ chọn node j với minimum = c(e,j) = min(c(e,k); visits(k) = k = 1, ,n); cost = cost+ minimum; e = j; C(r) = j } C(n)=1; cost=cost+ c(e,1); Bài toán TSP xếp vào lớp toán tối ưu độ phức tạp nằm lớp toán NP-hard [1] Với giải thuật thơng thường có N! trường hợp tìm kiếm độ phức tạp tương ứng O(N!) - Một số ứng dụng: TSP toán xếp vào lớp tốn tìm kiếm tối ưu Bài tốn ứng dụng nhiều lĩnh vực, gặp toán có phát biểu tương tự Bài tốn giải vấn đề lập lịch, tìm đường đồ, thiết kế mạch điện tử, toán nhân viên giao hàng … Trang 1.1.2 Một số giải thuật giải toán TSP a) Các thuật toán giải TSP: - Thuật toán Branch-Bound [3]: Duyệt đồ thị theo chiều sâu (đi theo nhánh), chuyển nhánh gặp trường hợp giải tốn vượt giá trị ngưỡng (cận) Ln trì đường ngắn cập nhật tìm trường hợp giải quyết(đường có chi phí thấp hơn) có đường tốt Giải thuật: T(k) = tour với k thành phố; Search(k,T(k-1)); if ( k = = n) { Ghi lại tour với cận B=độ dài tour; /*cập nhật cận*/ } else { Tìm k-1 khả để thêm k cho tất vị trí có tour Trong tất tour tìm tour cho độ dài < B Search(k+1,T(k)); /*tìm nhánh mới*/ } Bản chất thuật tốn Branch-Bound chuyển tìm kiếm đồ thị thành việc tìm kiếm theo nhánh dựa tìm kiếm (Branch), với phương pháp tìm kiếm theo độ sâu (bound) định Mỗi nhánh trường hợp giải toán Nếu vượt ngưỡng tìm thấy lời giải cho tốn chuyển sang nhánh Việc xây dựng hàm đánh giá độ sâu định đến thời điềm dừng thuật toán chuyển sang nhánh để tìm lời giải Từng tốn cụ thể cài đặt hàm đánh giá Khi xây dựng cần phải kiểm soát độ sâu q trình tìm kiếm Nếu khơng kiểm sốt để độ sâu khơng hợp lý làm cho thuật tốn có lời giải hiệu quả, trí khơng thể tìm lời giải Nếu để độ sâu lớn có nghĩa làm việc tìm kiếm có chi phí tốn bùng nổ không gian nhớ tăng thao tác tính tốn thực theo nhánh Thơng thường thuật tốn tìm theo độ sâu cài đặt dễ chiếm lược dùng đệ qui Trang - Thuật toán Heuristic: với ý tưởng tìm kiếm lời giải tối ưu theo lời giải trước Thông thường giải thuật thường kèm với hàm đánh giá hàm Huristic cho biết thuật tốn dừng đánh giá tốt hay không Với trường hợp cụ thể việc xây dựng hàm Huristic dựa đối lựa chọn số hướng việc đánh giá cho chiến lược tốt hơn, trí làm tăng hiệu thuật toán Giải thuật dựa chiến lược cụ thể với hàm kinh nghiệm (heuristic) Heuristic có nhiều giải thuật Ở tác giả cung cấp giải thuật Nearest Neighbor Algorithm [1] để minh họa giải thuật Heuristic: Đầu vào - N thành phố - Chi phí thành phố - c (i, j) i, j = 1, , n - Bắt đầu với thành phố số Đầu - Tập thành phố cần tới - Chi phí tới thành phố Bước B01: Khởi tạo c← 0; Cost ← 0; visits ← 0; e = /* Khởi đầu thành phố số */ B02: For (1 ≤ r ≤ n )Do { Chọn điểm j cho minimum = c (e, j) = min{c (e, k); visits (k) = ≤ k ≤ n } cost ← cost + minimum – cost; e ← j; } C(r) ← j; C(n) = 1; cost = cost + c (e, 1) Trang 26 Bảng 3.2 Một số hàm routing điển hình pgRouting tt Hàm routing Chú giải pgr_tsp Bài toán TSP pgRouting pgr_astar Tìm kiếm theo giải thuật A* pgr_makedistancematrix Tính Matrix pgr_dijkstra Thuật toán dijkstra pgr_kdijkstrapath Thuật toán kdijkstra pgr_bdastar Thuật toán bdastar pgr_trsp Thuật toán trsp - Hàm pgr_tsp cho phép thực hiện toán tsp Hàm cài đặt dựa thuật toán GA khơng biết xác giải thuật cụ thể Hàm pgr_tsp cho phép tìm đường TSP với giá trị xấp xỉ (theo giải thuật xấp xỉ) Các hàm pgr_tsp pgRouting: o Hàm : pgr_costResult[] pgr_tsp(sql text, start_id integer); Thực giải thuật TSP với đối số đầu vào điểm bắt đầu tới tất điểm câu lệnh SQL Điểm đặc biệt hàm cho phép đường tới tất node khơng quay lại node ban đầu Ví dụ: o pgr_costResult[] pgr_tsp(sql text, start_id integer, end_id integer); Thực giải thuật TSP với đối số đầu vào điểm bắt đầu tới tất node câu lệnh SQL Bắt đầu từ start_id kết thúc end_id Nếu start_id trùng end_id chu trình haminton Ví dụ: o pgr_costResult[] pgr_tsp(„array node‟, start_id integer, end_id integer); Thực giải thuật TSP với đối số đầu vào điểm bắt đầu tới tất node lại mảng Bắt đầu từ start_id kết thúc end_id Nếu start_id trùng end_id chu trình hamilton Trang 27 Giải thích: pgr_costResult: Kết trả hàm pgr_tsp • seq: thứ tự thực • id1: số ma trận khoảng cách • id2: id node • cost: chi phí tới node sql: tập node( id, x,y) thực giải thuật TSP start_id: node bắt đầu end_id: node kết thúc Các hàm hỗ trợ xử lý liệu pgRouting o pgr_createtopolog: thiết lập Topology cho liệu không gian Dữ liệu GIS nhập vào CSDL không chứa thông tin topology ( ràng buộc đối tượng đồ) để thực truy vấn không gian thông qua việc sử dụng hàm pgRouting Các hàm pgRouting cần thông tin nodes (điểm) ways(tuyến đường) để thực thi hàm routing liệu tạo pgRouting cung cấp hàm xây dựng topology Giao cắt tuyến đường Vị trí đặt điểm tuyết đường Tính chất tuyến đường: chiếu, hai chiều, đường cấm… Hàm CreateTopology: varchar pgr_createTopology (varchar geom_table, double precision tolerance, varchar geo_cname, cvarchar gid_cname); Ý nghĩa: tạo topology cho liệu đồ Trang 28 Các đối: thể bảng 3.3 Bảng 3.3: Các đối câu lệnh truy vấn SQL tt Đối Kiểu Mô tả geom_table Varchar Tên bảng thực truy vấn Tolerance float8 khoảng sai số cho phép geo_cname Varchar Tên thuộc tính geometry bảng goem_table gid_cname Varchar Tên thuộc tính khóa bảng geom_table Ví dụ: SELECT pgr_createTopology('edge_table', 0.000001, 'the_geom', 'id'); pgr_createtopology -OK (1 row) Bảng geom_table: Chứa thông tin tuyến đường đồ thị Hỗ trợ cho hàm routing thực thuật toán Bảng giải vấn đề cần thiết hàm routing tập cung nối node i tới node j o pgr_nodenetwork: mạng lưới node(địa điểm) đồ Vấn đề liệu thực tế vị trí node khơng thật xác Nên việc sử dụng hàm routing trở nên không việc dựng topology Như điểm node giao cắt gữa hai tuyến đường khơng biểu diễn Nếu biểu diễn tìm kết tốt Hơn việc định vị node tuyến đường khó xác Việc giao cắt tuyến đường chia tuyến đường thành đoạn đường nhỏ chưa ghi nhận vào CSDL Đôi gặp tuyến đường thực tế khơng có giao cắt (giao cắt xử lý cầu vượt) nhìn đồ có giao cắt Các trường hợp tương tự pgr_nodenetwork xử lý để có topology tốt cho toán routing Trang 29 Hàm pgr_nodenetwork: Tạo điểm giao cắt tuyến đưa vào bảng text pgr_nodeNetwork(text table_in, text gid_cname, text geo_cname, text table_out, double precision tolerance) Các đối: Đối tt Kiểu Mô tả bảng tuyến đường (các cung đồ thị) edge_table Tolerance float8 độ sai số điểm tuyến đường Id text khóa network_table the_geom: text thuộc tính Geometry bảng network table table_ending text hậu tố bảng kết Kết quả: bảng mô tả Đối tt Kiểu Mô tả Id Bigint Khóa old_id bigint Id cung cũ sub_id integer Id cung/tuyến bị chia cắt Source Integer Bắt đầu tuyến target: integer Kết thúc tuyến the geom: geometry Thuộc tính Geometry tuyến Ví dụ: sử dụng hàm pgr_nodeNetwork tạo điểm giao tuyến đường SELECT pgr_nodeNetwork('edge_table', 0.001); NOTICE: PROCESSING: NOTICE: pgr_nodeNetwork('edge_table',0.001,'the_geom','id','noded') NOTICE: Performing checks, pelase wait NOTICE: Processing, pelase wait NOTICE: Splitted Edges: NOTICE: Untouched Edges: 15 NOTICE: Total original Edges: 18 NOTICE: Edges generated: NOTICE: Untouched Edges: 15 Trang 30 NOTICE: Total New segments: 21 NOTICE: New Table: public.edge_table_noded NOTICE: -pgr_nodenetwork - OK(1 row) 3.1.2 Cài đặt module phục vụ toán TSP - Cài đặt Postgres: sudo apt-get install postgresql-9.1 libpq-dev postgresql-server-dev-9.1 postgresqlclient-9.1 Kiểm tra trạng thái cài đặt thành công PostGres Khi cài đặt thành công hệ quản trị CSDL Postgres tạo user mặc định postgres csdl mặc định postgres Trình tự đăng nhập sử dụng Postgres thông qua lệnh thể qua ví dụ trình tự bước thực Bước đăng nhập với user postgres cửa sổ terminal Bước 1.1 Đăng nhập user postgres: Bước 1.2 Kiểm tra phiên Postgres loilequang@loilequang-ThinkPad-X60s:~$ psql ver psql (PostgreSQL) 9.1.9 => cài đặt thành công Bước 02: Tạo CSDL với tên “myDB” postgres@loilq:/home/loilequang$ createdb myDB Đăng nhập vào CSDL vừa tạo lệnh psql postgres@loilq:/home/loilequang$ psql myDB # kết psql (9.1.9) Type "help" for help Bước 03: Sử dụng CSDL o Tạo bảng: mytable(id, name); myDB=# CREATE TABLE myTable(id integer, name varchar(12)); CREATE TABLE o Thêm liệu: myDB=# insert into myTable values(01,'name01'); INSERT myDB=# insert into myTable values(02,'name02'); INSERT Trang 31 Bước 04 truy vấn liệu: myDB=# select id, name from mytable; id | name + -1 | name01 | name02 - Cài đặt PostGis: Trước cài đặt PostGIS cần cài đặt thư viện yêu cầu cho PostGis Bảng 3.4 Thư viện cài đặt PostGis tt Thư viện PROJ4 Giải thích Thư viện cho phép chuyển đổi tọa độ POSTGIS GEOS Thư viện tạo hợp lệ kiểm tra hợp lệ liệu không gian LIBXML2 Hỗ trợ sử dụng hàm ST_GeomFromGML ST_GeomFromKML JSON-C Sử dụng cho hàm ST_GeomFromGeoJson Ví dụ cài đặt thư viện GEOS Cài tương tự cho thư viện lại $ wget http://download.osgeo.org/geos/geos-3.3.8.tar.bz2 $ tar xjf geos-3.3.8.tar.bz2 // giải nén $ cd geos-3.3.8 $ /configure // Cấu hình $ make // Xây dựng gói cài đặt $ sudo make install // cài đặt Cài đặt postgis: sudo apt-get install postgis postgresql-9.1-postgis - Kiểm tra module postGis hoạt động Postgres: Bước 01: tạo mở rộng Postgis myDB=# CREATE EXTENSION POSTGIS ; CREATE EXTENSION Trang 32 Bước 02: truy vấn hàm postgis kiểm tra trạng thái cài đặt Câu lệnh: Kết myDB=# SELECT ST_AsText('01030000000100000005000000000000000000 000000000000000000000000000000000000000000000000 F03F000000000000F03F000000000000F03F000000000000F03 F000000000000000000000000000000000000000000000000'); st_astext POLYGON((0 0, 1,1 1,1 0,0 0)) (1 row) Hàm ST_AsText: chuyển liệu Geometry sang dạng liệu vector - Cài đặt pgRouting: sudo add-apt-repository # đăng ký gói cần cài với hệ điều ppa:georepublic/pgrouting-unstable hành sudo apt-get update # Cập nhật lại CSDL HĐH sudo apt-get install postgresql-9.1-pgrouting # Cài đặt gói pgRouting sudo apt-get install osm2pgrouting # cài đặt osm2pgrouting Bước 01: tạo mở rộng pgRouting myDB=# CREATE EXTENSION pgrouting; CREATE EXTENSION Bước 02: Kiểm tra thành công hay không cách kiểm tra version myDB=# select pgr_version(); # pgr_version (2.0.0-rc1,v2.0.0-beta,50,6a63bc1,develop,1.46.1) (1 row) Trang 33 3.2 Thực nghiệm với liệu đồ OpenStreetMap 3.2.1 Dữ liệu OpenStreetMap - OpenStreetMap (OSM) dự án mã nguồn mở chuyên cung cấp dịch vụ, liệu đồ trực tuyến miễn phí Các thơng tin đồ đường hệ thống thôn tin địa lý OSM cho phép người sử dụng cập nhật, tải liệu theo vùng, thành phố, lãnh thổ, quốc gia Dữ liệu tùy chọn Dữ liệu OSM lưu trữ nhiều định dạng khác như: PBF, XML, OSM-JSON, O5M - Cấu trúc OSM -XML: sử dụng định dạng XML để lưu liệu đồ Đặc tả, lưu trữ cấu trúc đối tượng liệu không gian thơng qua thẻ (tag) Ba cấu trúc file OSM-XML gồm Nodes, Ways Relations File OSM lưu định dạng UTF-8 Mỗi phần tử (element) mô tả đối tượng liệu với thuộc tính Mơ tả phần tử o Nodes: tập node chứa thuộc tính quy địn vị trí Mỗi node quy định thẻ (tag) o Ways: gồm tập node, thuộc tính tuyến đường (way) Mỗi đường thẻ Ví dụ biểu diễn tuyến đường Trang 34 o Relations: chứa tập liên quan (thể node, node với way, way với way) Mỗi liên quan nằm thẻ Ví dụ relation 3.2.2 Thao tác liệu OSM - Công cụ thao tác với OSM-XML: osm2pgrouting thư viện cho phép đẩy liệu OSMXML vào CSDL khơng gian có mở rộng pgRouting - Xử lý liệu OSM PostGres B01: Kiểm tra hợp lệ liệu file XML Xpath, XSD B02 Tạo kiến trúc o Lọc thẻ thẻ theo cấu trúc XML o Tạo lập nodes o Tạo lập tuyến đường từ way relation B03: Đẩy liệu vào bảng tương ứng CSDL - Câu lệnh thực thi: loilequan@loilq:~$ osm2pgrouting -file "vn.osm" -conf "/usr/share/osm2pgrouting/mapconfig.xml" -dbname LV -user admin -passwd 123 Trang 35 3.2.3 Áp dụng thuật toán TSP truy vấn liệu OSM Trình tự thao tác với CSDL OSM: B01: Tải liệu máy từ trang “http://plan.net” B02: Tạo CSDL có mở rộng PostGIS, pgRouting B03: Đẩy liệu OSM vào CSDL vừa tạo B04: Truy vấn liệu dùng hàm pgRouting B4.1: Tạo topology B4.2: Thực thi truy vấn hàm pgRouting Select pgr_(,); 3.3 Kết thực 3.3.1 Xây dựng Dữ liệu Mẫu Trong phần tác giả tạo CSDL mẫu cho phép thực nghiệm tốn TSP (xem hình 3.1) Dữ liệu mẫu dựng mô theo đồ thị trọng số G(V, E) bao gồm 13 node đánh số từ đến 13 Cung đánh trọng số (độ dài đường đi/chi phí) Giá trị cung giá trị dương, có hướng Nếu hai node khơng có đường cung nối chiều từ node i đến node j gán giá trị “-1” Hình 3.1 Bản đồ liệu mẫu Trang 36 Cấu trúc liệu gồm bảng edge_table vertec_table Bảng edge_table: mô tả cung đồ thị tt Trường 10 11 12 13 Id Dir Source Target Cost Reverse_cost to_cost X1 Y1 X2 Y2 Rule The_geom Kiểu Mô tả Integer bigint Integer Integer float float Bigint float Float8 Float8 Float8 Float8 Text Id: thể id của cung Source: node i Target: thể node j Cost: thi phí i j Giá trị đường ngược chiều to_cost: giá trị thể chi phí cung chiều từ i tới j Vị trí bắn đầu cung Điểm kết thúc cung Chiều cung Giá trị Geomtry khôi phục lại trường khác Bảng Vertec_table: thể vector node tương ứng tt Trường Kiểu Mô tả Id Int Id: thể id node X Float Y Float X,Y thể vị trí node a) Tạo CSDL khơng gian Câu lệnh tạo CSDL thực nghiệm với tên TSPTest Create DataBase TSPTest; b) Tạo mở rộng liệu không gian - Tạo mở rộng POSTGIS: Create Extention postgis; Chứa hàm xử lý liệu không gian CSDL - Tạo mở rộng Postgis-topology: Create Extention postgis-topology - Tạo mở rộng với hàm module pgRouting: Create Extention pgrouting; Trang 37 c) Dẩy liệu OSM vào sở liệu Lệnh osm2pgrouting: loilequang@loilq:~$ osm2pgrouting -file "vn.osm" -conf "/usr/share/osm2pgrouting/mapconfig.xml" -dbname LV -user admin -passwd 123 - Chèn liệu mẫu vào CSDL thực nghiệm theo hình 3.1 INSERT INTO edge_table VALUES (1, 'B', 1, 2, 1, 1, 2, 0, 2, 1, NULL, NULL, '010200000002 000000000000000000004000000000000000000000000000000040000000000000F03F'); INSERT INTO edge_table VALUES (2, 'TF', 2, 3, -1, 1, 2, 1, 3, 1, NULL, NULL, '010200000002 0000000000000000000040000000000000F03F0000000000000840000000000000F03F'); INSERT INTO edge_table VALUES (3, 'TF', 3, 4, -1, 1, 3, 1, 4, 1, NULL, NULL, '010200000002 0000000000000000000840000000000000F03F0000000000001040000000000000F03F'); INSERT INTO edge_table VALUES (4, 'B', 2, 7, 1, 1, 2, 1, 2, 2, NULL, NULL, '010200000002 0000000000000000000040000000000000F03F00000000000000400000000000000040'); INSERT INTO edge_table VALUES (5, 'FT', 3, 8, 1, -1, 3, 1, 3, 2, NULL, NULL, '010200000002 0000000000000000000840000000000000F03F00000000000008400000000000000040'); INSERT INTO edge_table VALUES (6, 'B', 5, 6, 1, 1, 0, 2, 1, 2, NULL, NULL, '010200000002 00000000000000000000000000000000000040000000000000F03F0000000000000040'); INSERT INTO edge_table VALUES (7, 'B', 6, 7, 1, 1, 1, 2, 2, 2, NULL, NULL,'010200000002 000000000000000000F03F000000000000004000000000000000400000000000000040'); INSERT INTO edge_table VALUES (8, 'B', 7, 8, 1, 1, 2, 2, 3, 2, NULL, NULL,'010200000002 0000000000000000000040000000000000004000000000000008400000000000000040'); INSERT INTO edge_table VALUES (9, 'B', 8, 9, 1, 1, 3, 2, 4, 2, NULL, NULL,'010200000002 00000000000000000008400000000000 00004000000000000010400000000000000040'); INSERT INTO edge_table VALUES (10, 'B', 7, 10, 1, 1, 2, 2, 2, 3, NULL, NULL,'010200000002 0000000000000000000040000000000000004000000000000000400000000000000840'); INSERT INTO edge_table VALUES (11, 'FT', 8, 11, 1, -1, 3, 2, 3, 3, NULL, NULL,'010200000002 0000000000000000000840000000000000004000000000000008400000000000000840'); INSERT INTO edge_table VALUES (12, 'FT', 10, 11, 1, -1, 2, 3, 3, 3, NULL, NULL,'010200000002 0000000000000000000040000000000000084000000000000008400000000000000840'); INSERT INTO edge_table VALUES (13, 'FT', 11, 12, 1, -1, 3, 3, 4, 3, NULL, NULL,'010200000002 0000000000000000000840000000000000084000000000000010400000000000000840'); INSERT INTO edge_table VALUES (14, 'B', 10, 13, 1, 1, 2, 3, 2, 4, NULL, NULL, '0102000000020 000000000000000000040000000000000084000000000000000400000000000001040'); INSERT INTO edge_table VALUES (15, 'B', 9, 12, 1, 1, 4, 2, 4, 3, NULL, NULL, '0102000000020 000000000000000001040000000000000004000000000000010400000000000000840'); INSERT INTO edge_table VALUES (16, 'B', 4, 9, 1, 1, 4, 1, 4, 2, NULL, NULL,'010200000002 0000000000000000001040000000000000F03F00000000000010400000000000000040'); INSERT INTO vertex_table VALUES (1,2,0), (2,2,1), (3,3,1), (4,4,1), (5,0,2), (6,1,2), (7,2,2),(8,3,2), (9,4,2), (10,2,3), (11,3,3), (12,4,3), (13,2,4); Trang 38 Kết sau tạo dựng liệu mẫu CSDL d) Truy vấn liệu Việc truy vấn liệu CSDL thực chất dùng câu lệnh truy vấn liệu Select ngôn ngữ psql Ở tác giả dùng sql truy vấn tới hàm module pgRouting thực hàm pgr_tsp 3.3.2 Kết liệu mẫu SQL1 SQL2 SQL3 select seq, id1, id2, round(cost:: numeric) as cost from pgr_tsp('select id,x,y from vertex_table',2,3); select seq, id1, id2, round(cost:: numeric) as cost from pgr_tsp('select id,x,y from vertex_table where (id