Tìm hiểu các thuật toán tìm đường đi trong hệ thống thông tin địa lý

43 38 0
Tìm hiểu các thuật toán tìm đường đi trong hệ thống thông tin địa lý

Đ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 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 NG DỤNGTRONG TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN CHÂU ỌC: LỢI Ứ CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI HÀ NỘI -2013 Trang 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 Danh mục bảng TT Tên bảng Bảng 1.1 Một số thuật tố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 Bảng 3.2 Một số hàm routing điển hình Bảng 3.3: Các đối câu lệnh truy vấn SQL Bảng 3.4 Thư viện cài đặt PostGis Danh mục hình vẽ, biểu đồ TT Hình 2.1: Chéo hóa đơn Hình 2.2: Chéo hóa bội Hình 2.3: Kiến trúc hệ thống thơng tin địa lý Hình 2.4 Layer liệu đồ Hình 2.5 Kiến trúc PostGres Hình 2.6 Dữ liệu Raster cách số hóa Hình 3.1 đồ liệu mẫu 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 Tồ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 xin hoàn toà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 toá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 tố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 tố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 toá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 toá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 tốn xếp vào lớp tốn tìm kiếm tối ưu Bài toán ứng dụng nhiều lĩnh vực, gặp tố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 toá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 tốn Nếu vượt q 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 số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 tố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 toá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 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   o start_id: node bắt đầu end_id: node kết thúc 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 geom_table Tolerance geo_cname gid_cname 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: tt Đối edge_table Tolerance Id the_geom: table_ending Kết quả: bảng mô tả tt Đ Id old_id sub_id Source target: the geom: 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 Tra Bước 04 truy vấn liệu: myDB=# select id, name from m - 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 GEOS LIBXML2 JSON-C 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: myDB=# SELECT ST_AsText('01030000000100000005000000000000000000 000000000000000000000000000000000000000000000000 F03F000000000000F03F000000000000F03F000000000000F03 F000000000000000000000000000000000000000000000000'); Hàm ST_AsText: chuyển liệu Geometry sang dạng liệu vector - Cài đặt pgRouting: sudo add-apt-repository ppa:georepublic/pgrouting-unstable sudo apt-get update sudo apt-get install postgresql-9.1-pgrouting sudo apt-get install 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 Id Dir Source Target Cost Reverse_cost to_cost X1 Y1 10 X2 11 Y2 12 Rule 13 The_geom Bảng Vertec_table: thể vector node tương ứng tt Trường Id X Y 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

Ngày đăng: 11/11/2020, 22:24

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

  • Đang cập nhật ...

Tài liệu liên quan